Сортировать слова по их использованию - PullRequest
4 голосов
/ 14 октября 2011

У меня есть список английских слов (около 10000), и я хотел бы отсортировать их по их использованию в литературе, газетах, блогах и т. Д. Могу ли я отсортировать их на Python или другом языке? Я слышал о NLTK, которая является ближайшей из известных мне библиотек, которая может помочь. Или это задача для другого инструмента?

спасибо

Ответы [ 3 ]

9 голосов
/ 14 октября 2011

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

Если вы хотите использовать другой корпус или получить больше информации, вам следует взглянуть на глава 2 книги НЛТК .

0 голосов
/ 14 октября 2011

Я не очень разбираюсь в обработке естественного языка, но я думаю, что Python - это идеальный язык, который вы можете использовать для этой цели.

Поиском в Google по запросу "Естественный язык Python" найдено:

http://www.nltk.org/

Поиск StackOverflow нашел этот ответ:

Python или Java для обработки текста (анализ текста, поиск информации, обработка на естественном языке)

Что, в свою очередь, связано с Pattern:

http://www.clips.ua.ac.be/pages/pattern

Возможно, вы захотите взглянуть на Pattern, который выглядит многообещающим.

Удачи ивеселиться!

0 голосов
/ 14 октября 2011

Вы можете использовать collections.Counter.Код так же просто, как:

l = get_iterable_or_list_of_words() # That is up to you
c = collections.Counter(l)
print(c.most_common())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...