Supposons que vous ayez le fichier example.csv
comme ce qui suit:
label;sentence
"class1";"This is an example sentence."
"class1";"This is another example sentence."
"class2";"The third one is random."
Lire le fichier à l'aide DictReader
au lieu de reader
pour qu'il vous donne à chaque ligne comme un dictionnaire
import csv
reader = csv.DictReader(open('example.csv', 'r'), delimiter= ";",quotechar = '"')
lines = list(reader) # this is a list each is dictionary
sentences = [l['sentence'] for l in lines] # get only
documents à long terme utilisant scikit-learn
from sklearn.feature_extraction.text import CountVectorizer
count_vect = CountVectorizer(lowercase=True)
X_count = count_vect.fit_transform(sentences)
Le dictionnaire (mot au dictionnaire d'index) est accessible via count_vect.vocabulary_
et X_count
est votre matrice document terme,
X_count.toarray()
# [[1 0 1 1 0 0 1 0 0 1]
# [0 1 1 1 0 0 1 0 0 1]
# [0 0 0 1 1 1 0 1 1 0]]
matrice document terme en utilisant NLTK c'est un peu la même chose que scikit -apprendre mais vous pouvez construire vous-même le dictionnaire et transformer des phrases pour documenter terme matrice
from nltk import word_tokenize
from itertools import chain, groupby
import scipy.sparse as sp
word_tokenize_matrix = [word_tokenize(sent) for sent in sentences]
vocab = set(chain.from_iterable(word_tokenize_matrix))
vocabulary = dict(zip(vocab, range(len(vocab)))) # dictionary of vocabulary to index
words_index = []
for r, words in enumerate(word_tokenize_matrix):
for word in sorted(words):
words_index.append((r, vocabulary.get(word), 1))
Après avoir obtenu ligne/colonne/valeur de chaque condamn es, vous pouvez appliquer groupby et compter les mots qui apparaissent plus d'une fois.
rows, cols, data = [], [], []
for gid, g in groupby(words_index, lambda x: (x[0], x[1])):
rows.append(gid[0])
cols.append(gid[1])
data.append(len(list(g)))
X_count = sp.csr_matrix((data, (rows, cols)))
et ici, vous pouvez créer votre propre matrice de terme de document!
Nous vous remercions de votre aide! J'apprécie vraiment cela. – ZverArt
Votre bienvenue. Ce code est très brut. S'il vous plaît laissez-moi savoir si vous avez d'autres questions! – titipata