【发布时间】: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