【问题标题】:Error model language错误模型语言
【发布时间】:2012-09-13 10:10:01
【问题描述】:

我必须编写一个正确的名称拼写检查器。

我写了第一部分,语言模型检查器,但现在是最难的部分, 错误模型 P(W|C),即当作者指 C 时,W 被输入文本的概率。

为了解决这个问题,我想出了最简单的解决方案,算法选择 Damerau-Levenshtein 距离最小的单词,如果有多个名字,算法必须选择最常见的名字。

该应用程序运行正常,但我想对其进行改进。我想介绍一种从最常见的错误中学习的电子学习机器算法。 我必须实现一个机器学习算法。

所以我开始考虑如何做到这一点。

进入错误模型语言是否有可能找到一些模式:

  • 单词中间的字母拼写错误是最常见的,
  • 一个元音与另一个元音拼错更容易,
  • ……以此类推……

我想将所有这些作为事实来实现。

另外,这个算法可能会用于文本识别或语音识别,所以我必须考虑:

  • 同音字错误,例如 f 拼错 v 比 q 拼错 v 更常见
  • 排版错误,例如将 i 拼错为 l 甚至 find !词内。

为了更好地解释问题:我们可以想象这两种情况。

  • 第一个是使用算法从扫描的纸张中读取数据时
  • 另一种是算法用于语音识别时。

在第一种情况下,诸如发音相似的字母等错误的可能性更大,而在第二种情况下,印刷错误的可能性更大。 由于我不知道我的算法将在哪个场景下工作,我应该实现一个动态适应场景的算法,我的意思是如果出现错误,例如 g!useppe 可能性是 giuseppe (o.4) guseppe (o.6) 该算法必须选择第一个,因为 !与 i 相似,我发现了很多类似的错误。

我认为解决方案是从错误中学习的机器学习算法。

第一个问题,我是否清楚地解释了我的问题?
如果是这样,哪种算法符合我的要求?

我在人工智能和机器学习方面的经验有限。

【问题讨论】:

  • 从哪里获得训练数据?
  • 我有一个带有一些错误的小文件,但我认为它们不足以教会机器如何检测错误。但是,当应用程序启动时,它会在内存中加载一个包含所有名称及其分布百分比的字典。没有训练数据,我应该把我之前说过的所有事情都作为规则来执行?
  • 嗯,没有训练数据的统计数据很棘手,但我认为应该有一些包含常见拼写错误的数据集免费提供。
  • 这里是spelling error corpus,其实是引用自Peter Norvig's article

标签: machine-learning artificial-intelligence spell-checking


【解决方案1】:

很难选择一个最有可能正确的拼写,这就是为什么大多数拼写检查器提供多种选项可供选择的原因。如果可能的话,我建议你也这样做。一个人甚至可以在没有任何统计学习的情况下逃脱——只需向用户提供所有可能的有效名称,以便它与输入之间的编辑距离低于某个给定值 N。

【讨论】:

    猜你喜欢
    • 2012-06-24
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 2019-01-02
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多