18

Python を使用して WordNet または NLTK を使用して、英語で単語の使用頻度を見つける方法はありますか?

注: 特定の入力ファイル内の単語の頻度カウントは必要ありません。今日の使用状況に基づいて、一般的な単語の頻度カウントが必要です。

4

8 に答える 8

19

WordNet では、すべての Lemma に頻度カウントがあり、メソッドによって返され 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
...

ただし、多くのカウントはゼロであり、ソース ファイルやドキュメントには、このデータの作成に使用されたコーパスに関する情報はありません。Daniel Jurafsky と James H. Martinの著書Speech and Language Processingによると、感覚周波数は、すでに小さくて時代遅れの Brown Corpus のサブセットであるSemCorコーパスから来ています。

したがって、クリストファーが提案したように、アプリケーションに最適なコーパスを選択し、自分でデータを作成するのがおそらく最善です。

この 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()))
于 2012-09-11T19:30:39.587 に答える
11

茶色のコーパスを使ってそれを行うことができますが、それは古くなっています (最終改訂は 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 をファイルにオフにして、後で読み込みを高速化できます。

コーパスは基本的に、1 行に 1 文の文章でいっぱいのファイルであり、他にもたくさんのコーパスがあるので、目的に合ったものを見つけることができるでしょう。より最新のコーパスの他のいくつかのソース: GoogleAmerican National Corpus

また、現代アメリカ英語コーパスから上位 60,000 語とその頻度の現在のリストを取得することもできます。

于 2011-05-11T18:44:57.383 に答える
2

http://wn-similarity.sourceforge.net/にあるWordnet類似性プロジェクトの情報コンテンツセクションをご覧ください。そこには、いくつかの異なるコーパスから計算された、Wordnetの見出語の単語頻度(または、単語頻度から派生した情報コンテンツ)のデータベースがあります。ソースコードはPerlですが、データベースは独立して提供されており、NLTKで簡単に使用できます。

于 2011-05-23T17:37:55.520 に答える
2

コンテキストに大きく依存するため、実際にはこれを行うことはできません。それだけでなく、頻度の低い単語の場合、頻度はサンプルに大きく依存します。

あなたの最善の策は、おそらく、特定のジャンルのテキストの大規模なコーパスを見つけて (たとえば、Project Gutenbergから 100 冊の本をダウンロードするなど)、自分で単語を数えることです。

于 2011-05-08T16:54:10.007 に答える
1

ウィクショナリー プロジェクトには、TV スクリプトとプロジェクト グーテンベルクに基づく頻度リストがいくつかありますが、それらの形式は解析にはあまり適していません。

于 2013-08-07T06:09:48.983 に答える