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