Подтвердить что ты не робот

Как найти частоту слова в английском с помощью WordNet?

Есть ли способ найти частоту использования слова в английском языке, используя WordNet или NLTK, используя Python?

ПРИМЕЧАНИЕ: я не хочу подсчет частоты слова в данном входном файле. Я хочу, чтобы подсчет частоты слова в целом основывался на использовании в настоящее время.

4b9b3361

Ответ 1

В 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())

Результат:

stack 2
batch 0
deal 1
flock 1
good_deal 13
great_deal 10
hatful 0
heap 2
lot 13
mass 14
mess 0
...

Однако многие счетчики равны нулю, и в исходном файле или в документации нет информации о том, какой корпус использовался для создания этих данных. Согласно книге "Обработка речи и языка" Даниэля Джурафски и Джеймса Х. Мартина, чувственные частоты поступают из корпуса SemCor, который является подмножеством и без того небольшого и устаревшего корпуса Brown.

Поэтому, вероятно, лучше всего выбрать корпус, который лучше всего подходит для вашего приложения, и создать данные самостоятельно, как предложил Кристофер.

Чтобы сделать этот Python3.x совместимым, просто сделайте:

Пример кода:

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

Ответ 2

Вы можете сделать это, используя коричневый корпус, хотя он устарел (последний пересмотрен в 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")

Затем вы можете cpickle отключить FreqDist в файл для более быстрой загрузки позже.

Корпус - это всего лишь файл, полный предложений, по одному на строку, и есть много других корпусов, поэтому вы, вероятно, можете найти тот, который соответствует вашей цели. Несколько других источников более современных корпусов: Google, Американский национальный корпус.

Вы также можете получить текущий список лучших 60 000 слов и их частоты от Корпус современного американского английского

Ответ 3

Взгляните на раздел информационного содержимого проекта сходства Wordnet в http://wn-similarity.sourceforge.net/. Там вы найдете базы данных о частотах слов (или, скорее, информационный контент, полученный из частоты слов) слов Wordnet, рассчитанных из нескольких разных корпусов. Исходные коды находятся в Perl, но базы данных предоставляются независимо и могут быть легко использованы с NLTK.

Ответ 4

Проверьте этот сайт на частотах слов: http://corpus.byu.edu/coca/

Кто-то собрал список слов, взятых из opensubtitles.org(сценарии фильмов). Там бесплатный простой текстовый файл, отформатированный так, как это доступно для загрузки. На разных языках.

you 6281002
i 5685306
the 4768490
to 3453407
a 3048287
it 2879962

http://invokeit.wordpress.com/frequency-word-lists/

Ответ 5

Вы не можете этого сделать, потому что это зависит от контекста. Мало того, что для менее частых слов частота будет дико зависеть от образца.

Лучше всего найти большой корпус текста данного жанра (например, скачать сто книг из Project Gutenberg) и подсчитать слова сами.

Ответ 6

В проекте Wiktionary есть несколько частотных списков на основе ТВ-скриптов и Project Gutenberg, но их формат не особенно хорош для синтаксического анализа.