【发布时间】:2015-03-20 07:44:18
【问题描述】:
我在 opennlp 文档页面 (http://opennlp.apache.org/documentation/manual/opennlp.html) 中遇到了这个类 TokenizerME。我不明白它是如何计算概率的。我用不同的输入测试了它,仍然不明白。有人可以帮我理解它背后的算法吗? 我写了这个示例代码
public void tokenizerDemo(){
try {
InputStream modelIn = new FileInputStream("en-token.bin");
TokenizerModel model = new TokenizerModel(modelIn);
Tokenizer tokenizer = new TokenizerME(model);
String tokens[] = tokenizer.tokenize("This is is book");
for(String t:tokens){
System.out.println("Token : "+t);
}
double tokenProbs[] = ((TokenizerME) tokenizer).getTokenProbabilities();
for(double tP : tokenProbs){
System.out.println("Token Prob : "+tP);
}
}
catch (IOException e) {
e.printStackTrace();
}
}
我得到了这个输出
令牌:这个
令牌:是
令牌:是
代币:书
代币概率:1.0
代币概率:1.0
代币概率:1.0
代币概率:1.0
我希望标记“is”被计算两次,并且它的概率应该略高于其他标记。困惑。
【问题讨论】:
标签: java machine-learning nlp tokenize opennlp