【发布时间】:2013-01-23 05:24:26
【问题描述】:
我正在尝试弄清楚如何训练 stanford LexicalizedParser
( edu.stanford.nlp.parser.lexparser.LexicalizedParser ) 将新名词合并到其词典中。
起初我的目标是采用现有模型并稍微调整它,而不是创建一个全新的模型 来自大量的训练示例。
这个问题的答案表明这是不可能的> How can I add more tagged words to the Stanford POS-Tagger's trained models?
希望有人可以让我走上正确的轨道,了解如何做到这一点。
作为我想做的一个具体例子,假设我有“researchgate”这个词,我想在解析时将其视为名词 句子。目前,“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)
我犹豫要不要尝试这个,因为要正确选择选项似乎很棘手。
医生说:
解析器的选项在训练和测试(解析)时必须相同
为了让解析器正常工作
所以我可能需要有关如何提取用于 edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz 也许是
edu.stanford.nlp.parser.lexparser.EnglishTreebankParserParams ?
另外,也许我想将 researchgate 添加为我的 extraTaggedWords 之一?
我觉得我在正确的轨道上,但希望在下降之前得到一些建议 进老鼠洞。
提前致谢!
chris
【问题讨论】:
标签: parsing nlp stanford-nlp