正确地猜测用户的意图

当我们在Collins词典中输入“voilent”的时候,会有如下提示:

当我们在Google中搜索“voilent”的时候,也会有如下提示:

Collins和Google是如何做到的呢?它是怎么知道我们把i和o的位置弄反了呢?

当我们输入一个词,而这个词不存在于Google的倒排索引或者Collins的词典中时,我们就可以假设用户输入可能有误,接着我们通过算法找出一个和用户的输入最相似的词推荐给用户,这个找出和用户输入最相似的词的算法有很多种,最常用的有编辑距离算法(Edit Distance),因为这个算法是俄罗斯科学家Vladimir Levenshtein在1965年提出的,所以编辑距离(Edit Distance)又叫做Levenshtein距离。

编辑距离算法是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,允许的编辑操作包括将一个字符替换成另一个字符,增加一个字符,删除一个字符。

例如将kitten转成sitting: 

sitten (k→s)将一个字符k替换成另一个字符s

sittin  (e→i) 将一个字符e替换成另一个字符i

sitting (→g) 增加一个字符g

所以编辑距离为3,word分词提供了编辑距离算法的Java代码实现,同时superword项目也演示了编辑距离算法对于单词记忆的辅助作用

 

下面我们看看中文的情况,当我们在Google搜索“热挨”的时候,Google在倒排索引中找不到“热挨”这个词,于是它猜测我们真正想搜索的是“热爱”,那么Google是怎么猜测到我们的意图的呢?

工作原理和上面介绍的英文词比较相似,只是算法不一样,如果把编辑距离算法应用到这里,效果会很差,那么怎么办呢?

解决方法是利用汉语的同音词原理,先把“热挨”转换为拼音“reai”,然后找出所有拼音为“reai”的双字词,在按照词的出现频率取频率最大者“热爱”。

 

更多资料:

How to Write a Spelling Corrector

Using the Web for Language Independent Spellchecking and Autocorrection

How Difficult is it to Develop a Perfect Spell-checker A Cross-linguistic Analysis through Complex Network Approach

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编程序,让计算机猜测用户暗记”的某张扑克牌计算机一副扑克牌54任意抽出27,摆放在不同的三行上(每行9),用户暗记某张纸牌,而后告诉计算机所“暗记”的那纸牌处于哪一行;之后计算机再两次将纸牌重新摆放,并让用户再回答两次相同的提问(那纸牌在重新摆放后又处在哪一行上);此时计算机会将用户所“暗记”的那纸牌给挑出来。 例如,程序执行后的屏幕显示结果可设计为(其的前缀a、b、c、d代表四种不同的花色): ------------------------------------------------------------- Line 1: c-9 d-3 a-7 d-9 a-9 c-3 b-8 a-A d-7 Line 2: b-10 a-Q d-6 b-4 a-3 b-9 b-K c-A d-8 Line 3: KING2 d-A b-A a-4 a-2 b-7 d-5 c-7 a-8 ------------------------------------------------------------- Remember a card, and tell me what line it reside in(1/2/3): 3 ------------------------------------------------------------- Line 1: c-9 d-3 a-7 b-10 a-Q d-6 KING2 d-A b-A Line 2: d-9 a-9 c-3 b-4 a-3 b-9 a-4 a-2 b-7 Line 3: b-8 a-A d-7 b-K c-A d-8 d-5 c-7 a-8 ------------------------------------------------------------- What line the card you remembered reside in now (1/2/3) : 1 ------------------------------------------------------------- Line 1: c-9 b-10 KING2 d-9 b-4 a-4 b-8 b-K d-5 Line 2: d-3 a-Q d-A a-9 a-3 a-2 a-A c-A c-7 Line 3: a-7 d-6 b-A c-3 b-9 b-7 d-7 d-8 a-8 ------------------------------------------------------------- What line the card you remembered reside in now (1/2/3) : 1 ------------------------------------------------------------- Your remembered card is : KING2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值