Comprendre l'argument " Ngram range` dans un CountVectorizer dans sklearn
je suis un peu confus sur la façon d'utiliser les ngrams dans la bibliothèque scikit-learn en Python, en particulier, comment le ngram_range
l'argument fonctionne dans un CountVectorizer.
exécuter ce code:
from sklearn.feature_extraction.text import CountVectorizer
vocabulary = ['hi ', 'bye', 'run away']
cv = CountVectorizer(vocabulary=vocabulary, ngram_range=(1, 2))
print cv.vocabulary_
me donne:
{'hi ': 0, 'bye': 1, 'run away': 2}
où j'étais sous l'impression (évidemment erronée) que je recevrais des unigrammes et des bigrammes, comme ceci:
{'hi ': 0, 'bye': 1, 'run away': 2, 'run': 3, 'away': 4}
je travaille avec la documentation ici: http://scikit-learn.org/stable/modules/feature_extraction.html
<!-Il est clair Qu'il y a quelque chose de terriblement erroné dans ma compréhension de la façon d'utiliser les ngrams. Peut-être que l'argument est sans effet ou j'ai un certain problème conceptuel avec ce qu'est un bigramme réel! Je suis perplexe. Si quelqu'un a un conseil à me donner, je lui en serais reconnaissant.mise à jour:
J'ai réalisé la folie de mes moyens. J'étais sous l'impression que l' ngram_range
affecterait le vocabulaire, pas le corpus.
1 réponses
vocabulary
signifie explicitement qu'aucun vocabulaire n'est appris à partir des données. Si vous n'en avez pas, vous obtenez:
>>> v = CountVectorizer(ngram_range=(1, 2))
>>> pprint(v.fit(["an apple a day keeps the doctor away"]).vocabulary_)
{u'an': 0,
u'an apple': 1,
u'apple': 2,
u'apple day': 3,
u'away': 4,
u'day': 5,
u'day keeps': 6,
u'doctor': 7,
u'doctor away': 8,
u'keeps': 9,
u'keeps the': 10,
u'the': 11,
u'the doctor': 12}
un vocabulaire explicite restreint les termes qui seront extraits du texte; le vocabulaire n'est pas modifié:
>>> v = CountVectorizer(ngram_range=(1, 2), vocabulary={"keeps", "keeps the"})
>>> v.fit_transform(["an apple a day keeps the doctor away"]).toarray()
array([[1, 1]]) # unigram and bigram found
(notez que le filtrage des mots d'arrêt est appliqué avant l'extraction de n-gram, donc "apple day"
.)