2013-07-18 75 views
6

Tôi đang thực hiện điều này wonderful tutorial.Tôi làm cách nào để sử dụng các chức năng của sách (ví dụ: concoordance) trong NLTK?

Tôi đã tải về một bộ sưu tập được gọi là book:

>>> import nltk 
>>> nltk.download() 

và văn bản nhập khẩu:

>>> from nltk.book import * 
*** Introductory Examples for the NLTK Book *** 
Loading text1, ..., text9 and sent1, ..., sent9 
Type the name of the text or sentence to view it. 
Type: 'texts()' or 'sents()' to list the materials. 
text1: Moby Dick by Herman Melville 1851 
text2: Sense and Sensibility by Jane Austen 1811 

Sau đó tôi có thể chạy lệnh bằng các văn bản:

>>> text1.concordance("monstrous") 

Làm thế nào tôi có thể chạy các lệnh nltk này trên tập dữ liệu của riêng tôi? Những bộ sưu tập này có giống với đối tượng book trong python không?

+1

Do lưu ý rằng 'nhập khẩu nltk' có thể không cần thiết khi bạn chỉ cần các hàm 'nltk.book'. – alvas

Trả lời

4

Bạn thấy thật khó để tìm tài liệu cho mô-đun book.py. Vì vậy, chúng tôi phải có được bàn tay của chúng tôi bẩn và nhìn vào mã, (xem here). Nhìn vào book.py, để làm conoordance và tất cả những thứ lạ mắt với các module cuốn sách:

Thứ nhất bạn phải có văn bản thô của bạn đưa vào lớp corpus NLTK, xem Creating a new corpus with NLTK để biết thêm chi tiết.

Thứ hai bạn đọc các từ văn bản vào lớp Text của NLTK. Sau đó, bạn có thể sử dụng các chức năng mà bạn nhìn thấy trong http://nltk.org/book/ch01.html

from nltk.corpus import PlaintextCorpusReader 
from nltk.text import Text 

# For example, I create an example text file 
text1 = ''' 
This is a story about a foo bar. Foo likes to go to the bar and his last name is also bar. At home, he kept a lot of gold chocolate bars. 
''' 
text2 = ''' 
One day, foo went to the bar in his neighborhood and was shot down by a sheep, a blah blah black sheep. 
''' 
# Creating the corpus 
corpusdir = './mycorpus/' 
with (corpusdir+'text1.txt','w') as fout: 
    fout.write(text1) 
with (corpusdir+'text2.txt','w') as fout: 
    fout.write(text2, fout) 

# Read the the example corpus into NLTK's corpus class. 
mycorpus = PlaintextCorpusReader(corpusdir, '.*') 

# Read the NLTK's corpus into NLTK's text class, 
# where your book-like concoordance search is available 
mytext = Text(mycorpus.words()) 

mytext.concoordance('foo') 

LƯU Ý: bạn có thể sử dụng CorpusReaders khác NLTK và thậm chí xác định tùy chỉnh đoạn/tokenizers câu/từ và mã hóa nhưng bây giờ, chúng tôi sẽ dính vào mặc định

+0

Lưu ý cho người khác ... Mã mẫu hữu ích ở trên có một số lỗi (nhỏ), do đó, không sử dụng nó theo nghĩa đen hoặc bị cuốn vào hiểu từng chi tiết. –

+0

Ah có một số C thực sự cũ như kiểu mã hóa từ Python cũ, hãy để tôi chỉnh sửa nó =) – alvas

2

Tiêu đề Phân tích với NLTK Cheatsheet từ bogs.princeton.edu https://blogs.princeton.edu/etc/files/2014/03/Text-Analysis-with-NLTK-Cheatsheet.pdf

Làm việc với văn bản của riêng bạn:

mở một tệp để đọc

file = open('myfile.txt') 

Hãy chắc chắn rằng bạn đang ở trong thư mục chính xác trước khi bắt đầu Python - hoặc cung cấp cho các đặc điểm kỹ thuật đường dẫn đầy đủ.

Đọc file:

t = file.read() 

tokenize đoạn Phúc Âm:

tokens = nltk.word_tokenize(t) 

Convert to NLTK chữ đối tượng:

text = nltk.Text(tokens)