Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据帧python中列的字频计数输出不一致_Python_Pandas_Nlp_Nltk_Text Mining - Fatal编程技术网

数据帧python中列的字频计数输出不一致

数据帧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

因此,我在pandas中有一个简单的数据框,其中一列包含tweet消息。每个单元格或行包含一条tweet消息。我正在尝试进行词频计数,以检测我的数据帧中前10个单词是什么。原因是通过将它们添加到我的stopwords列表中,将它们从我的数据集中删除

在我的数据集上尝试了一些代码片段,但对于频率计数为什么会产生不同的结果感到困惑。下面是代码的比较

代码1

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的。它比仅仅在空格上拆分要先进得多,而且据我估计,它会更好地处理诸如标点符号之类的东西