その通りです。ANTLRはこのようなものにはあまり適していません。
私はNLTKの経験はありませんが、Jythonを介して「重い物を持ち上げる」ことを試みましたが、うまくいきませんでした。
スタンフォード自然言語処理グループには、優れたNLパーサーがあります。つまり、私はそれについて良いことを聞いたことがあります。私は決してNLPの専門家ではありません。
次のような簡単な英語の文を解析する方法は次の"I am currently writing an NLP project in Java that tags and parses text."
とおりです。
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.objectbank.*;
import edu.stanford.nlp.parser.lexparser.*;
import edu.stanford.nlp.process.*;
import edu.stanford.nlp.trees.*;
import java.io.*;
import java.util.*;
public class StanfordParserDemo {
public static void main(String[] args) throws Exception {
// englishPCFG.ser.gz is in the download.
LexicalizedParser parser = new LexicalizedParser("/path/to/englishPCFG.ser.gz");
TokenizerFactory<Word> tokenFactory = PTBTokenizer.factory(false, new WordTokenFactory());
String sentence = "I am currently writing an NLP project in Java that tags and parses text.";
System.out.println("Sentence: " + sentence);
List<Word> words = tokenFactory.getTokenizer(new StringReader(sentence)).tokenize();
parser.parse(words);
Tree tree = parser.getBestParse();
TreePrint treePrinter = new TreePrint("penn,typedDependenciesCollapsed");
treePrinter.printTree(tree);
}
}
印刷するもの:
文:私は現在、テキストにタグを付けて解析するJavaでNLPプロジェクトを作成しています。
(根
(S
(NP(PRP I))
(VP(VBP am)
(ADVP(現在RB))
(VP(VBGライティング)
(NP(DT an)(NNP NLP)(NNプロジェクト))
(PP(IN in)
(NP(NN java)))
(SBAR(その中で)
(S
(NP(NNSタグ)
(CCおよび)
(NNS解析))
(VP(VBZテキスト)))))))
(。。)))
さまざまな言語のJARと文法はここからダウンロードできます。