【问题标题】:What is the NLTK FCFG grammar standard/specification?什么是 NLTK FCFG 语法标准/规范?
【发布时间】:2016-06-28 01:31:33
【问题描述】:

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

*即语法语言规范

【问题讨论】:

  • 使用来源,卢克。
  • 如文件所示:每行扩展一个 NT(非终端),右侧由管道分隔,终端用引号括起来,rhs 的概率加起来为 1。
  • 问题最近有变化吗?

标签: python nltk grammar context-free-grammar


【解决方案1】:

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

我认为您可以在非终结符上添加方括号,并在方括号中添加功能名称、等号和值。该值可以是变量(以问号开头)、终端符号(用于简单值)或新的特征结构。我在 Internet (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)

似乎特征终端符号是否被引用并不重要。

【讨论】:

    【解决方案2】:

    来自演示:

    >>> from nltk import CFG
    >>> grammar = CFG.fromstring("""
    ... S -> NP VP
    ... PP -> P NP
    ... NP -> Det N | NP PP
    ... VP -> V NP | VP PP
    ... Det -> 'a' | 'the'
    ... N -> 'dog' | 'cat'
    ... V -> 'chased' | 'sat'
    ... P -> 'on' | 'in'
    ... """)
    

    从字符串编写语法的语法应该是这样的:

    • 每一行都是一条由左侧 (LHS) 和右侧 (RHS) 组成的规则,其中
    • 箭头->的LHS上只能有一个非终结符
    • RHS 可以由一个或多个非终端和/或终端的组合组成。
    • 终端字符串需要用引号括起来
    • RHS 上的非终结符用空格分隔。
    • 每个非终端结果 (LHS) 可以由一个或多个 RHS 组合组成,每个组合由点符号 | 分隔
    • CFG 的惯例是对非终结符使用大写字母,但这不是必需的。

    另外,请参阅 https://en.wikipedia.org/wiki/Terminal_and_nonterminal_symbolshttps://en.wikipedia.org/wiki/Context-free_grammar

    【讨论】:

      【解决方案3】:

      Wartena 是对的:问题确实是 FCFG:基于特征的上下文无关语法。检查这个https://nltk.org/book/ch09.html 以下是他的 FCFG 的一些亮点:

      • NUM 对应单数/复数
      • GND 是性别男性/女性/其他:法语或德语等语言将 Gender 属性赋予对象和动词
      • PERS 是人(第一人称我/我们,第二人称你,第三人称 他/她/它/他们)
      • 感叹号代表一个变量(就像在 Prolog 中一样)
      • AGR = 协议特征 = 特征集 NUM、PERS、GND、TENSE=Tense

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-04
        • 2023-01-12
        相关资源
        最近更新 更多