nltk.chunk 中的 ChunkParserI 是什么?它究竟是为了什么?

数据挖掘 nlp nltk 解析
2022-03-09 18:56:12
from nltk.chunk import ChunkParserI 
from nltk.chunk.util import conlltags2tree 
from nltk.corpus import gazetteers 

class LocationChunker(ChunkParserI): 
    def __init__(self): 
        self.locations = set(gazetteers.words()) 
        self.lookahead = 0
        for loc in self.locations: 
            nwords = loc.count(' ') 
        if nwords > self.lookahead: 
            self.lookahead = nwords 

nltk.chunk 中的 ChunkParserI 是什么?它究竟是为了什么?另外,请解释代码。分块和解析有什么区别?

1个回答

解析是将字符串分解为其组成符号(如果字符串是单词或字符序列)或句法组件(如果字符串是有意义的文本实体,如短篇小说、科学摘要或句子)的过程。在 NLP 上下文中,当人们谈论解析时,他/她通常指的是后一种解释。

分块(在 NLP 上下文中)是一种特定的解析形式,它提取所谓的“块”中的词组。这些词组或词块是句子中“有意义的短语”(用词性标记)。因此,块由单词组成,并且使用词性标签定义单词的种类。人们甚至可以定义一种模式或不能成为块一部分的单词,这些单词被称为“chinks” 1后者可以用分块规则定义。

我假设您发布的代码来自 Hardeniya 等人的“自然语言处理:Python 和 NLTK”。2 ? 从那里我可以发现 LocationChunker 类'从在地名词典中构建一组所有位置开始。然后,它会找到单个位置字符串中的最大单词数,因此它知道在解析标记的句子时必须向前看多少单词。(参见第 5 章,第 319 页)