我正在使用ruby中的Stanford Parser,并希望搜索具有特定标签名称的树的所有节点。 这是我到目前为止编码的递归方法
def searchTreeWithLabel(tree,lablename,listOfNodes)
if tree.instance_of?(StanfordParser::Tree)
if tree.lable.toString == lablename then
listOfNodes << tree
else
tree.children.each { |c| searchTreeWithLabel(c, lablename, listOfNodes)}
end
end
listOfNodes
end
我希望该方法返回标签为labelname
的Tree节点列表答案 0 :(得分:0)
我不熟悉StanfordParser
但是我想你需要将遍历的下降部分从内部条件中取出来并且总是这样做。
另外,他们真的实现了toString
方法吗?真的吗?这不是.to_s
?我的意思是,在我找到Ruby之前,我很喜欢Java ......: - )
答案 1 :(得分:0)
我的原始代码是正确的,但ruby在
方面遇到了一些问题if tree.lable.toString == lablename then
语句,结果是tree.value也可以,所以现在我正在检查
if tree.value == lablename then
它有效。