Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
Algorithm 短语树到数组_Algorithm_Tree_Phrase - Fatal编程技术网

Algorithm 短语树到数组

Algorithm 短语树到数组,algorithm,tree,phrase,Algorithm,Tree,Phrase,我有这个短语树 (根 (S) (NP) (ADJP(JJ巴哈萨) 这句话的意思是:“我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们。” (副总裁(VBZ.)) 我需要转换成数组,如下所示 S->NP VPNP->ADJP NN NN NN NNADJP->JJVP->VBZ等 有什么算法可以转换它们吗?实际上,您可以确切地看到需要做什么 每个左括号都是该元素的子元素,每个右括号都是该元素的子元素的结尾 我不知道你

我有这个短语树

(根 (S) (NP) (ADJP(JJ巴哈萨) 这句话的意思是:“我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们,我的朋友们。” (副总裁(VBZ.))

我需要转换成数组,如下所示

S->NP VP
NP->ADJP NN NN NN NN
ADJP->JJ
VP->VBZ


有什么算法可以转换它们吗?

实际上,您可以确切地看到需要做什么

每个左括号都是该元素的子元素,每个右括号都是该元素的子元素的结尾

我不知道你想做什么,但就是这么简单


阅读本文了解更多信息:

以下是一些基于解析这种类型树的库的Python代码

import pymeta.grammar

def f(name,E):
    print name+' -> '+' '.join(E)
    return name

G=pymeta.grammar.OMeta.makeGrammar("""
name = spaces ('.'|letterOrDigit|'-')+:n -> ''.join(n)
expr = token("(") name:p expr+:e token(")") -> f(p,e)
     | token("(") name:p name:e token(")") -> p
""",{'f':f})

s="(ROOT (S (NP (ADJP (JJ Bahasa)) (NN daerah) (NN merupakan) (NN bahasa) (NN yang) (NN digunakan) (NN dalam) (NN bahasa) (NN pergaulan) (NN sehari-hari) (NN di) (NN suatu) (NN daerah) (NNP tertentu)) (VP (VBZ .))))"

G(s).apply("expr")
运行此代码的输出为:

ADJP -> JJ
NP -> ADJP NN NN NN NN NN NN NN NN NN NN NN NN NNP
VP -> VBZ
S -> NP VP
ROOT -> S

(我必须在(JJ Bahasa)之后添加一个额外的括号才能完成此操作。我怀疑这是问题中的一个输入错误?

是的,解决了,我尝试循环它直到树的末尾,并获得关系。谢谢,是的,我已经尝试过了,但我的问题是php语言。但是我阅读了你的算法,解决了我的问题:)。。非常感谢。