Python 调用NLTK';s一致性-如何在使用的单词之前/之后获取文本?

Python 调用NLTK';s一致性-如何在使用的单词之前/之后获取文本?,python,nltk,Python,Nltk,我想知道concordace返回的实例后面有什么文本。例如,若你们看一个他们给出的例子,他们得到了“怪物”这个词的一致性。你怎么能得到紧跟在一个怪物后面的词呢 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.o

我想知道concordace返回的实例后面有什么文本。例如,若你们看一个他们给出的例子,他们得到了“怪物”这个词的一致性。你怎么能得到紧跟在一个怪物后面的词呢

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')])
屈服

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

我是通过查看
一致性
方法是如何定义的来发现这一点的

这显示了
text1。一致性在
/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
这显示了如何实例化
ConcordanceIndex
对象

在同一个文件中,您还可以找到:

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])
通过在IPython解释器中的一些实验,这显示了
self。offset('monstrous')
给出了一个可以找到单词
monstrous
的数字(offset)列表。您可以使用
self.\u tokens[offset]
访问实际单词,这与
text1.tokens[offset]
相同

因此
monstrous
后面的下一个单词由
text1.tokens[offset+1]
给出

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