2

如果我有给定的文本(无论是长文本还是短文本),您通常使用哪些方法检测它是用哪种语言编写的?

很清楚:

  • 你需要一个训练语料库来训练你使用的模型(例如神经网络,如果使用的话)

我最容易想到的是:

  • 检查文本中使用的字符(例如,平假名仅用于日语,元音变音可能仅用于欧洲语言,ç 用于法语、土耳其语……)
  • 将检查增加到两个或三个字母对以查找语言的特定组合
  • 查找字典以检查哪些单词出现在哪种语言中(可能只有没有词干,因为词干取决于语言)

但我想还有更好的方法可以走。我不是在寻找现有的项目(这些问题已经得到解答),而是在寻找像 Hidden-Markov-Models、Neural Networks 之类的方法……任何可能用于此任务的方法。

4

2 回答 2

2

在我正在开发的产品中,我们使用基于字典的方法。计算训练语料库中所有单词的第一个相对概率,并将其存储为模型。

然后逐字处理输入文本以查看特定模型是否提供最佳匹配(比其他模型好得多)。

在某些情况下,所有模型都提供了非常糟糕的匹配。

几个有趣的点:

  1. 由于我们正在使用社交媒体,因此尝试了标准化和非标准化匹配(在这种情况下,标准化是从符号中删除变音符号)。非标准化匹配具有更高的权重
  2. 这种方法在非常短的短语(1-2 个单词)上效果不佳,特别是当这些单词在少数语言中存在时,这是少数欧洲语言的情况

此外,为了更好地检测,我们正在考虑添加您所描述的每个字符模型(某些语言具有某些独特的字符)

顺便说一句,我们使用 ICU 库来拆分单词。适用于欧洲和东方语言(目前我们支持中文)

于 2012-05-17T13:20:52.637 回答
0

检查Cavnar 和 Trenkle算法。

于 2012-05-18T17:16:30.500 回答