1

我试图弄清楚如何训练 stanford
LexicalizedParser ( edu.stanford.nlp.parser.lexparser.LexicalizedParser ) 将新名词合并到其词典中。

起初,我的目标是采用现有模型并对其进行微调,而不是从大量训练示例中创建一个全新的模型。

这个问题的答案表明这是不可能的 > 如何向斯坦福 POS-Tagger 的训练模型添加更多标记词?

希望那里有人可以让我走上正确的轨道,了解如何做到这一点。

作为我想做的一个具体例子,假设我有“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)

我犹豫要不要尝试一下,因为要正确选择选项似乎很棘手。doco 说:
解析器的选项在训练和测试(解析)时必须相同,以便解析器正常工作

所以我可能需要有关如何提取用于 edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz 的选项的指导,也许它是

        edu.stanford.nlp.parser.lexparser.EnglishTreebankParserParams  ?

另外,也许我想将 researchgate 添加为我的 extraTaggedWords 之一?

我觉得我走在正确的轨道上,但希望在进入老鼠洞之前得到一些建议。

提前致谢 !

chris
4

1 回答 1

1

我发布到 stanford parser 邮件列表,我收到了 John Bauer 的答复(谢谢,John!)

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

于 2013-01-23T22:51:20.703 回答