Частота подсчета ключевых слов со склеарном только с нулевым счетом - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь запустить код Python, который подсчитывает частоту определенных предопределенных ключевых слов в тексте.Тем не менее, я получаю нули только при запуске скрипта, размещенного ниже (, т.е. скрипт не учитывает вхождение ключевого слова в целевой текст ).

Кажется, что ошибказастрял в строке "X = vectorizer.fit_transform (text)" , поскольку он всегда возвращает пустую переменную X.

Что я пытаюсь получить в результате в этомВ качестве краткого примера можно привести таблицу, в которой перечислены отдельные вкусы мороженого в отдельном столбце, после чего следует сумма отдельных подсчетов.

import pandas as pd
from collections import Counter
from sklearn.feature_extraction.text import CountVectorizer

icecream = ['Vanilla', 'Strawberry', 'Chocolate', 'Peach']
vectorizer = CountVectorizer(vocabulary=icecream, encoding='utf8', lowercase=True, analyzer='word', decode_error='ignore', ngram_range=(1, 1))
dq = pd.DataFrame(columns=icecream)

vendor = 'Franks Store'
text = ['We offer Vanilla with Hazelnut, Vanilla with Coconut, Chocolate and Strawberry']
X = vectorizer.fit_transform(text)
vocab = vectorizer.get_feature_names()
counts = X.sum(axis=0).A1
freq_distribution = Counter(dict(zip(vocab, counts)))
allwords = dict(freq_distribution)
totalnum = sum(allwords.values())
allwords.update({'totalnum': totalnum})

dy = pd.DataFrame.from_dict(allwords, orient='index')
dy.columns = [vendor]
dy = dy.transpose()
dq = dy.append(dq, sort=False)

print(dq)

Если у вас есть представление о том, что может быть не так с этим кодом,Я был бы очень рад, если бы вы поделились этим со мной.Спасибо!

1 Ответ

0 голосов
/ 17 декабря 2018

Поскольку вы используете lowercase=True в своих параметрах, все найденные слова будут в нижнем регистре.Но ваш словарный запас такой:

icecream = ['Vanilla', 'Strawberry', 'Chocolate', 'Peach']

Термины здесь не будут совпадать с их строчными аналогами, поэтому все равно 0. Вы также должны изменить их:

icecream = ['vanilla', 'strawberry', 'chocolate', 'peach']

Вывод после этого:

                vanilla    strawberry    chocolate    peach    totalnum
Franks Store       2            1            1          0        4.0

Теперь посмотрим, что vanilla имеет счет 2, потому что он появляется в тексте два раза.Если вы хотите получить только настоящее или отсутствие определенного аромата, вы можете использовать параметр binary=True в CountVectorizer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...