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']
Я нашел это, посмотрев, как определяется метод concordance
.
Это показывает, text1.concordance
определено в /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
В этом файле вы найдете
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)
Здесь показано, как создавать экземпляры 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.offsets('monstrous')
дает список чисел (смещений), где можно найти слово monstrous
. Вы можете получить доступ к фактическим словам с помощью self._tokens[offset]
, что совпадает с text1.tokens[offset]
.
Таким образом, следующее слово после monstrous
дается text1.tokens[offset+1]
.