如何使用WordNet查找英语单词的频率计数?

App*_*pps 14 python nltk wordnet

有没有办法使用Python使用WordNet或NLTK查找英语单词的使用频率?

注意:我不想要给定输入文件中单词的频率计数.我想根据当今时间的用法来计算一个单词的频率计数.

Suz*_*ana 15

在WordNet中,每个引理都有一个由方法返回的频率计数 lemma.count(),并存储在文件中nltk_data/corpora/wordnet/cntlist.rev.

代码示例:

from nltk.corpus import wordnet
syns = wordnet.synsets('stack')
for s in syns:
    for l in s.lemmas():
        print l.name + " " + str(l.count())
Run Code Online (Sandbox Code Playgroud)

结果:

stack 2
batch 0
deal 1
flock 1
good_deal 13
great_deal 10
hatful 0
heap 2
lot 13
mass 14
mess 0
...
Run Code Online (Sandbox Code Playgroud)

但是,许多计数为零,源文件或文档中没有信息用于创建此数据的语料库.因此,最好选择最适合您的应用程序的语料库,并按照Christopher的建议自行创建数据.

  • 计数是通过感知标记文本引起的,这些文本生成起来很昂贵.WordNet中的许多感官都非常独特(和变化无常),这意味着用随机句子找到它们的例子是不太可能的.外卖消息:标记数据很难找到,同义词只计算有感觉标记的单词实例.如果你不关心感官,请使用原始语料库计数(而不是wordnet) (3认同)

Chr*_*lay 8

你可以使用棕色语料库来做它,虽然它已经过时了(1979年最后一次修订),所以它缺少很多当前的单词.

import nltk
from nltk.corpus import brown
from nltk.probability import *

words = FreqDist()

for sentence in brown.sents():
    for word in sentence:
        words.inc(word.lower())

print words["and"]
print words.freq("and")
Run Code Online (Sandbox Code Playgroud)

然后cpickle,您可以将FreqDist关闭到文件,以便以后加快加载速度.

语料库基本上只是一个充满句子的文件,每行一个,还有很多其他语料库,所以你可能找到一个符合你目的的语料库.更多当前语料库的其他几个来源:谷歌,美国国家语料库.

您还可以从当代美国英语语料库中获得最新的60,000个单词及其频率的最新列表


Kat*_*iel 2

你实际上不能这样做,因为它很大程度上取决于上下文。不仅如此,对于频率较低的单词,频率将很大程度上取决于样本。

您最好的选择可能是找到给定类型的大量文本(例如从古腾堡计划下载一百本书)并自己计算单词数。

  • 但要小心的是,古腾堡计划只有文学书籍。如果您对更口语化的英语感兴趣,那么您可能需要不同的来源,例如在线博客文章/评论线程。另外,请善待任何您可能决定删除内容的网站:) (3认同)