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

标签 nlp

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

很明显:

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

我想到的最简单的事情是:

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

但我想还有更好的方法可以走。我不是在寻找现有的项目(这些问题已经得到解答),而是在寻找诸如隐马尔可夫模型、神经网络之类的方法……任何可能用于此任务的方法。

最佳答案

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

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

在某些情况下,所有模型的匹配度都很差。

一些有趣的点:

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

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

顺便说一句,我们使用 ICU 库来分割单词。对于欧洲和东方语言效果相当好(目前我们支持中文)

关于nlp - 使用什么方法来识别文本所用的语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10634998/

相关文章:

parsing - 如何将文本文件转换为麦芽解析器的 CoNLL 格式?

nlp - 自然英语单词

python - 在 Python 中将 unicode 表情符号转换为 ascii 表情符号

python - Python 中的可视化和聚类

python - NLTK 和 Lucene 之间词干分析器的兼容性

python - 来自 NLTK、Gensim、Scikit Learn 的 API 调用

nlp - 得到单词的基本形式?

python - 直接从打包的 tar.gz 文件加载 spacy 模型

algorithm - 从非结构化年鉴文本中提取人名

keras - keras-tokenizer 是否执行词形还原和词干提取的任务?