首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是NLTK语法标准/规范?

什么是NLTK语法标准/规范?
EN

Stack Overflow用户
提问于 2016-03-12 21:10:12
回答 3查看 2.7K关注 0票数 2

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

*即语法语言规范

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-12 23:54:20

从演示中:

代码语言:javascript
复制
>>> 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组合组成,每个组合由pip符号|分隔。
  • CFG的惯例是对非终端使用大写字母,但这是不必要的。

另外,请参阅符号语法

票数 1
EN

Stack Overflow用户

发布于 2018-11-26 13:48:50

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

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

代码语言:javascript
复制
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)

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

票数 3
EN

Stack Overflow用户

发布于 2020-08-03 08:29:08

Wartena是对的:问题确实是FCFG:基于特征的上下文-免费Gramars。检查一下这个https://nltk.org/book/ch09.html,这里是他的FCFG中的一些光:

  • NUM对应于单数/多项。
  • GND是指性别--男性/女性/其他:法语或德语等语言将性别归为宾语和动词。
  • PERS是人(第一人称我/我们,第二人称你,第三人称他/她/他们)
  • 免责声明标记表示变量(如Prolog中的)。
  • AGR =一致性特征=一组特征NUM,PERS,GND,TENSE=Tense
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35963350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档