基于B-gram句子概率计算实现

基于B-gram句子概率计算实现

概述

该“句子出现概率计算”基于B-gram算法,若不了解请自行百度。

如果急于使用,请下载笔者已经训练好的模型文件(model.txt,置于项目根目录);如果想自行训练,可以使用语料库(千万级巨型汉语词库);下面是下载地址:

项目链接:ProbabilityOfSentence

语料链接:https://pan.baidu.com/s/1c3WWoxi 密码:uypd

由于笔者所使用的语料库是基于词语的,所以对于词语的计算效果更佳,但是常规句子的计算可能并不理想,建议自行寻找语料库进行训练。

说明

输入为文本文件(一句一行或者一段一行),支持批量语料输入,可以多次或者单次调用addCorpus方法进行设置。

训练好之后会自行保存模型文件(命名为“model.txt”)到项目根目录。如果不配置输入语料且根目录保存有模型文件,则会直接导入模型文件。

B-gram采用的平滑处理手段是“add one smoothing”,但是并非真的加一,可以加一个大于0小于1的数,该参数使用setAddOne方法进行设置。

最后使用goIntoEffect方法让所有设置生效。

使用probability方法计算句子的概率,该方法可选的第二个参数len表示进行平均计算的字符长度,即每len个连续字符计算一次,之后取平均。

// 使用语料库进行训练计算
ProbabilityOfSentence prob = new ProbabilityOfSentence()
        .addCorpus("千万级巨型汉语词库/data")
        .setAddOne(Math.pow(10, -10))
        .goIntoEffect();
System.out.println(prob.probability(sentence));
System.out.println(prob.probability(sentence, 6));
// 导入模型文件进行计算
ProbabilityOfSentence prob = new ProbabilityOfSentence()
        .goIntoEffect();
System.out.println(prob.probability(sentence));
System.out.println(prob.probability(sentence, 6));

猜你喜欢

转载自blog.csdn.net/Subson/article/details/79192919