原文链接:
1、到斯坦福官方网站http://nlp.stanford.edu/software/lex-parser.shtml下载软件包,解压。
2、在eclipse中新建一个java project,把解压得到根目录下的stanford-parser.jar和stanford-parser-2.0.4-models.jar(不同版本文件名可能有差异)两个包导入项目到项目引用包中,然后把解压得到根目录下的ParserDemo.java文件拷贝到项目的src中,在eclipse目录中的显示如下:
运行该实例程序将得到如下结果:
该示例是英文语法解析的示例程序,如果要测试中文的话,要如下修改:
(1)按需要把输入改成要测试中文:
[java] view plaincopy
String[] sent = { "这", "是", "第一个", "测试", "句子", "。" };
(2)导入中文的解析模型文件:
[java] view plaincopy
Stringgrammar = args.length > 0 ? args[0] : "edu/stanford/nlp/models/lexparser/chinesePCFG.ser.gz";
(3)修改源文件中的部分代码:
[java] view plaincopy
TreebankLanguagePacktlp = new ChineseTreebankLanguagePack();//PennTreebankLanguagePack();
可能报错没有retainTmpSubcategories参数,在源文件中注释掉该参数:
[java] view plaincopy
String[] options = {"-maxLength", "80"};//, "-retainTmpSubcategories" };
Stanford parser句法树分析时候占用内存可能较大,所以要调整eclipse虚拟内存空间,方法是在“运行——运行——自变量——VM自变量中填上-Xms256M -Xmx800M”,大小就要看实际情况和机子性能。
当句子较长时会出现报“FactoredParser: exceeded MAX_ITEMS work limit [200000 items]; aborting.”错误…
在options中把MAX_ITEMS设为一个更大的书,如下例子中为500000
[java] view plaincopy
String[] options = { "-maxLength", "140", "-MAX_ITEMS","500000"};
[java] view plaincopy
lp = LexicalizedParser.loadModel("edu/stanford/nlp/models/lexparser/", options);
解决办法参考:http://blog.amelielee.com/archives/140。
为了方便易于使用,Stanford Parser自带图形化操作界面,在windows操作系统下只要双击运行软件根目录下的lexparser-gui.bat文件(linux下为lexparser-gui.sh文件)即可得到如下界面:
点击“Load File”导入需要解析文件也可以直接在上面大的输入框中输入要解析内容,在“Language”选项中选择对应解析的语言。点击“Load Parser”载入模型文件,稍等片刻(载入模型文件可能需要几秒钟)进度条完成载入后“Parser”按钮变成可用状态,点击即可解上输入框中高亮的内容,解析得到的树形结果在下框中显示,可以把结果输出另存为文件:
Stanford Parser还提供了命令行的方式lexparser-gui.bat(win)和lexparser.sh(linux)具体使用见官方文档:FAQ
Stanford Parser有个在线的解释效果示例在:http://nlp.stanford.edu:8080/parser/index.jsp
更多信息请参见:The Stanford NaturalLanguage Processing Group官方网站