2012-01-17 11 views

Respuesta

18
import nltk 
import nltk.book as book 
text1 = book.text1 
c = nltk.ConcordanceIndex(text1.tokens, key = lambda s: s.lower()) 
print([text1.tokens[offset+1] for offset in c.offsets('monstrous')]) 

produce

['size', 'bulk', 'clubs', 'cannibal', 'and', 'fable', 'Pictures', 'pictures', 'stories', 'cabinet', 'size'] 

yo encontramos este por buscar cómo se define el método concordance.

Esto demuestra text1.concordance se define en /usr/lib/python2.7/dist-packages/nltk/text.py:

In [107]: text1.concordance? 
Type:  instancemethod 
Base Class: <type 'instancemethod'> 
String Form: <bound method Text.concordance of <Text: Moby Dick by Herman Melville 1851>> 
Namespace: Interactive 
File:  /usr/lib/python2.7/dist-packages/nltk/text.py 

En ese archivo usted encontrará

def concordance(self, word, width=79, lines=25): 
    ... 
     self._concordance_index = ConcordanceIndex(self.tokens, 
                key=lambda s:s.lower()) 
    ...    
    self._concordance_index.print_concordance(word, width, lines) 

Esto muestra cómo crear una instancia de ConcordanceIndex objetos.

Y en el mismo archivo también encontrará:

class ConcordanceIndex(object): 
    def __init__(self, tokens, key=lambda x:x): 
     ... 
    def print_concordance(self, word, width=75, lines=25): 
     ... 
     offsets = self.offsets(word) 
     ... 
     right = ' '.join(self._tokens[i+1:i+context]) 

Con un poco de experimentación en el intérprete IPython, esto muestra self.offsets('monstrous') da una lista de números (offsets) donde la palabra monstrous se puede encontrar. Puede acceder a las palabras reales con self._tokens[offset], que es lo mismo que text1.tokens[offset].

Así que la siguiente palabra después de monstrous viene dada por text1.tokens[offset+1].

Cuestiones relacionadas