我相信你们中的一些人会看到Google Wave的演示。我特别想知道拼写检查技术。一个拼写检查器是多么具有革命性,它可以通过找出一个单词在句子中出现在上下文中的位置来提出这些建议?
我之前没有见过这种技术,但是其他地方有这样的例子吗? 如果有,那么代码示例和文献的运作是什么?
答案 0 :(得分:12)
我的2美分。鉴于translate.google.com是一个统计机器翻译引擎和来自A Halevy,P Norvig(Google研究总监)的“数据的不合理有效性”。 F Pereira:我做出假设(下注)这是一个统计驱动的拼写检查器。
它是如何工作的:你收集一个非常大的语言语料库,你想要拼写检查。您将此语料库存储为适应数据结构中的短语表(suffix arrays,例如,如果必须计算n-grams子集),以跟踪计数(估计的概率)n的数量-grams。
例如,如果您的语料库仅由以下组成:
I had bean soup last diner.
从此条目中,您将生成以下bi-gram(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中,谷歌将它用于translate.google.com,为什么不这样做?它比统计机器翻译更容易。)
例如:你输入
I had been soup
并且在短语表中有一个
had bean soup
三元组的概率比你输入的几率要高得多!实际上,你只需要改变一个单词(这是一个“不那么遥远的”三元组)来获得具有更高概率的三元组。应该有一个处理权衡距离/概率的评估函数。这个距离甚至可以用字符来计算:我们正在进行拼写检查,而不是机器翻译。
这只是我的假设性意见。 ;)
答案 1 :(得分:1)
您还应该观看Google Wave小组的Casey Whitelaw的官方视频,其中介绍了所使用的技术:http://www.youtube.com/watch?v=Sx3Fpw0XCXk
答案 2 :(得分:1)
通过深入自然语言处理,您可以了解有关此类主题的所有信息。你甚至可以像对一串给定单词之后的下一个单词进行统计猜测一样深入。
如果您对这样的话题感兴趣,我强烈建议使用完全用python编写的NLTK(自然语言工具包)。这是一项非常广泛的工作,拥有许多工具和非常好的文档。
答案 3 :(得分:1)
关于这个问题有很多论文。这是一些很好的资源
这不使用上下文敏感性,但它是构建的良好基础 http://norvig.com/spell-correct.html
对于更强大的拼写检查程序,这可能是一个很好且易于理解的视图 http://acl.ldc.upenn.edu/acl2004/emnlp/pdf/Cucerzan.pdf
从这里你可以深入了解细节。我建议使用谷歌学者并查阅上面文件中的参考文献,并搜索“拼写修正”