Nlp 使用什么方法来识别文本所用的语言?

Nlp 使用什么方法来识别文本所用的语言?,nlp,Nlp,如果我有一个给定的文本(长或短),你通常用什么方法来检测它是用哪种语言写的 显然: 您需要一个训练语料库来训练您使用的模型(例如,如果使用了神经网络) 我想到的最简单的事情是: 检查文本中使用的字符(例如平假名仅在日语中使用,Umlauts可能仅在欧洲语言中使用,ç在法语、土耳其语等中使用) 将检查增加到两个或三个字母对,以查找语言的特定组合 查找字典以检查哪些单词出现在哪种语言中(可能只有不带词干,因为词干取决于语言) 但我想还有更好的办法。我不是在搜索现有的项目(这些问题已经得到了回

如果我有一个给定的文本(长或短),你通常用什么方法来检测它是用哪种语言写的

显然:

  • 您需要一个训练语料库来训练您使用的模型(例如,如果使用了神经网络)
我想到的最简单的事情是:

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

但我想还有更好的办法。我不是在搜索现有的项目(这些问题已经得到了回答),而是在搜索隐马尔可夫模型、神经网络等方法,无论这些方法可以用于此任务。

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

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

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

有几个有趣的地方:

  • 在我们使用社交媒体时,我们尝试了规范化和非规范化匹配(在这种情况下,规范化是从符号中删除变音符号)。非标准化匹配具有更高的权重
  • 这种方法在非常短的短语(1-2个单词)上效果很差,特别是当这些单词出现在少数语言中时,这是少数欧洲语言的情况
  • 此外,为了更好地检测,我们正在考虑添加您所描述的每个字符模型(某些语言具有某些唯一字符)

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

    检查Cavnar和Trenkle算法。

    在这种情况下,有一个(不可接受的)答案提供了更详细的信息,但这类问题的常见答案是:“您可以在python中使用项目A或在C++中使用项目B”,但没有给出一般使用的方法的任何细节(请参阅我的最后一句话)。我很确定,在这方面已经多次提到了。