Java 在nlp中查找文本中的标记概率
我在opennlp文档页()中遇到了这个类TokenizerME。我不明白它是如何计算概率的。我用不同的输入测试了它,但仍然不理解。有人能帮我理解它背后的算法吗? 我编写了这个示例代码Java 在nlp中查找文本中的标记概率,java,machine-learning,nlp,tokenize,opennlp,Java,Machine Learning,Nlp,Tokenize,Opennlp,我在opennlp文档页()中遇到了这个类TokenizerME。我不明白它是如何计算概率的。我用不同的输入测试了它,但仍然不理解。有人能帮我理解它背后的算法吗? 我编写了这个示例代码 public void tokenizerDemo(){ try { InputStream modelIn = new FileInputStream("en-token.bin"); TokenizerModel model = new TokenizerModel(m
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”被计数两次,其概率应该比其他令牌稍高。混淆。标记器概率与标记器识别标记的信心有关:根据标记器模型,此上下文中的字符串是否为标记。对于英语来说,字符串开头带有空格的“This”很可能是一个代词,而后面带有“s”的“Thi”则不是 概率与特定标记内容的出现频率无关,而与此字符序列是否为可能的标记相关。字符串“is”在英语中很容易标记,因为“is”是一个常用词,空格是很好的标记边界。就这样 如果你对计算n-gram概率感兴趣,你应该看看语言模型。(显然,您仍然需要首先标记文本。)