如何在 NLTK 中创建基于 "lexicon" 和"rules"的上下文无关语法



我有两个CFG语法的文本文件:一个是"规则"(例如S->NP-VP),另一个只包含"词法符号"(例如"these":Det)。有人知道我如何将这两个文件作为我的语法提供给NLTK吗?第二个文件也被称为"词典",因为它只包含真实单词的类别。总之,我只需要提供一个特定语法的词典。否则,我必须将词典作为几个新规则写入规则文件中。由于词典量很大,无法将第二个文件转换为规则并与第一个文件合并。所以我完全被困在这里了。。。如有任何帮助/想法,我们将不胜感激。

看看教程,它有点过时了,但想法就在那里:http://www.nltk.org/book/ch08.html

然后看看这个问题和答案:CFG在NLTK 中使用POS标签

最后,这里有一个例子:

from nltk import parse_cfg, ChartParser
grammar_string = """
S -> NP VP
NP -> DT NN | NNP
VP -> VB NP | VBS
VBS -> 'sleeps'
VB -> 'loves' | 'sleeps_with'
NNP -> 'John' | 'Mary'
"""
grammar = parse_cfg(grammar_string)
sentence = 'John loves Mary'.split()
parser = ChartParser(grammar)
print parser.parse(sentence)

[out]:

(S (NP (NNP John)) (VP (VB loves) (NP (NNP Mary))))

最新更新