gpt4 book ai didi

python - 从通用标签集生成 PCFG

转载 作者:行者123 更新时间:2023-12-01 03:09:10 28 4
gpt4 key购买 nike

我正在尝试使用从以下代码获取的 POS 标签构建 PCFG:

from nltk.corpus import treebank

corpus = treebank.tagged_sents(tagset='universal')
tags = set()

for sent in corpus:
for (word, tag) in sent:
tags.add(tag)

tags = list(tags)
print tags

给予,

['ADV', 'NOUN', 'ADP', 'PRON', 'DET', '.', 'PRT', 'NUM', 'X', 'CONJ', 'ADJ', 'VERB']

我需要使用上面的 POS 标签生成 PCFG。但是,当我尝试使用规则

构建语法时
nltk.grammar.PCFG.fromstring("""T5 -> . NT6 [0.136235]""")

它产生

ValueError: Unable to parse line 1: T5 -> . NT6 [0.136235]
Expected a nonterminal, found: . NT6 [0.136235]

我假设异常表明“.”不是 nltk.grammar.PCFG 中的有效非终结符。但我想知道是否有一个巧妙的方法来解决这个问题。

相关

nltk cant interpret grammar category PRP$ output by stanford parser提供了一个很好的修复,将树库标记集中的“$”添加到语法中。但树库 POS 标记集再次包含单引号 (' ') 作为 POS 标记,这不是有效的符号。

是否有一种巧妙的方法可以解决此问题,而无需将每个特殊字符添加到语法中?

最佳答案

我得到了这个问题的答案。不使用 fromstring 方法,而是通过传递 nltk.ProbabilisticProduction 对象列表和 nltk.Nonterminal 对象来生成 PCFG 对象,如下所示:

from nltk import ProbabilisticProduction 
from nltk.grammar import PCFG
from nltk import Nonterminal as NT

g = ProbabilisticProduction(NT('TS'), [NT('.'), NT('NT6')], prob=1)

# Adding a terminal production
g = ProbabilisticProduction(NT('NT6'), ['terminal'], prob = 1)

start = NT('Q0') # Q0 is the start symbol for my grammar
PCFG(start, [g]) # Takes a list of ProbabilisticProductions

关于python - 从通用标签集生成 PCFG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43037697/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com