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

问题描述 投票:-3回答:1

一个月前我问过这个问题。然而,没有人给出答案甚至评论。我正在重复这个问题,以便有人会帮助这一次。

我有一个大的Unicode Monolingual语料库,在一个大小为1.7GB的txt文件中包含超过1亿个单词。现在我需要找到该语料库中每个单词的单词频率,这样我才能在语料库中找到20个最常用的单词和20个最不常用的单词。例如,(这个例子用瑞典语代替孟加拉语以便于理解)

语料库:

我有一个大房子我也有一个大场。

字频率:

我3

有2

一个2

大2

房子1

领域1

desicion:

最常见的:

我3

有2

最不常见的:

房子1

领域1

但是,当我尝试使用mysql数据库存储语料库中的新单词并每次增加其频率时。所以最后我可以用它们的频率得到这些词。然而,即使完成10%的语料库也需要2天时间。我已经尝试了另一种方法,通过保留一个txt文件来记录每个单词的频率。但是由于系统不能用于unicode字,它会失败。请建议我一个简单快捷的方法来计算(可以在PHP或PYTHON)。

php python counting word corpus
1个回答
0
投票

在python中,最简单的方法是使用collections.Counter创建一个计数器对象。我用一个(非常有限的)200,000字的语料库来计算它

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亿字只是一项非常大的任务,我希望会遇到记忆和时间问题。我希望你一次运行部分数据块会有更好的运气。

您还可以研究多处理

© www.soinside.com 2019 - 2024. All rights reserved.