2

我相信你们中的很多人都看过 Google Wave 演示。我特别想知道拼写检查技术。通过找出单词在句子中的上下文出现的位置来提出这些建议的拼写检查器有多大的革命性?

我以前没有见过这种技术,但其他地方有这种技术的例子吗?
如果是这样,它的工作原理是否有代码示例和文献?

4

4 回答 4

12

我的 2 美分。鉴于 translate.google.com 是一个统计机器翻译引擎和来自 A Halevy、P Norvig(谷歌研究总监)和 F Pereira 的“数据的不合理有效性”这一事实:我假设(打赌)这是一个统计驱动的拼写检查器

它是如何工作的:你收集了一个非常大的你想要拼写检查的语言语料库。您将此语料库作为短语表存储在适应的数据结构中(例如,如果您必须计算n-gram子集,则使用后缀数组)来跟踪 n-gram 的计数(因此估计的概率)。

例如,如果您的语料库仅包含以下内容:

I had bean soup last diner.

从此条目中,您将生成以下二元组(2 个单词的集合):

I had, had bean, bean soup, soup last, last diner

和三元组(3 个词组):

I had bean, had bean soup, bean soup last, soup last diner 

但是它们将通过统计相关性测试进行修剪,例如:我们可以假设三元组

I had bean 

将消失的短语表。

现在,拼写检查只需要查看这个大的短语表并检查“概率”。(您需要一个良好的基础架构来将这些短语表存储在有效的数据结构和 RAM 中,Google 为 translate.google.com 提供了它,为什么不这样做呢?它比统计机器翻译更容易。)

例如:你输入

I had been soup

在短语表中有一个

had bean soup

tri-gram 的概率比您刚刚输入的要高得多!事实上,你只需要改变一个词(这是一个“不那么遥远”的三元组)就可以得到一个概率更高的三元组。应该有一个评估函数来处理权衡距离/概率。这个距离甚至可以用字符来计算:我们是在做拼写检查,而不是机器翻译。

这只是我的假设性意见。;)

于 2009-06-08T14:08:25.777 回答
1

有很多关于这个主题的论文。这里有一些很好的资源

这不使用上下文敏感性,但它是从 http://norvig.com/spell-correct.html构建的良好基础

这可能是更强大的拼写检查器的一个很好且易于理解的视图 http://acl.ldc.upenn.edu/acl2004/emnlp/pdf/Cucerzan.pdf

从这里你可以深入了解细节。我建议使用谷歌学者并查找上述论文中的参考资料,并搜索“拼写更正”

于 2009-12-10T22:04:30.023 回答
1

您还应该观看 Google Wave 团队的 Casey Whitelaw 的官方视频,该视频描述了所使用的技术:http ://www.youtube.com/watch?v=Sx3Fpw0XCXk

于 2009-06-17T20:14:35.237 回答
1

您可以通过深入研究自然语言处理来了解有关此类主题的所有信息。您甚至可以像统计猜测一样深入地猜测在一串给定单词之后接下来会出现哪个单词。

如果您对这样的主题感兴趣,我强烈建议您使用完全用 python 编写的 NLTK(自然语言工具包)。这是一项非常广泛的工作,拥有许多工具和非常好的文档。

于 2009-06-17T20:18:08.617 回答