php 错误单词,php – 将单词拼写错误的位置放置点

我正在用PHP创建一个Web应用程序,人们可以尝试翻译他们需要为学校学习的单词.

例如,有人需要用英语将荷兰语’weer’翻译成’weather’,但不幸的是他输入’是否’.因为他几乎输入了正确的单词,我想给他另一个尝试,点”.在他犯错误的地方:

Language A: weer

Language B: weather

Input: whether

Output: w..ther

或者,例如

Language A: fout

Language B: mistake

Input: mitake

Output: mi.take

要么:

Language A: echt

Language B: genuine

Input: genuinely

Output: genuinely (almost good, shorten the word a little bit)

但是,如果输入与所需的翻译有太大的不同,我不希望得到像……..的输出.

我听说Levenshtein距离,我想我需要一个与那个算法很相似的算法,但我不知道如何在正确的位置放置点,而不是回应要完成多少操作.

那么,如何在有人犯错误的地方以点的形式返回拼写错误的单词呢?

解决方法:

首先,看看Levenshtein algorithm on wikipedia.

然后继续查看文章页面上的示例和结果矩阵:

*k* *i* *t* *t* *e* *n*

>0 1 2 3 4 5 6

*s* 1 >1 2 3 4 5 6

*i* 2 2 >1 2 3 4 5

*t* 3 3 2 >1 2 3 4

*t* 4 4 3 2 >1 2 3

*i* 5 5 4 3 2 >2 3

*n* 6 6 5 4 3 3 >2

*g* 7 7 6 5 4 4 >3

距离位于矩阵的右下角,d [m,n].但是从那里开始

现在可以跟踪回溯矩阵左上角的最小步骤d [1,1].您可以在每个步骤中向左,向左或向上,无论哪个路径最小化.

在上面的示例中,您将找到标记为“>”的路径体征:

s i t t i n g k i t t e n

0 1 1 1 1 2 2 3 0 1 1 1 1 2 2 3

^ ^ ^ ^ ^ ^

changes in the distance, replace by dots

现在你可以找到距离变化的最小路径d [i,j](在上面的例子中用^标记),对于你在第一个(或第二个)单词中放置的那些字母,在位置i处有一个点(或j).

结果:

s i t t i n g k i t t e n

^ ^ ^ ^ ^ ^

. i t t . n . . i t t . n .

标签:php,algorithm,levenshtein-distance

来源: https://codeday.me/bug/20190527/1159791.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值