• 斯坦福的nlp学习


    Stanford NLP tools提供了处理中文的三个工具,分别是分词、Parser

    具体参考:

    http://nlp.stanford.edu/software/parser-faq.shtml#o

    1.中文分词

    这个包比较大,运行时候需要的内存也多,因而如果用eclipse运行的时候需要修改虚拟内存空间大小:

    运行-》自变量-》VM自变量-》-Xmx800m (最大内存空间800m)

    demo

    2.依存句法分析

    可以参考http://nlp.stanford.edu/software/parser-faq.shtml#o

    http://blog.csdn.NET/leeharry/archive/2008/03/06/2153583.aspx

    根据输入的训练库不同,可以处理英文,也可以处理中文。输入是分词好的句子,输出词性、句子的语法树(依赖关系)

    英文demo(下载的压缩文件中有):

    1. LexicalizedParser lp = new LexicalizedParser("englishPCFG.ser.gz");  
    2. lp.setOptionFlags(new String[]{"-maxLength", "80", "-retainTmpSubcategories"});  
    3.   
    4. String[] sent = { "This", "is", "an", "easy", "sentence", "." };  
    5. Tree parse = (Tree) lp.apply(Arrays.asList(sent));  
    6. parse.pennPrint();  
    7. System.out.println();  
    8.   
    9. TreebankLanguagePack tlp = new PennTreebankLanguagePack();  
    10. GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();  
    11. GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);  
    12. Collection tdl = gs.typedDependenciesCollapsed();  
    13. System.out.println(tdl);  
    14. System.out.println();  
    15.   
    16. TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed");  
    17. tp.printTree(parse);

    中文有些不同:

    1. //LexicalizedParser lp = new LexicalizedParser("englishPCFG.ser.gz");  
    2. LexicalizedParser lp = new LexicalizedParser("xinhuaFactored.ser.gz");  
    3. //lp.setOptionFlags(new String[]{"-maxLength", "80", "-retainTmpSubcategories"});  
    4.   
    5. //    String[] sent = { "This", "is", "an", "easy", "sentence", "." };  
    6. String[] sent = { "他", "和", "我", "在",  "学校", "里", "常", "打", "桌球", "。" };  
    7. String sentence = "他和我在学校里常打台球。";  
    8. Tree parse = (Tree) lp.apply(Arrays.asList(sent));  
    9. //Tree parse = (Tree) lp.apply(sentence);  
    10.   
    11. parse.pennPrint();  
    12.   
    13. System.out.println();  
    14. /* 
    15. TreebankLanguagePack tlp = new PennTreebankLanguagePack(); 
    16. GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory(); 
    17. GrammaticalStructure gs = gsf.newGrammaticalStructure(parse); 
    18. Collection tdl = gs.typedDependenciesCollapsed(); 
    19. System.out.println(tdl); 
    20. System.out.println(); 
    21. */  
    22. //only for English  
    23. //TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed");  
    24. //chinese  
    25. TreePrint tp = new TreePrint("wordsAndTags,penn,typedDependenciesCollapsed",new ChineseTreebankLanguagePack());  
    26. tp.printTree(parse);

    然而有些时候我们不是光只要打印出来的语法依赖关系,而是希望得到关于语法树(图),则需要采用如下的程序:

    1. String[] sent = { "他", "和", "我", "在",  "学校", "里", "常", "打", "桌球", "。" };  
    2. ParserSentence ps = new ParserSentence();  
    3. Tree parse = ps.parserSentence(sent);  
    4. parse.pennPrint();  
    5. TreebankLanguagePack tlp = new ChineseTreebankLanguagePack();  
    6. GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();  
    7. GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);  
    8. Collection tdl = gs.typedDependenciesCollapsed();  
    9. System.out.println(tdl);  
    10. System.out.println();  
    11. for(int i = 0;i < tdl.size();i ++)  
    12. {  
    13. //TypedDependency(GrammaticalRelation reln, TreeGraphNode gov, TreeGraphNode dep)  
    14. TypedDependency td = (TypedDependency)tdl.toArray()[i];  
    15. System.out.println(td.toString());  

    //采用GrammaticalStructure的方法getGrammaticalRelation(TreeGraphNode gov, TreeGraphNode dep)可以获得两个词的语法依赖关系

    分界线---------------------------------------------------------------------------------------------------------------------------------

    在线试了一下斯坦福的依存句法分析工具:

    输入中文句子 ------>分词-------->词性标注-------->依存句法分析

  • 相关阅读:
    开发工具
    CPU知识
    GMAP.NET
    vtordisp
    Hadoop HBase 配置 安装 Snappy 终极教程
    asp.net Vs访问正常,iis访问出现各种问题的部分处理方法
    MVC项目小结:动态菜单
    视频的采集和动态显示
    《编程之美》
    Nginx实现简单的负载均衡web访问
  • 原文地址:https://www.cnblogs.com/maowuyu-xb/p/6917933.html
Copyright © 2020-2023  润新知