2015-02-05 16 views
6

Có cách nào để lấy danh sách các từ tiếng Anh trong thư viện nltk python không? Tôi đã cố gắng tìm nó nhưng điều duy nhất tôi đã tìm thấy là wordnet từ nltk.corpus. Nhưng based on documentation, nó không có những gì tôi cần (nó tìm từ đồng nghĩa cho một từ).Có một tập hợp các từ tiếng Anh trong nltk không?

Tôi biết cách tự mình tìm danh sách các từ này (điều này answer bao gồm chi tiết), vì vậy tôi quan tâm liệu tôi có thể làm điều này bằng cách chỉ sử dụng thư viện nltk hay không.

Trả lời

5

Vâng, from nltk.corpus import words

Và kiểm tra sử dụng:

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

tham khảo: Phần 4.1 (Wordlist Corpora), chương 2 của Natural Language Processing with Python.

+0

cảm ơn bạn, nhưng bạn có thể vui lòng nơi bạn có thể tìm thấy nó trong tài liệu (trông giống như tôi bằng cách nào đó bị mất nó)? –

+0

@SalvadorDali Đã thêm tham chiếu. – axiom

+0

Rất hữu ích !!! –

6

Khác với các nltk.corpus.words rằng @salvadordali đã nêu bật ,:

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

Do lưu ý rằng nltk.corpus.words là một danh sách các từ mà không cần tần số do đó, nó không hẳn là một corpora của chư thiên.

Gói corpus chứa nhiều tập đoàn khác nhau, một số trong số đó là các công ty tiếng Anh, xem http://www.nltk.org/nltk_data/. Ví dụ. 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'] 

Để có được một danh sách từ từ một corpus văn bản tự nhiên:

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

Lưu ý rằng brown.words() chứa những từ với cả hai trường hợp thấp hơn và trên văn bản như tự nhiên.

Trong hầu hết các trường hợp, một danh sách các từ không phải là rất hữu ích mà không tần số, vì vậy bạn có thể sử dụng 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)] 

Để biết thêm, xem http://www.nltk.org/book/ch01.html về cách truy cập corpora và xử lý chúng trong NLTK

Các vấn đề liên quan