我是靠谱客的博主 温柔服饰,最近开发中收集的这篇文章主要介绍利用R语言如何进行文本比较算法——LD算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在日常应用中,文本比较是一个比较常见的问题。文本比较算法也是一个老生常谈的话题。
文本比较的核心就是比较两个给定的文本(可以是字节流等)之间的差异。目前,主流的比较文本之间的差异主要有两大类。一类是基于编辑距离(Edit Distance)的,例如LD算法。一类是基于最长公共子串的(Longest Common Subsequence),例如Needleman/Wunsch算法等。
LD算法(Levenshtein Distance)又成为编辑距离算法(Edit Distance)。他是以字符串A通过插入字符、删除字符、替换字符变成另一个字符串B,那么操作的过程的次数表示两个字符串的差异。
例如:字符串A:kitten如何变成字符串B:sitting。
第一步:kitten——》sitten。k替换成s
第二步:sitten——》sittin。e替换成i
第三步:sittin——》sitting。在末尾插入g
故kitten和sitting的编辑距离为3
楼主一开始遇到这个问题的时候也是思考良久,觉得利用R语言很难实现,但是R最大的优点就是包多,经过千辛万苦的谷歌翻墙搜索,让我找到了解决方法:
例题:设计一个算法,求下列所示专业名称中与“计算机科学与技术”最相似的名称:
1、计算机科学与应用,2、计算机科学技术,3、金融学计算机科学与应用,4、计算科学与技术
代码如下:

k1<-“计算机科学与技术”
k2<-‘计算机科学与应用’
k3<-‘计算机科学技术’
k4<-‘金融学计算机科学与应用’
k5<-‘计算科学与技术’
kn<-c(k2,k3,k4,k5)
agrep(k1,kn,max =1.1, value = TRUE,useBytes = T,costs = NULL)

[1] “计算机科学技术” “计算科学与技术”

其中参数max控制的是可以匹配的最大距离,useBytes控制的是按照字符比较还是Bytes比较。

下面贴出一个算法,返回一组数据中所有相似的字符串

km<-c(k1,k2,k3,k4,k5)
lapply(km, agrep, km, value = TRUE)

[1]

[1] “计算机科学与技术” “计算机科学技术” “计算科学与技术”

[2]
[1] “计算机科学与应用” “金融学计算机科学与应用”

[3]
[1] “计算机科学与技术” “计算机科学技术”

[4]
[1] “金融学计算机科学与应用”

[5]
[1] “计算机科学与技术” “计算科学与技术”
做完这个东西我不禁在想,好在找到一个函数巧妙的实现了这个问题,若没有实现,我该怎么办,楼主在搜索的过程中看到很多人用C语言或其他编程语言实现了这个问题,看来自己的编程技巧还要好好提高。明天继续加油

最后

以上就是温柔服饰为你收集整理的利用R语言如何进行文本比较算法——LD算法的全部内容,希望文章能够帮你解决利用R语言如何进行文本比较算法——LD算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部