【问题标题】:finding token probabilies in a text in nlp在 nlp 的文本中查找标记概率
【发布时间】: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


    【解决方案1】:

    分词器概率与分词器在识别分词时的置信度相关:根据分词器模型,此上下文中的字符串是否为分词器。字符串开头的“this”很可能是英语的标记,而“Thi”后面有“s”则不是。

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 2019-08-06
      • 1970-01-01
      • 2012-09-06
      • 2021-02-14
      • 2015-06-25
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      相关资源
      最近更新 更多