如何训练stanford LexicalizedParser将新单词识别为名词?

时间:2013-01-23 05:24:26

标签: parsing nlp stanford-nlp

我想弄清楚如何训练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

1 个答案:

答案 0 :(得分:1)

我发布了stanford解析器邮件列表,我收到了John Bauer的回复(谢谢,John!)

John Bauer 下午2:09(39分钟前) 对我来说,解析器用户 不幸的是,您需要从一开始就开始训练。 无法扩展当前的解析器模型。 这个功能在“列表”上,但它在靠近后面的地方,所以不要屏住呼吸...... 约翰