在Python中查找词干后的词频

2024-09-30 10:38:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在对一个充满句子的文本文件执行数据清理任务。在完成这些句子的词干后,我想得到词干列表中单词的频率。然而,我遇到了一个问题,当打印词干列表时,我会为每个句子获取一个列表,如下所示:

[u'anyon', u'think', u'forgotten', u'day', u'parti', u'friend', u'friend', u'paymast', u'us', u'longer', u'memori']

[u'valu', u'friend', u'bought', u'properti', u'actual', u'relev', u'repres', u'actual', u'valu', u'properti']

[u'monster', u'wreck', u'reef', u'cargo', u'vessel', u'week', u'passeng', u'ship', u'least', u'24', u'hour', u'upload', u'com']

我想获得所有单词的频率,但我仅通过使用以下代码获得每个句子的频率:

^{pr2}$

这将产生以下输出: 朋友;2 桅杆;1 更长;1 备忘录;1 第一部分 美国;1 天;1 安永;1 遗忘;1 思考;1 实际;2 财产;2 价值;2 朋友;1 抑制;1 第1条 购买;1 周;1 货物;1 怪物;1 小时;1 沉船;1 上传;1 乘客;1 最少;1 暗礁;1 24;1 容器;1 船舶;1 通讯;1 在;1 面积;1 领土;1 自定义;1 水;1 3、 1

因为“朋友”这个词是在两个不同的句子中出现的,所以被计算了两次。我怎样才能使它计数为朋友一次并显示朋友;在这种情况下是3?在


Tags: 数据friend列表朋友单词句子频率文本文件
3条回答

您可以先使用^{}flatten your 2D array

fdist = nltk.FreqDist(chain.from_iterable(stem_list)):
    for word, frequency in fdist.most_common(50):
        print(u'{};{}'.format(word, frequency))

您只需将所有内容串联在一个列表中:

stem_list = [inner for outer in stem_list for inner in outer]

以同样的方式处理。在

否则,您可以保留相同的代码,但不是打印,而是创建dict并用您获得的值填充它。每次你得到一个新词,你创建一个键,然后你添加值。在

^{pr2}$

我认为最简单的方法是在将数组传递给函数之前组合数组。在

allwords = [inner for outer in stem_list for inner in outer]

fdist = nltk.FreqDist(allwords)
    for word, frequency in fdist.most_common(50):
        print(y'{};{}'.format(word, frequency))

或更短:

^{pr2}$

我认为你的意见是:

stem_list = [[u'anyon', u'think', u'forgotten', u'day', u'parti', u'friend', u'friend', u'paymast', u'us', u'longer', u'memori'],

            [u'valu', u'friend', u'bought', u'properti', u'actual', u'relev', u'repres', u'actual', u'valu', u'properti'],

            [u'monster', u'wreck', u'reef', u'cargo', u'vessel', u'week', u'passeng', u'ship', u'least', u'24', u'hour', u'upload', u'com'],

            [.....], etc for the other sentences ]

所以你有两个数组-第一个是句子,第二个是sentenc中的单词。在allwords=[inner for outer in stem_list for inner in outer]的情况下,你可以遍历句子并将它们组合成一个单词数组。在

相关问题 更多 >

    热门问题