我有一个英文单词列表(大约10000),我想根据它们的用法对它们进行排序,因为它们出现在文学,报纸,博客等中。我可以用Python或其他语言对它们进行排序吗?我听说NLTK
这是我认识最近的图书馆,可以提供帮助。或者这是其他工具的任务吗?
谢谢
答案 0 :(得分:9)
Python和NLTK是对单词列表进行排序的完美工具,因为NLTK附带了一些英语语料库,您可以从中提取频率信息。
以下代码将以棕色语料库中的单词频率顺序打印给定的wordlist
:
import nltk
from nltk.corpus import brown
wordlist = ["corpus","house","the","Peter","asdf"]
# collect frequency information from brown corpus, might take a few seconds
freqs = nltk.FreqDist([w.lower() for w in brown.words()])
# sort wordlist by word frequency
wordlist_sorted = sorted(wordlist, key=lambda x: freqs[x.lower()], reverse=True)
# print the sorted list
for w in wordlist_sorted:
print w
输出:
>>>
the
house
Peter
corpus
asdf
如果您想使用其他语料库或获取更多信息,请查看chapter 2 of the nltk book。
答案 1 :(得分:0)
您可以使用collections.Counter
。然后代码就像这样简单:
l = get_iterable_or_list_of_words() # That is up to you
c = collections.Counter(l)
print(c.most_common())
答案 2 :(得分:0)
我对自然语言处理知之甚少,但我认为Python是您用于此目的的理想语言。
Google搜索“Python自然语言”:
搜索StackOverflow找到了这个答案:
Python or Java for text processing (text mining, information retrieval, natural language processing)
又与Pattern相关联:
http://www.clips.ua.ac.be/pages/pattern
你可能想看看Pattern,这看起来很有希望。
祝你好运,玩得开心!