【问题标题】:fix misspelled words in a corpus without dictionary在没有字典的语料库中修复拼写错误的单词
【发布时间】:2019-06-06 16:09:49
【问题描述】:

我们有人类之间的对话历史(任何语言,任何词汇),所以有很多拼写错误:

"hellobb do u hav skip?" => "hello baby, do you have skype?"

在针对该数据集运行深度学习任务(查找同义词等)之前,我想修复这些错误。

这是个好主意吗?我从来没有处理过质量如此差的数据。想知道是否有“神奇的解决方案”来实现这一目标。

其他我打算使用:

  • 词嵌入 (word2vec) 检查好词和坏词是否相似
  • 单词之间的距离函数
  • 如果 wordA 不太知名 wordB 然后 fix(wordA) = wordB

【问题讨论】:

    标签: deep-learning nlp nltk text-mining


    【解决方案1】:

    目前没有神奇的解决方案来保证修复文本中的所有拼写错误,但您可以考虑以下一些可能的选择:

    • 基于字典的方法。在这种情况下,我发现Hunspell 非常方便。它使用语言建模和 Levenshtein 距离来建议正确的拼写。它适用于许多自然和编程语言。尽管它是一种基于字典的方法,但它优于许多复杂的方法。它用于绝大多数文字处理应用程序。

    • 统计和传统方法。另一种可能的解决方案是开发您自己的统计模型,例如language modeling。在字符级别和单词级别的大型语料库上训练语言建模可以在文本中发现许多拼写错误。许多语音识别和搜索引擎都使用语言建模来修复拼写错误。

    • 深度学习方法。如果您查看NLPProgress.com,大多数state-of-the-art research 使用seq2seq 模型来攻击语法错误问题。这些模型背后的主要直觉是在成对的句子上训练神经网络,该网络学习如何修复语法错误。这些方法需要相当多的成对句子才能给出可靠的结果。如果可用的语料库不适合您的需要,您可以生成自己的拼写错误,例如通过替换文本中的一些标记。

    【讨论】:

    • 我试过 hunspell,但它一点也不聪明! (h.suggest("helo") gives ['hole', 'help', 'helot', 'hello') 而在我的数据集中我得到了很多你好。也许它错过了一种等级功能来覆盖这种行为。我将看看您提供的其他非常有趣的解决方案,因为我不是数据科学家,而是更多的开发人员,对我来说有点难:/谢谢。
    • 虽然不是很聪明,但结合其他一些技术会产生可喜的结果。
    猜你喜欢
    • 2017-10-19
    • 1970-01-01
    • 2018-12-07
    • 2016-05-14
    • 1970-01-01
    • 2018-03-31
    • 2012-11-12
    • 2010-10-16
    相关资源
    最近更新 更多