博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
斯坦福的nlp学习
阅读量:6851 次
发布时间:2019-06-26

本文共 3216 字,大约阅读时间需要 10 分钟。

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/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)可以获得两个词的语法依赖关系

 

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

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

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

转载于:https://www.cnblogs.com/maowuyu-xb/p/6917933.html

你可能感兴趣的文章
jdbc的五大常见应用场景
查看>>
字符串
查看>>
剖析非同质化代币ERC721-全面解析ERC721标准
查看>>
Python八荣八耻
查看>>
华硕网络硬盘服务出问题!遭到中间人攻击
查看>>
java电子商务系统源码 Spring MVC+mybatis+spring cloud+spring boot+spring security
查看>>
Java 实现 给Excel模板赋值(直接打开表格赋值或者用自定义了名称的单元格(一块区域)赋值)...
查看>>
DataLakeAnalytics: 解析IP地址对应的国家城市地址的能力
查看>>
20181120上课截图
查看>>
FastReport教程:如何从命令行使用报表设计器和查看器
查看>>
sed命令详解及运用
查看>>
一篇文章让你全部看懂!内存-java模型-jvm结构
查看>>
[转] Valgrind使用
查看>>
0023-HOSTS配置问题导致集群异常故障分析
查看>>
《软件开发工具》要点
查看>>
iOS开发 图形变换-做一个正方体
查看>>
jhead命令详解
查看>>
去你的lua和go,哥发现node.js原来才是最爱~
查看>>
OC中initialize方法和init方法的区别
查看>>
一些不可思议的小问题
查看>>