web-dev-qa-db-fra.com

Existe-t-il un corpus de mots anglais dans nltk?

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.

12
Salvador Dali

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 .

15
axiom

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

12
alvas