如果我有给定的文本(长或短),您通常使用哪些方法来检测它是用哪种语言编写的?
很明显:
- 您需要一个训练语料库来训练您使用的模型(例如神经网络,如果使用的话)
我想到的最简单的事情是:
- 检查文本中使用的字符(例如,平假名仅在日语中使用,变音符号可能仅在欧洲语言中使用,ç 在法语、土耳其语等中使用)
- 将检查范围增加到两个或三个字母对,以查找某种语言的特定组合
- 查找字典以检查哪些单词出现在哪种语言中(可能只需要不进行词干提取,因为词干提取取决于语言)
但我想还有更好的方法可以走。我不是在寻找现有的项目(这些问题已经得到解答),而是在寻找诸如隐马尔可夫模型、神经网络之类的方法……任何可能用于此任务的方法。
最佳答案
在我正在开发的产品中,我们使用基于字典的方法。 首先计算训练语料库中所有单词的相对概率,并将其存储为模型。
然后逐字处理输入文本,以查看特定模型是否提供最佳匹配(比其他模型好得多)。
在某些情况下,所有模型的匹配度都很差。
一些有趣的点:
- 当我们使用社交媒体时,会尝试标准化和非标准化匹配(在这种情况下,标准化是从符号中删除变音符号)。非标准化匹配具有更高的权重
- 此方法对于非常短的短语(1-2 个单词)效果相当差,特别是当这些单词出现在少数语言中时(少数欧洲语言就是这种情况)
此外,为了更好地检测,我们正在考虑添加您所描述的每个字符模型(某些语言具有某些独特的字符)
顺便说一句,我们使用 ICU 库来分割单词。对于欧洲和东方语言效果相当好(目前我们支持中文)
关于nlp - 使用什么方法来识别文本所用的语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10634998/