2015-02-05 12 views
6

C'è un modo per ottenere l'elenco delle parole inglesi nella libreria python nltk? Ho provato a trovarlo ma l'unica cosa che ho trovato è wordnet da nltk.corpus. Ma based on documentation, non ha ciò di cui ho bisogno (trova sinonimi per una parola).C'è un corpora di parole inglesi in nltk?

So come trovare l'elenco di queste parole da solo (questo answer lo copre nei dettagli), quindi sono interessato se posso farlo utilizzando solo la libreria nltk.

risposta

5

Sì, from nltk.corpus import words

e visualizzate utilizzando:

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

Riferimento: Sezione 4.1 (Wordlist Corpora), capitolo 2 del Natural Language Processing with Python.

+0

grazie, ma puoi per favore dove lo hai trovato nella documentazione (sembra che in qualche modo mi sia sfuggito)? –

+0

@SalvadorDali Hanno aggiunto il riferimento. – axiom

+0

È utile !!! –

6

Altro che il nltk.corpus.words che @salvadordali ha evidenziato ,:

>>> 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'] 

notano che nltk.corpus.words è una lista di parole, senza frequenze quindi non è esattamente un corpus di testi naturale.

Il pacchetto corpus che contiene vari corpora, alcuni dei quali sono corpora inglesi, vedere http://www.nltk.org/nltk_data/. Per esempio. 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'] 

Per ottenere un elenco di parole da un corpus di testo naturale:

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

Si noti che il brown.words() contiene parole con entrambi i casi inferiori e superiori, come il testo naturale.

Nella maggior parte dei casi, una lista di parole non è molto utile senza le frequenze, in modo da poter utilizzare il 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)] 

Per di più, vedi http://www.nltk.org/book/ch01.html su come accedere corpora ed elaborarli in NLTK

Problemi correlati