Как отфильтровать по частоте и добавить в код биграммы? - PullRequest
0 голосов
/ 15 октября 2018

Этот вывод дает гистограмму со словом на оси х и его частотой на оси у.Однако я хочу добавить два улучшения: 1) показывать только значения> 2 по частоте 2) включать биграммы

import pandas as pd
df = pd.DataFrame(['my big dog', 'my lazy cat'])
df
#     0
#0   my big dog
#1  my lazy cat

value_list = [row[0] for row in df.itertuples(index=False, name=None)]
value_list
#['my big dog', 'my lazy cat']

from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer()
x_train = cv.fit_transform(value_list)

x_train.toarray()

x_train_sum = x_train.sum(axis=0)
x_train_sum

result = []
for word, col in cv.vocabulary_.items():
 result.append((word, x_train_sum[0,col]))

word = []
frequency = []

for i in range(len(result)):
 word.append(result[i][0])
 frequency.append(result[i][1])

indices = np.arrange(len(results))
plt.bar(indices, frequency, color 'r')
plt.xticks(indices, word, rotation = 'vertical')

plt.tight_layout()
plt.show()

1 Ответ

0 голосов
/ 15 октября 2018

Я не уверен, что вы подразумеваете под «включением биграмм», но ответ на первую часть вашего вопроса здесь:

indices = [i for i in range(len(frequency)) if frequency[i] >= 2]
frequency = [frequency[i] for i in indices]
word = [word[i] for i in indices]

Добавьте эти 3 строки перед созданием изображения, которое будет фильтровать по частоте большечем 2.

...