如何对一种语言进行拼写更正,同时也更正其他语言的一些单词

数据挖掘 机器学习 深度学习
2022-03-04 06:02:19

我想为葡萄牙语做拼写更正,特别是餐厅机器人。问题是食物名称并不总是葡萄牙语,因此最有可能需要更正,因为用户并不总是知道如何正确拼写。

我想到了几件事。例如:

  • 用葡萄牙语单词+拼写错误的食物词训练模型,但是很难找到这些食物词
  • 为几种不同的语言训练模型(但我猜它会让人感到困惑,实际上会纠正很多错误的事情)。
  • 用葡萄牙语词训练模型,对于食物词,使用一些东西来挑选用户写的词,并尝试将它们逼近到食物词列表。(会不会很慢?)

对于这个问题,有什么好的解决方案可以快速用于大量请求?

3个回答

有很多方法可以构建拼写校正器。最简单的一种是:

  1. 检测不正确的单词
  2. 生成候选建议
  3. 对候选替代品进行评分和排名

为了检测不正确的单词,一个简化的假设是任何不是字典的单词都是拼写错误。否则,您必须构建一个单独的模型来检测一个单词是否是基于当前上下文的潜在拼写错误。

要生成候选词,您需要找到与错误词相似的字典词。这需要定义“相似”,通常相似是通过编辑距离来衡量的(例如,删除、转置、替换或插入单个字符)。

对于评分和排名,候选词的概率由语言模型和通道模型加权语言模型单词在当前上下文中出现的可能性进行加权。通道模型反映是否发生错误取决于单词的传输方式(例如,完整的计算机键盘错误与手机错误不同)。

对于您的示例,您需要构建一个包含所有可能单词的自定义词典和一个反映自定义词典单词出现频率的语料库。如果可能,构建常见错误的错误模型。

Peter Norvig 在这里进行了更详细的介绍。

稍后您可以添加深度学习方法,但最好从需要较少数据的更简单方法开始。

你可以用无监督的方法解决这个问题。

  1. 使用所有食物葡萄牙语单词构建您的数据分布
  2. 将您的数据点公式化为字符序列,rnn 有效性
  3. 将这些单词转换为其音素形式,请参阅文本到音素转换器
  4. 使用去噪自动编码器,而不是使用随机高斯作为您的腐败过程。
    由于问题是离散的,因此您可以使用一些启发式方法通过将随机音素替换为最可能相似的其他音素来破坏每个单词。

你必须找到一些自动化的方法来解决这个问题,从客户历史数据中获得一些见解,并查看他们的单词拼写错误。

至于架构,vanilla RNN 很好。查看更多使用 TensorFlow 创建拼写检查器

简而言之:它被表述为一个 seq2seq 问题,源是拼写错误的单词,而目标是正确的单词。DAE 将在随机损坏的输入上进行训练,因此它必须学会猜测缺失信息的分布(重建干净的原始输入)

您可以将其他语言的菜单与葡萄牙语单词一起用作语料库的一部分。我将专注于为语料库提供正确拼写的文本。然后,您可以使用 Levenshtein distance 之类的方法为您的语料库中从未见过的单词(暗示拼写错误或缺失)提供候选词。