2016-12-03 3 views

答えて

0

あなたの説明はあまり正確ではないので、質問を正しく解釈するかどうかはわかりません。 corenlpがトークン化をやっていなくてもパーサーにトークンのリストを送りたいと思うのですか? もしそうなら、あなたが使っているパーサーを知ることは有益でしょう。しかし両方で、あなたはそれにトークンのリストを送ることができ、corenlpはあなたのトークン化に入り込むことはありません。私は中国の資源で働いていませんが、次は(すでに前にトークン化を行っている場合は、適切なトークン化における空白の結果の分割)あなたを助けることができる:

String sentence = "I can't do that ."; 
    ArrayList<HasWord> hwl = new ArrayList<HasWord>(); 
    String[] tokens = sentence.split(" "); 
    for (String t : tokens){ 
    HasWord hw = new Word(); 
    hw.setWord(t); 
    hwl.add(hw); 
    } 
    LexicalizedParser lexParser = LexicalizedParser.loadModel("<path to chinese lex parsing here>","-maxLength", "70"); 
    Tree cTree = lexParser.parse(hwl); 
    System.out.println("c tree:" + cTree); 


    DependencyParser parser = DependencyParser.loadFromModelFile("<chinese model for dep parsing here>"); 
    MaxentTagger tagger = new MaxentTagger("<path to your tagger file goes here"); 
    List<TaggedWord> tagged = tagger.tagSentence(hwl); 
    GrammaticalStructure gs = parser.predict(tagged); 
    System.out.println("dep tree:" + gs.typedDependencies()); 

が書かれている標準エラー出力ラインを削除し、この結果は次のようになります。

c tree:(ROOT (S (MPN (FM I) (FM can't)) (VVFIN do) (ADJD that) ($. .))) 
dep tree:[nsubj(can't-2, I-1), root(ROOT-0, can't-2), xcomp(can't-2, do-3), dobj(do-3, that-4), punct(can't-2, .-5)] 

これが役に立ちます。

+0

これは素晴らしい答えですが、私はコマンドラインコマンドを使ってこの問題を解決しました: 'java -Xmx2g -cp" ../parsing/* "edu.stanford.nlp.parser.lexparser.LexicalizedParser -sentences newline -outputFormat typedDependencies ../parsing/xinhuaFactored.ser.gz ./cpbdev.out> cpbdev.out.parsing' –

+0

そして、私はそれらのAPIには本当に難しいと思いますが、どうやってそれを学びましたか? javadocを読んで? –

+0

ああ、あなたはコマンドラインからそれを使用しています、そういう意味があります。一般的に、私はcorenlpからのAPIはかなり良いと書かれていると思いますが、そこにはあなたが見つけなければならない隠されたものがいくつかあります。ちょうどそれと一緒に遊んで理解するのに役立ちます:) – Igor

関連する問題