首 页

语言检测工具 - Language Detection Tool

一、基本原理

语言检测本质上是一个分类问题:给定一段文本,如何将它划分到正确的语言类别中。对于这样一个问题,首先需要弄清楚:什么特征可以区分两种语言?显然,不同的语言采用不同的字符,并且不同的语言字符的排列具有不同的特征。

通过对大量不同语言的文本进行统计分析,记录下各种语言不同字符排列的频率,即得到一个统计语言模型。将被检测文本中字符排列的频率与模型中的频率进行比对,频率最接近的语言即为被检测文本的语言。

二、关键技术

记录长度为N的字符串的频率分布的统计语言模型称为N-gram语言模型。最常用的语言模型为Tri-gram模型,该模型记录长度为3的字符串频率分布。

如何保存统计语言模型?

我采用了一个256叉树来保存训练得到的Tri-gram模型。该树结构分为4层,第0层为根节点,第3层的叶子节点记录了长度为3的字符串的频率。在构建Tri-gram模型时,向该树插入节点。在构建结束后,将该树以文本的形式保存。在检测语言时,从文本中读取Tri-gram模型。

如何计算频率分布的相似性?

最常用的相似性的度量为余弦相似度。然而,在实际的实验中,我发现采用余弦相似度得到的检测准确率并不高。因此,我采用了更为简单的方法来衡量被检测文本与语言模型的相似性,即计算被检测文本中Tri-gram出现在语言模型中的比例。

三、项目简介

该语言检测工具包括模型训练和语言检测两部分。

这里是该语言检测工具的源码。

点击查看评论

Blog

Opinion

Project