J'ai un fichier csv avec million + tweets. J'ai désinfecté les données et je veux trouver les expressions de mots 2/3/4 les plus fréquentes qui se produisent à travers le fichier. J'importe le csv sous forme de liste. Il est important que les bigrammes/trigrammes soient générés dans la ligne de liste. je. e. pour une liste: 'Sally est grand' 'Bob est pas'Les ngrams les plus fréquents dans un fichier CSV utilisant nltk
bigrams sera 'Sally est', 'est grand', 'Bob est', 'est pas'
Et pas 'grand Bob' (c.-à-lignes ne doivent pas être concaténées)
Voici le code:
#import necessary packages
#read csv
with open("small_sample.csv", 'r') as f:
reader = csv.reader(f, delimiter=',')
dfl = list(reader)
#import ngrams function
from nltk import ngrams
#store bigrams in string_bigrams
string_bigrams=''
n=2
for line in dfl:
string_bigrams += ngrams(str(line).split(),n)
edit Puisque je ne peux pas utiliser + = avec l'objet générateur et que la conversion des ngrams en chaîne ne donne pas les résultats requis, j'ai utilisé itertools.chain pour ajouter à l'objet générateur.
code mis à jour:
for line in dfl:
string_bigrams
=itertools.chain(string_bigrams,ngrams(str(line).split(),n))
Cependant, la sortie ici a '[' concaténé à lui. i. e. si la liste est enregistrée comme [ 'Sally est grand', 'Bob est pas'] string_bigrams retourne
("['Sally", 'is')
('is', "great']")
("['Bob", 'is')
('is', "not']")
sortie prévue est
('Sally', 'is')
('is', 'great')
('Bob', 'is')
('is', 'not')
Pourquoi le [] en regard?
Il y a une perte de choses confuses/indéfinies dans votre problème. Combien des plus fréquents voulez-vous? prenez-vous seulement des ngrams délimités par des espaces? – erip
@erip # du plus fréquent dépendra des données. je. e. Je pourrais finir par prendre le top 10-20% du total des bigrams en fonction de la distribution de fréquence. si efficacement, j'aurais besoin de tous les ngrams classés par fréquence dans l'ordre décroissant. et oui, en regardant uniquement les ngrams délimités par des espaces – lilipunk
J'espère que votre machine a beaucoup de mémoire pour les tweets> = 1M! Pouvez-vous montrer les deux premières lignes de votre fichier csv? – erip