Existe-t-il un moyen d'obtenir la liste des mots anglais dans la bibliothèque python nltk? J'ai essayé de la trouver, mais la seule chose que j'ai trouvée est wordnet
de nltk.corpus
. Mais basé sur la documentation, il n'a pas ce dont j'ai besoin (il trouve des synonymes pour un mot).
Je sais comment trouver la liste de ces mots par moi-même (ce réponse le couvre en détail), donc je suis intéressé si je peux le faire en utilisant uniquement la bibliothèque nltk.
Oui, from nltk.corpus import words
Et vérifiez en utilisant:
>>> "fine" in words.words()
True
Référence: Section 4.1 (Corpus liste de mots), chapitre 2 de Traitement du langage naturel avec Python .
Autre que le nltk.corpus.words
Que @salvadordali a mis en évidence:
>>> 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']
Notez que nltk.corpus.words
Est une liste de mots sans fréquences, donc ce n'est pas exactement un corpus de texte naturel.
Le package corpus
qui contient divers corpus, dont certains sont des corpus anglais, voir http://www.nltk.org/nltk_data/ . Par exemple. 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']
Pour obtenir une liste de mots à partir d'un corpus de texte naturel:
>>> wordlist = set(brown.words())
>>> print len(wordlist)
56057
>>> wordlist_lowercased = set(i.lower() for i in brown.words())
>>> print len(wordlist_lowercased)
49815
Notez que la brown.words()
contient des mots avec des majuscules et des minuscules comme du texte naturel.
Dans la plupart des cas, une liste de mots n'est pas très utile sans fréquences, vous pouvez donc utiliser le 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)]
Pour plus d'informations, voir http://www.nltk.org/book/ch01.html sur la façon d'accéder aux corpus et de les traiter en NLTK