NLTK中的Python concordance命令

Pha*_*aii 5 python nltk

我有一个关于NLTK中的Python concordance命令的问题.首先,我来了一个简单的例子:

from nltk.book import *

text1.concordance("monstrous")
Run Code Online (Sandbox Code Playgroud)

哪个工作得很好.现在,我有自己的.txt文件,我想执行相同的命令.我有一个名为"textList"的列表,想找到"CNA"这个词,所以我把命令

textList.concordance('CNA') 
Run Code Online (Sandbox Code Playgroud)

然而,我得到了错误

AttributeError: 'list' object has no attribute 'concordance'. 
Run Code Online (Sandbox Code Playgroud)

在示例中,text1不是列表吗?我想知道这里发生了什么.

Tim*_*Tim 27

.concordance()是一个特殊的nltk函数.所以你不能只在任何python对象(如列表)上调用它.

更具体地说:.concordance()Textnltk类中的方法

基本上,如果要使用.concordance(),则必须首先实例化Text对象,然后在该对象上调用它.

文本

通常从给定文档或语料库初始化文本.例如:

import nltk.corpus  
from nltk.text import Text  
moby = Text(nltk.corpus.gutenberg.words('melville-moby_dick.txt'))
Run Code Online (Sandbox Code Playgroud)

.concordance()

一致性(字,宽= 79,行= 25)

使用指定的上下文窗口打印单词的一致性.字匹配不区分大小写.

所以我想这样的东西会起作用(未经测试)

import nltk.corpus  
from nltk.text import Text  
textList = Text(nltk.corpus.gutenberg.words('YOUR FILE NAME HERE.txt'))
textList.concordance('CNA')
Run Code Online (Sandbox Code Playgroud)


ǝlp*_*ooʞ 5

我用这个代码开始工作:

import sys
from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.text import Text

def main():
    if not sys.argv[1]:
        return
    # read text
    text = open(sys.argv[1], "r").read()
    tokens = word_tokenize(text)
    textList = Text(tokens)
    textList.concordance('is')
    print(tokens)



if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

基于这个网站