python - NLTK FCFG 语法标准/规范是什么?

标签 python nltk grammar context-free-grammar

NLTK(自然语言工具包)允许您使用 nltk.FCFG.fromstring([此处的语法字符串]) 解析 FCFG 语法。 FCFG 语法格式规范在哪里*?我用谷歌搜索死了,但我只能找到this

*即语法语言规范

最佳答案

问题是要求FCFG(特征语法)而不是普通的CFG。

我认为您可以在非终结符上添加方括号,并在括号中添加功能名称、等号和值。该值可以是变量(以问号开头)、终结符号(对于简单值)或新的特征结构。我在互联网上找到了这个示例( http://www.nltk.org/howto/featgram.html ),它正在我的笔记本电脑上运行。

from nltk import grammar, parse

g = """
% start DP
DP[AGR=?a] -> D[AGR=?a] N[AGR=?a]
D[AGR=[NUM='sg', PERS=3]] -> 'this' | 'that'
D[AGR=[NUM='pl', PERS=3]] -> 'these' | 'those'
D[AGR=[NUM='pl', PERS=1]] -> 'we'
D[AGR=[PERS=2]] -> 'you'
N[AGR=[NUM='sg', GND='m']] -> 'boy'
N[AGR=[NUM='pl', GND='m']] -> 'boys'
N[AGR=[NUM='sg', GND='f']] -> 'girl'
N[AGR=[NUM='pl', GND='f']] -> 'girls'
N[AGR=[NUM='sg']] -> 'student'
N[AGR=[NUM='pl']] -> 'students'
"""

grammar = grammar.FeatureGrammar.fromstring(g)
tokens = 'these girls'.split()
parser = parse.FeatureEarleyChartParser(grammar)
trees = parser.parse(tokens)
for tree in trees: 
    tree.draw()
    print(tree)

看来功能终端符号是否带引号并不重要。

关于python - NLTK FCFG 语法标准/规范是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35963350/

相关文章:

python - 如何从没有 None 字段的类创建字典?

c++ - 使用依赖于类型的模板名称的声明

delphi - 寻找完整的 Delphi (object pascal) 语法

python - Django 模板 - 在哪里编码以查找此特定模板?

python - Python中的UTF-8编码问题,将utf-8与ascii字符串连接(实际上是插值)

python - Python中函数参数顺序的最佳实践

python - 使用大量停用词加速文本清理

python - python 中的快速/优化 N-gram 实现

python - Nltk 的 wordnet lemmatizer 未对所有单词进行词形还原

grammar - Bison:单个规则中的可选标记