2013-07-18 5 views
6

Przechodzę przez to wonderful tutorial.Jak używać funkcji książki (np. Concoordance) w NLTK?

Pobrałem kolekcję o nazwie book:

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

i teksty importowane:

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

mogę następnie wykonywać polecenia na tych tekstów:

>>> text1.concordance("monstrous") 

Jak mogę uruchomić te komendy nltk na moim własnym zestawie danych? Czy te kolekcje są takie same jak obiekt book w pythonie?

+1

Należy pamiętać, że 'import nltk' może nie być konieczne, gdy potrzebujesz tylko funkcji 'nltk.book'. – alvas

Odpowiedz

4

Masz rację, że trudno jest znaleźć dokumentację dla modułu book.py. Musimy więc ubrudzić sobie ręce i spojrzeć na kod, (patrz here). Patrząc na book.py, aby zrobić conoordance i wszystkie wyszukane rzeczy z modułem rezerwacji:

pierwsze trzeba mieć swoich surowców teksty wprowadzone do NLTK za corpus klasy, patrz Creating a new corpus with NLTK więcej szczegółów.

Po drugie, czytasz słowa korpusowe w klasie NLTK Text. Następnie można korzystać z funkcji, które widzisz w 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') 

UWAGA: można użyć CorpusReaders innych NLTK, a nawet określić niestandardowe akapitów/tokenizers zdanie/słowo i kodowanie ale teraz będziemy trzymać się domyślnie

+0

Uwaga dla innych ... Pomocny przykładowy kod ma kilka (banalnych) błędów, więc nie używaj go dosłownie ani nie daj się złapać w zrozumieniu każdego szczegółu. –

+0

Ach, istnieje stary, bardzo podobny styl kodowania ze starego Pythona, pozwól mi go edytować =) – alvas

2

analiza tekstu z NLTK Ściągawka z bogs.princeton.edu https://blogs.princeton.edu/etc/files/2014/03/Text-Analysis-with-NLTK-Cheatsheet.pdf

Praca z własnymi tekstami:

Otwórz plik do odczytu

file = open('myfile.txt') 

Upewnij się, jesteś w odpowiednim katalogu przed rozpoczęciem Python - lub podać pełną specyfikację ścieżki.

Przeczytaj plik:

t = file.read() 

tokenize tekst:

tokens = nltk.word_tokenize(t) 

Konwersja do NLTK obiekt Tekst:

text = nltk.Text(tokens) 
Powiązane problemy