我有一个csv数据文件,包含列'笔记'满意的答案在希伯来语。你知道吗
我想找出最流行的单词和流行的“2词组合”,它们出现的次数,并绘制在条形图中。你知道吗
到目前为止我的代码是:
PYTHONIOENCODING="UTF-8"
df= pd.read_csv('keep.csv', encoding='utf-8' , usecols=['notes'])
words= df.notes.str.split(expand=True).stack().value_counts()
这会产生一个带有计数器的单词列表,但会考虑希伯来语中的所有停止词,不会产生“2单词组合”频率。 我也试过这个代码,但它不是我想要的:
top_N = 30
txt = df.notes.str.lower().str.replace(r'\|', ' ').str.cat(sep=' ')
words = nltk.tokenize.word_tokenize(txt)
word_dist = nltk.FreqDist(words)
rslt = pd.DataFrame(word_dist.most_common(top_N),
columns=['Word', 'Frequency'])
print(rslt)
print('=' * 60)
如何使用nltk来实现这一点?你知道吗
使用^{} :
从所有值中计数bigram的解决方案:
每列的每个拆分值的bigrams解决方案:
如果需要用单独的单词来计算bigram:
最后按^{} 绘制:
除了jezrael发布的内容之外,我还想介绍另一种实现这一点的方法。由于您试图获得单独的以及两个单词的频率,因此还可以利用everygram函数。你知道吗
给定数据帧:
使用
everygrams(word_tokenize(x), 1, 2)
获得一个单词和两个单词的形式,要获得一个、两个、三个单词的组合,可以将2更改为3,依此类推。所以你的情况应该是:此时您应该看到:
您现在可以通过展平列表和值\u计数来获得计数:
最终输出:
现在绘制图表很简单:
输出:
相关问题 更多 >
编程相关推荐