PCFG模型训练
Java -Xmx7g edu.stanford.nlp.parser.lexparser.LexicalizedParser -tLPP edu.stanford.nlp.parser.lexparser.ChineseTreebankParserParams -train data/source/dataCTBZh//bracketed -saveToSerializedFile data/models/pcfgZH.ser.gz
其中:
-tLPP,用来选定训练树库的语言,中文选择edu.stanford.nlp.parser.lexparser.ChineseTreebankParserParams
说明:
输入的语料共1677971个句子,去重后词为67811
输入的文件格式为:
<DOC>
<DOCID>XIN.19960210.0178</DOCID>
<HEADER>
<DATE>1996-02-10</DATE>
</HEADER>
<BODY>
<HEADLINE>
<S ID=1>
( (IP-HLN (NP-SBJ (NP-PN (NR 上海)
(NR 浦东))
(NP (NN 开发)
(CC 与)
(NN 法制)
(NN 建设)))
(VP (VV 同步))) )
</S>
</HEADLINE>
<TEXT>
<P>
<S ID=2>
( (FRAG (NN 新华社)
(NR 上海)
(NT 二月)
(NT 十日)
(NN 电)
(PU ()
(NN 记者)
(NR 谢金虎)
(PU 、)
(NR 张持坚)
(PU )) ))
</S>
CoreNLP FPEG模型测试和效果
public static void main(String[] args) {
LexicalizedParser lp;
boolean newFlag= true;
if (newFlag){
String parserModel = "data/models/pcfgZH.ser.gz";
lp = LexicalizedParser.loadModel(parserModel);
}
else {
String basedir = "D:/WorkSpaceIntelliJ/coreNLP/stanford-chinese-corenlp-2016-10-31-models/";
String parserModel = "edu/stanford/nlp/models/lexparser/chinesePCFG.ser.gz";
lp = LexicalizedParser.loadModel(basedir+parserModel);
}
String line = "统计还 显示 , 台商 投资 祖国 大陆 正 趋向 大型化 。";
String line2="俄国希望 伊朗 没有 制造 核武器 计划 。";
Tree parser = lp.parse(line);
parser.pennPrint();
//dependency
ChineseGrammaticalStructure gs = new ChineseGrammaticalStructure(parser);
Collection<TypedDependency> tdl =gs.typedDependenciesCCprocessed();
System.out.println(tdl.toString());
}
输出结果为:
(ROOT
(IP
(NP (NN 统计))
(VP
(ADVP (AD 还))
(VP (VV 显示) (PU ,)
(IP
(IP
(NP (NN 台商))
(VP (VV 投资)
(NP (NN 祖国) (NN 大陆))))
(VP
(ADVP (AD 正))
(VP (VV 趋向)
(NP (NN 大型化)))))))
(PU 。)))
[nsubj(显示-3, 统计-1), xsubj(趋向-10, 统计-1),advmod(显示-3, 还-2), root(ROOT-0, 显示-3), nsubj(投资-6, 台商-5), dep(趋向-10, 投资-6), nn(大陆-8, 祖国-7), dobj(投资-6, 大陆-8), advmod(趋向-10, 正-9), ccomp(显示-3, 趋向-10), dobj(趋向-10, 大型化-11)]