数据帧python中列的字频计数输出不一致
因此,我在pandas中有一个简单的数据框,其中一列包含tweet消息。每个单元格或行包含一条tweet消息。我正在尝试进行词频计数,以检测我的数据帧中前10个单词是什么。原因是通过将它们添加到我的stopwords列表中,将它们从我的数据集中删除 在我的数据集上尝试了一些代码片段,但对于频率计数为什么会产生不同的结果感到困惑。下面是代码的比较 代码1数据帧python中列的字频计数输出不一致,python,pandas,nlp,nltk,text-mining,Python,Pandas,Nlp,Nltk,Text Mining,因此,我在pandas中有一个简单的数据框,其中一列包含tweet消息。每个单元格或行包含一条tweet消息。我正在尝试进行词频计数,以检测我的数据帧中前10个单词是什么。原因是通过将它们添加到我的stopwords列表中,将它们从我的数据集中删除 在我的数据集上尝试了一些代码片段,但对于频率计数为什么会产生不同的结果感到困惑。下面是代码的比较 代码1 top_N = 10 a = train_data['tweet'].str.cat(sep='') words = nltk.tokenize
top_N = 10
a = train_data['tweet'].str.cat(sep='')
words = nltk.tokenize.word_tokenize(a)
word_dist = nltk.FreqDist(words)
代码2
word_dist = pd.Series(' '.join(train_data['tweet']).lower().split()).value_counts()[:10]
在两种代码中,前10个最频繁出现的单词是相同的,但单词分布/频率的值或计数略有不同,即代码1对代码2中相同单词列表的计数略低。他们都在分析同一个数据集。差别大约是100个单词。我看到的唯一区别是代码1标记了单词,而代码2拆分了单词,但它们本质上是相同的,所以我在这里缺少什么?我意识到代码1生成nltk.probability.FreqDist,而代码2生成nltk.core.series.series。有人能帮我把这个分解一下,解释一下区别吗 显然
.word\u tokenize()
和.lower().split()
不会产生完全相同的结果。我可以从文档中收集到。word\u tokenize()
实际使用的是基于regex的。它比仅仅在空格上拆分要先进得多,而且据我估计,它会更好地处理诸如标点符号之类的东西