我想弄清楚如何训练stanford LexicalizedParser
(edu.stanford.nlp.parser.lexparser.LexicalizedParser)将新名词纳入其词典。
起初我的目标是采取现有模型并略微调整,而不是创建一个全新的模型 来自大量的培训示例。
这个问题的答案表明这是不可能的> How can I add more tagged words to the Stanford POS-Tagger's trained models?
希望那里有人可以让我走上正确的道路,如何做到这一点。
作为我想做的一个具体例子,说我有'researchgate'这个词,当我解析时,我想把它当作名词对待 句子。目前,“研究门”被视为不同的词性,取决于它 位置..但我希望它被识别为'NN'(名词)。
示例......
而不是:
(NP
(NP (JJ recent) (NN activity))
(PP (IN in)
(NP (PRP$ your) (JJ researchgate) (NNS topics)))))
我想要这个:
(NP
(NP (JJ recent) (NN activity))
(PP (IN in)
(NP (PRP$ your) (NN researchgate) (NNS topics)))))
而不是:
(ROOT
(FRAG
(NP (NN subscription))
(S
(VP (TO to)
(VP (VB researchgate))))))
我想要这个:
(ROOT
(NP
(NP (NN subscription))
(PP (TO to)
(NP (NN researchgate)))))
我目前正在使用这个模型:models / edu / stanford / nlp / models / lexparser / englishPCFG.ser.gz
我试过这样做>
java -cp stanford-parser.jar
edu.stanford.nlp.parser.lexparser.LexicalizedParser -train /tmp/train.txt
以/tmp/train.txt的竞争对手如下>
(NP
(NP (JJ recent) (NN activity))
(PP (IN in)
(NP (PRP$ your) (JJ researchgate) (NNS topics)))))
我得到了许多有前途的输出,但后来得到了这个错误>
Error. Can't parse test sentence: [This, is, just, a, test, .]
很明显,我需要提供更多的例子而不仅仅是我在/tmp/train.txt中的例子。
查看文档似乎有一个很有前景的方法 我正在考虑尝试的LexicalizedParser ...>
public static LexicalizedParser getParserFromTreebank(Treebank trainTreebank,
Treebank secondaryTrainTreebank,
double weight,
GrammarCompactor compactor,
Options op,
Treebank tuneTreebank,
List<List<TaggedWord>> extraTaggedWords)
我犹豫是否要跳进去尝试这个因为让选项正确起来似乎很棘手。
doco说:
解析器的选项,在训练和测试(解析)时间必须是SAME
解析器正常工作的顺序
所以我可能需要有关如何提取所用选项的指导 edu / stanford / nlp / models / lexparser / englishPCFG.ser.gz也许是
edu.stanford.nlp.parser.lexparser.EnglishTreebankParserParams ?
另外,也许我想将researchgate添加为我的extraTaggedWords之一?
我感觉我在正确的轨道上,但希望在下降之前得到一些建议 进入老鼠洞。
提前致谢!
chris
答案 0 :(得分:1)
我发布了stanford解析器邮件列表,我收到了John Bauer的回复(谢谢,John!)
John Bauer 下午2:09(39分钟前) 对我来说,解析器用户 不幸的是,您需要从一开始就开始训练。 无法扩展当前的解析器模型。 这个功能在“列表”上,但它在靠近后面的地方,所以不要屏住呼吸...... 约翰