2015-12-05 2 views
0

Я хочу извлечь биграмм из одного массива, взять все биграмы с частотой больше 100, а затем забить второй массив, используя уменьшенный словарь.Vocabulary option with bigrams для sklearn CountVectorizor возвращает массив нулей

Кажется, что вариант словаря должен дать мне то, что мне нужно, но он, похоже, не работает. Даже подача выхода одного непосредственно другому, приводит к (нулевой) форме нулей.

from sklearn.feature_extraction.text import CountVectorizer 

docs = ['run fast into a bush','run fast into a tree','run slow','run fast'] 

# Collect bigrams 
vectorizer = CountVectorizer(ngram_range = (2,2)) 
vectorizer.fit(docs) 
vocab = vectorizer.vocabulary_ 

# Score the exact same data 
vectorizer = CountVectorizer(vocabulary=vocab) 
output = vectorizer.transform(docs) 

# Demonstrate that the array is all zeros 
print "Length of vocab", len(vocab) 
print output.A 



Length of vocab 5 
[[0 0 0 0 0] 
[0 0 0 0 0] 
[0 0 0 0 0] 
[0 0 0 0 0]] 

ответ

0

Только что поймал. Вам нужно указать ngram_range во втором случае (он не автоматически интерпретирует униграммы или биграмы.)

vectorizer = CountVectorizer(vocabulary=vocab ,ngram_range = (2,2)) 
Смежные вопросы