Skip to content

由java实现的n-gram语言模型,并实现两个应用场景: 1.短文本纠错(搜索场景)2.索引分词阶段的消歧功能

Notifications You must be signed in to change notification settings

SenLeeLee/ngram-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 

Repository files navigation

ngram-java

由java实现的n-gram语言模型(复刻C++版kenLM-ngram实现逻辑)(对于垂直领域效果比较好,大规模文档未测试过),并且实现两种应用场景:短文本纠错(搜索场景);索引分词阶段的消歧功能。

优点:

1.实现短文本(2~5个字)的纠错且基于各领域自定义数据集,对于垂直领域效果更好,实践应用准确率达90%。

2.索引分词阶段,分词消歧功能准确率待评估

实例如下:

纠错功能:
输入:角膜机、角膜鸡
输出:角磨机

索引分词消歧功能:(输出结果越小、分词结果越合理;需要自定义阈值取topN的分词结果作为最终分词结果)
输入:白酒、精品;白、酒精、品
输出:
白酒、精品 = 0.001941
白、酒精、品 = 0.03424

输入:水果、味;水、果味
输出:
水果、味 = 0.02367
水、果味 = 0.01953

以上为无监督统计算法,成本低,效果好。想要更进一步的准确率的提升需要更多的优化,如下:

纠错优化方法:对长词接入深度学习算法,如Seq2Seq,采用翻译的方式来对长文本实现纠错。短文本不采用该方式是因为短文本所包含的上下文信息太少,所以效果比较差。

索引分词优化方法:人工自定义阈值,改为有监督训练,标注数据,使用线性模型划分最佳分割线,用于topN的取值逻辑。

About

由java实现的n-gram语言模型,并实现两个应用场景: 1.短文本纠错(搜索场景)2.索引分词阶段的消歧功能

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published