Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NLTK fcfg sem值不合适_Python_Nlp_Nltk_Context Free Grammar - Fatal编程技术网

Python NLTK fcfg sem值不合适

Python NLTK fcfg sem值不合适,python,nlp,nltk,context-free-grammar,Python,Nlp,Nltk,Context Free Grammar,我在这句话中使用的FCFG是 S[SEM=<?vp(?np)>] -> NP[NUM=?n, SEM=?np] VP[NUM=?n,SEM=?vp] VP[NUM=?n,SEM=<?v(?obj)>] -> TV[NUM=?n,SEM=?v] DET NP[SEM=?obj NP[NUM=?n, SEM=?np] -> N[NUM=?n, SEM=?np] N[NUM=sg, SEM=<\P.P(I)>] -> 'I' TV[NUM

我在这句话中使用的FCFG是

S[SEM=<?vp(?np)>] -> NP[NUM=?n, SEM=?np] VP[NUM=?n,SEM=?vp] 
VP[NUM=?n,SEM=<?v(?obj)>] -> TV[NUM=?n,SEM=?v] DET NP[SEM=?obj
NP[NUM=?n, SEM=?np] -> N[NUM=?n, SEM=?np] 
N[NUM=sg, SEM=<\P.P(I)>] -> 'I'
TV[NUM=sg,SEM=<\x y.(run(y,x))>] -> 'run'
DET -> "a"
N[NUM=sg, SEM=<\P.P(race)>] -> 'race'
它为解析的句子返回一个看起来非常笨拙的短语

S[SEM=<run(\P.P(I3),\P.P(race))>]
S[SEM=]
然而,我希望代码返回

S[SEM=<run(I,race)>]
S[SEM=]

我如何摆脱不应该属于那里的
\p.p

N[NUM=sg, SEM=<\x.race(x)>] -> 'race'
如果你有:

TV[NUM=sg, SEM=<\X.\y.X(\x.run(y,x))>] -> 'run'
VP[NUM=?num, SEM=<?tv(?obj)>] -> TV[NUM=?num, SEM=?tv] NP[NUM=?num, SEM=?obj]
然后你会:

NP[NUM=sg, SEM=<\P.P(I)>] -> 'I'
S[NUM=?num, SEM=<?subj(?vp)>] -> NP[NUM=?num, SEM=?subj] VP[NUM=?num, SEM=?vp] 

请看一看。

我的初始代码很难处理并返回的原因

S[SEM=<run(\P.P(I3),\P.P(race))>]

所以要解决这个问题,我需要一个参数,而不是更高的类型

这些SEM值如何与其他SEM值结合?例如,在一个名词短语中?很抱歉,当我阅读代码时,我越来越困惑。在你的第三个例子中,“一只狗”到底是怎么描述的。此外,我需要保留
\P.P
,以便动词与两个名词连接phrases@DavidYi,我修复了示例,并完成了它。
TV[NUM=sg, SEM=<\X.\y.X(\x.run(y,x))>] -> 'run'
VP[NUM=?num, SEM=<?tv(?obj)>] -> TV[NUM=?num, SEM=?tv] NP[NUM=?num, SEM=?obj]
\X.\y.X(\z.run(y,z))(\Q.exists x.(race(x) & Q(x))))
                                = \y.(\Q.exists x.(race(x) & Q(x)))(\z.run(y,z)))
                                = \y.exists x.(race(x) & \z.run(y,z)(x)))
                                = \y.exists x.(race(x) & run(y,x)))
NP[NUM=sg, SEM=<\P.P(I)>] -> 'I'
S[NUM=?num, SEM=<?subj(?vp)>] -> NP[NUM=?num, SEM=?subj] VP[NUM=?num, SEM=?vp] 
\P.P(I)(\y.exists x.(race(x) & run(y,x)))) = \y.exists x.(race(x) & run(y,x)))(I)
                                           = exists x.(race(x) & run(I,x)))
S[SEM=<run(\P.P(I3),\P.P(race))>]
\P.P(I3)