如何从大型语料库中找到每个单词的单词频率



我已经在一个月前问了这个问题。但是,没有人给出答案,甚至没有评论。我正在重复这个问题,以便有人为此提供帮助。

我有一个大的单座单语语料库在1.7GB的TXT文件中组成了1亿个单词。现在,我需要在该语料库中找到每个单词的单词频率,以便在语料库中找到20个最常见的单词和20个最不常见的单词。例如(该示例是在瑞典而不是孟加拉语给出的),以便于理解)

语料库:

jag har ett stort husocksåjag har ett stortfältjag。

单词频率:

jag 3

har 2

ett 2

Stort 2

hus 1

fält1

desicion:

最常见的:

jag 3

har 2

最少频繁:

hus 1

fält1

,但是,我尝试使用MySQL数据库来存储语料库中的新单词并每次将其freqeeuncy增加一个。最后,我可以用它们的频率得到单词。但是,甚至完成了10%的语料库,花了2天的时间。我通过保留TXT文件来保留有关每个单词频率的记录,尝试了另一种方法。但是,由于系统对Unicode单词不起作用而失败。请建议我一种简单快捷的方法来计算此事(可以是PHP或Python)。

在python中,最简单的方法是使用collections.counter来创建一个计数器对象。我使用(非常有限的)200,000 Word copus

计时了
from collections import Counter
x='jag har ett stort hus också jag har ett stort fält jag cat rat bat cat bar baz cat jag '
x=x*10000
%timeit c=Counter(x.split())
49.4 ms ± 7.51 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
c.most_common(5)
[('jag', 40000),
 ('cat', 30000),
 ('har', 20000),
 ('ett', 20000),
 ('stort', 20000)]

说,>> 1亿个单词将是一项非常大的任务,我希望遇到记忆和时间问题。我希望您一次会在部分数据的一部分中运行更好的运气。

您也可以研究多处理

最新更新