我正在实施拼写检查器的变体。在采取各种路线(为了提高时间效率)之后,我计划尝试一个涉及使用 n-gram 模型的组件。所以基本上我想修剪可能的候选人列表以进行进一步处理。你们会不会碰巧知道使用一个 n 值(比如 2)是否会比其他值(比如 3)更好?
问问题
394 次
3 回答
0
当您说 n-gram 时,我会假设您是在谈论单词中的字母,而不是句子中的单词(这可能是最常见的用法)。在这种情况下,我同意 Mark Rushakoff 的观点,因为您可以将候选列表修剪为包含多于或少于您所控制的单词 3-5 个字符的单词。
另一种选择是实现Levenshtein 算法来查找两个单词之间的编辑距离。这可以非常有效地完成:首先,仅通过检查您的修剪列表。其次,一旦编辑距离超过某种限制(例如3-5),通过提前结束单词的距离计算。
作为旁注,我不同意马克关于你应该忽略短词的观点,因为它们拼写错误的频率较低。大部分拼写错误的词都是短词(例如“and”-“nad”、“the”-“teh”、“you”-“yuo”),仅仅是因为它们更频繁。
希望这可以帮助!
于 2012-10-30T17:48:28.750 回答
0
根据这个网站,英文的平均字长是 5.10 个字母。我会假设人们更容易拼错较长的单词而不是较短的单词,所以如果可能的话,我倾向于向前走大约 3-5 个字母,作为一种直觉。
于 2009-09-11T21:40:50.867 回答
0
如果你有足够的文本进行训练,3 是一个好的开始。另一方面,这样的模型会非常大,并且会使您的拼写检查器膨胀。
您还可以根据perplexity比较不同的设置。
于 2016-05-15T17:55:34.917 回答