Вопрос:

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

python nltk wordnet

12260 просмотра

6 ответа

179 Репутация автора

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

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

Автор: Apps Источник Размещён: 08.05.2011 04:26

Ответы (6)


1 плюс

88796 Репутация автора

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

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

Автор: Katriel Размещён: 08.05.2011 04:54

8 плюса

15483 Репутация автора

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

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

Автор: Christopher Pickslay Размещён: 11.05.2011 06:44

2 плюса

355 Репутация автора

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

Автор: YKS Размещён: 23.05.2011 05:37

15 плюса

3048 Репутация автора

В 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
...

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

Чтобы сделать этот 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()))
Автор: Suzana Размещён: 11.09.2012 07:30

1 плюс

29309 Репутация автора

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

Автор: Don Kirkby Размещён: 07.08.2013 06:09

2 плюса

19412 Репутация автора

Проверьте этот сайт на частоту слов: 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/

Автор: live-love Размещён: 20.11.2013 03:04
Вопросы из категории :
32x32