说说拼写检查,spell checking
http://super-jiju.spaces.live.com/
Google的拼写检查做的很神奇,以一个相当高的准确率来判断你的输入是不是正确的;但是其中如何做的,谁也不清楚;
这篇文章http://www.norvig.com/spell-correct.html, 里面描述了一个简单的模型;
但是上面这个模型的准确率并不能十分满意,并且,对于未登录词,很难去检查它;
P(c) and P(w|c),都有很大的提升空间来做;
最为关键的是,他们忽略了上下文信息;
比 如“siao long bao”应该是“xiao long bao”,但是单独的“siao”却不能被检测出来;有人说,可以把“xiao long bao”作为一个词组存储起来,也就是上面那个C,但是整个算法的复杂度就会变得更高了;虽然Google提供了一个5-gram的语料库;
事实上,google 的spell checking做的也不是那么完美,下面有几个例子;
1. 单词没错,检查出有错;
“postal code for rivervale st” 中的 “rivervale”是正确的,从返回的文档也可以看出;
2. 单词有错,检查不出;
sze chuan dou hua 意思是“四川豆花”
针对第二种情况,只能建一个词库,将这些的对应起来;
对于第一种,也许有人说,基于频率来做,但是看看下面一种情况,”outramm park”应该是地名“outram park”
看仔细咯,很多的outramm也被高亮出来了
有什么好方法呢?目前还正在想,哈哈哈….