web-dev-qa-db-ja.com

nltkに英語のコーパスのコーパスはありますか?

python nltkライブラリで英語の単語のリストを取得する方法はありますか?私はそれを見つけようとしましたが、私が見つけた唯一のものはnltk.corpusからのwordnetです。 。しかし ドキュメントに基づいて 必要なものがありません(Wordの同義語が見つかります)。

私は自分でこの単語のリストを見つける方法を知っているので(this answer で詳しく説明しています)、nltkライブラリのみを使用してこれを実行できるかどうかに興味があります。

12
Salvador Dali

はい、 from nltk.corpus import words

そして、使用して確認してください:

>>> "fine" in words.words()
True

参照:セクション4.1(Wordlist Corpora)、第2章 Pythonによる自然言語処理

15
axiom

@salvadordaliが強調表示した_nltk.corpus.words_以外は、次のとおりです。

_>>> from nltk.corpus import words
>>> print words.readme()
Wordlists

en: English, http://en.wikipedia.org/wiki/Words_(Unix)
en-basic: 850 English words: C.K. Ogden in The ABC of Basic English (1932)
>>> print words.words()[:10]
[u'A', u'a', u'aa', u'aal', u'aalii', u'aam', u'Aani', u'aardvark', u'aardwolf', u'Aaron']
_

_nltk.corpus.words_は頻度のない単語のリストなので、自然なテキストのコーパスではないことに注意してください。

さまざまなコーパスを含むcorpusパッケージ。その一部は英語のコーパスです。 http://www.nltk.org/nltk_data/ を参照してください。例えば。 _nltk.corpus.brown_:

_>>> from nltk.corpus import brown
>>> brown.words()[:10]
[u'The', u'Fulton', u'County', u'Grand', u'Jury', u'said', u'Friday', u'an', u'investigation', u'of']
_

自然なテキストコーパスから単語リストを取得するには:

_>>> wordlist = set(brown.words())
>>> print len(wordlist)
56057
>>> wordlist_lowercased = set(i.lower() for i in brown.words())
>>> print len(wordlist_lowercased)
49815
_

brown.words()には、自然テキストのように大文字と小文字の両方が含まれていることに注意してください。

ほとんどの場合、単語のリストは頻度がないとあまり役に立ちません。そのため、FreqDistを使用できます。

_>>> from nltk import FreqDist
>>> from nltk.corpus import brown
>>> frequency_list = FreqDist(i.lower() for i in brown.words())
>>> frequency_list.most_common()[:10]
[(u'the', 69971), (u',', 58334), (u'.', 49346), (u'of', 36412), (u'and', 28853), (u'to', 26158), (u'a', 23195), (u'in', 21337), (u'that', 10594), (u'is', 10109)]
_

詳細については、コーパスにアクセスしてNLTKで処理する方法について http://www.nltk.org/book/ch01.html を参照してください。

12
alvas