如何获得各种语言中最常用单词的列表?

时间:2010-09-04 06:30:25

标签: search nlp

Stack Overflow通过获取当前问题的标题并根据Google删除10,000个最常见的英语单词来实现其“相关问题”功能。然后将剩余的单词作为全文搜索提交以查找相关问题。

如何获得最常见英语单词的列表?或者其他语言中最常见的单词?这是我可以从Google网站上下载的吗?

1 个答案:

答案 0 :(得分:4)

word frequency list就是你想要的。您也可以自己创建或自定义一个在特定域中使用,这是熟悉一些好库的好方法。从this question中讨论的一些文本开始,然后尝试这个背后信封脚本的一些变体:

from nltk.stem.porter import PorterStemmer
import os
import string
from collections import defaultdict

ps = PorterStemmer()
word_count = defaultdict(int)

source_directory = '/some/dir/full/of/text'

for root, dirs, files in os.walk(source_directory):
    for item in files:
        current_text = os.path.join(root, item)
        words = open(current_text, 'r').read().split()
        for word in words:
            entry = ps.stem_word(word.strip(string.punctuation).lower())
            word_count[entry] += 1

results = [[word_count[i], i] for i in word_count]

print sorted(results)

这下载了几本书,下面是最常用的词:

[2955, 'that'], [4201, 'in'], [4658, 'to'], [4689, 'a'], [6441, 'and'], [6705, 'of'], [14508, 'the']]

查看从您的查询中过滤掉最常见的x或z数字时会发生什么情况,或者将它们完全从文本搜索索引中删除。如果你包含真实世界的数据,也可能得到一些有趣的结果 - 例如“社区”“维基”不太可能是通用列表上的常用词,但是在SO上显然不是这种情况,你可能想要排除它们。