调用NLTK的concordance如何在使用的单词之前/之后获取文本?

2024-04-28 04:14:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找出concordace返回的实例之后的文本。例如,如果你看他们在'Searching Text' section中给出的一个例子,他们得到了单词“monstrous”的一致性。你怎么会得到一个可怕的例子后马上来的话?


Tags: 实例text文本searchingsection单词例子一致性
1条回答
网友
1楼 · 发布于 2024-04-28 04:14: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')])

收益率

['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]给出。

相关问题 更多 >