Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在nlp中查找文本中的标记概率_Java_Machine Learning_Nlp_Tokenize_Opennlp - Fatal编程技术网

Java 在nlp中查找文本中的标记概率

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

我在opennlp文档页()中遇到了这个类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”被计数两次,其概率应该比其他令牌稍高。混淆。

标记器概率与标记器识别标记的信心有关:根据标记器模型,此上下文中的字符串是否为标记。对于英语来说,字符串开头带有空格的“This”很可能是一个代词,而后面带有“s”的“Thi”则不是

概率与特定标记内容的出现频率无关,而与此字符序列是否为可能的标记相关。字符串“is”在英语中很容易标记,因为“is”是一个常用词,空格是很好的标记边界。就这样

如果你对计算n-gram概率感兴趣,你应该看看语言模型。(显然,您仍然需要首先标记文本。)