如何从Java中的解析句子构建树?

时间:2013-09-14 05:51:30

标签: java

我有句Programcreek is a very huge and useful website.解析后我将其转换为以下字符串格式:

(TOP (S (NP (NN Programcreek)) (VP (VBZ is) (NP (DT a) (ADJP (RB very) (JJ huge) (CC and) (JJ useful)))) (. website.)))

我想将此解析后的句子转换为图中显示的树。怎么做到这一点?我是Java的新手,所以我不知道是否有标准的方法呢?欢迎任何帮助/建议。谢谢

2 个答案:

答案 0 :(得分:2)

Java没有标准的Tree结构(有一些像TreeMap这样的Collection类,但它们只是在内部使用树结构)所以你必须创建自己的树结构。这是一个例子:

public class Node {
    public String nodeText;
    public List<Node> children = new ArrayList<Node>();
}

现在你必须解析你的字符串并做类似的事情:

当您点击(时,您需要创建一个新节点并将nodeText设置为紧跟(之后的文本。然后你会递归地继续解析字符串并在那里创建新节点,直到你点击)。这应该结束递归并返回创建的节点列表。在您开始递归的位置,您将所有返回的节点作为子节点添加到节点中。

这是非常简陋的,你必须对根节点有点特别,但是有很多关于树的文献和教程。

答案 1 :(得分:1)

值得更多地了解这个主题,而不是像你一样要求答案。您至少应该尝试自己解决问题。一些关于语言http://en.m.wikipedia.org/wiki/Parse_tree的树木阅读

还有一些关于堆栈溢出的帖子中的一些信息,用于在java Java tree data-structure?

中构建树