您的位置:首页 > 其它

Stanford parser入门2:中文句法路径提取

2017-10-09 09:44 183 查看
1.代码

//调用stanford parser进行句法分析,提取节点间路径
import java.io.IOException;
import java.util.List;

import edu.stanford.nlp.parser.lexparser.LexicalizedParser;
import edu.stanford.nlp.trees.Tree;

public class ParserTest2 {

public static void main(String[] args) throws IOException {
String grammar = "edu/stanford/nlp/models/lexparser/chineseFactored.ser.gz";
// String grammar = "edu/stanford/nlp/models/lexparser/chinesePCFG.ser.gz";
String[] options = {};
LexicalizedParser lp = LexicalizedParser.loadModel(grammar, options);
String line = "质量 太 差 了";
String word1 = "质量";
String word2 = "差";
Tree parse = lp.parse(line);
parse.pennPrint();
List<Tree> nodelist = parse.preOrderNodeList();
Tree node1=parse,node2=parse;
for(Tree nodet:nodelist)
{
if(nodet.label().toString().equals(word1)){
node1 = nodet;
//System.out.println(nodet.label().toString());
}
if(nodet.label().toString().equals(word2)){
node2 = nodet;
//System.out.println(nodet.label().toString());
}
}
List<Tree> nodepath = parse.pathNodeToNode(node1, node2);
String nodepathstr="";
for(Tree nodet:nodepath)
{
if(nodet!=null)
nodepathstr += nodet.label().toString() + ",";
}
System.out.println(nodepathstr);
System.out.println("---end---");
}
}


2.结果

(ROOT

  (IP

    (IP

      (NP (NN 质量))

      (VP

        (ADVP (AD 太))

        (VP (VA 差) (AS 了))))

    (PU ,)

    (CP

      (IP

        (VP (VV 用)

          (VP

            (ADVP (AD 不))

            (PP (P 到)

              (NP (NN 半天)))

            (ADVP (AD 就))

            (VP (VE 没)

              (NP (NN 电))))))

      (SP 了))))

质量,NN,NP,IP,VP,VP,VA,差,

---end---

3.参考资料
https://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/trees/Tree.html https://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/ling/Label.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  StanfordNLP
相关文章推荐