由java实现的n-gram语言模型(复刻C++版kenLM-ngram实现逻辑)(对于垂直领域效果比较好,大规模文档未测试过),并且实现两种应用场景:短文本纠错(搜索场景);索引分词阶段的消歧功能。
优点:
1.实现短文本(2~5个字)的纠错且基于各领域自定义数据集,对于垂直领域效果更好,实践应用准确率达90%。
2.索引分词阶段,分词消歧功能准确率待评估
实例如下:
纠错功能:
输入:角膜机、角膜鸡
输出:角磨机
索引分词消歧功能:(输出结果越小、分词结果越合理;需要自定义阈值取topN的分词结果作为最终分词结果)
输入:白酒、精品;白、酒精、品
输出:
白酒、精品 = 0.001941
白、酒精、品 = 0.03424
输入:水果、味;水、果味
输出:
水果、味 = 0.02367
水、果味 = 0.01953
以上为无监督统计算法,成本低,效果好。想要更进一步的准确率的提升需要更多的优化,如下:
纠错优化方法:对长词接入深度学习算法,如Seq2Seq,采用翻译的方式来对长文本实现纠错。短文本不采用该方式是因为短文本所包含的上下文信息太少,所以效果比较差。
索引分词优化方法:人工自定义阈值,改为有监督训练,标注数据,使用线性模型划分最佳分割线,用于topN的取值逻辑。