スタンフォードLexicalizedParser(edu.stanford.nlp.parser.lexparser.LexicalizedParser)をトレーニングして、新しい名詞をそのレキシコンに組み込む方法を理解しようとしています。
最初の私の目標は、膨大なトレーニング例から新しいモデルを作成するのではなく、既存のモデルを少し調整することでした。
この質問への答えは、それが不可能であることを示唆しています> スタンフォードPOS-タガーの訓練されたモデルにタグ付きの単語を追加するにはどうすればよいですか?
うまくいけば、そこにいる誰かがこれを行う方法について私を正しい軌道に乗せることができます。
私がやりたいことの具体例として、文を解析するときに名詞として扱われたい「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には、試してみようと考えている有望な方法が1つあるようです...>
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 ?
また、extraTaggedWordsの1つとしてresearchgateを追加したいですか?
私は正しい方向に進んでいると感じていますが、ネズミの穴に降りる前にアドバイスをもらいたいと思っていました。
前もって感謝します !
chris