利用R語言如何進行文字比較演算法 LD演算法

2021-07-02 04:47:38 字數 1220 閱讀 4951

在日常應用中,文字比較是乙個比較常見的問題。文字比較演算法也是乙個老生常談的話題。

文字比較的核心就是比較兩個給定的文字(可以是位元組流等)之間的差異。目前,主流的比較文字之間的差異主要有兩大類。一類是基於編輯距離(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比較。

下面貼出乙個演算法,返回一組資料中所有相似的字串

[1][1] 「電腦科學與技術」 「計算機科學技術」 「計算科學與技術」

[2]

[1] 「電腦科學與應用」 「金融學電腦科學與應用」

[3]

[1] 「電腦科學與技術」 「計算機科學技術」

[4]

[1] 「金融學電腦科學與應用」

用R語言進行文字挖掘和主題建模

我們每天都會遇到各種各樣的文字資料,但大部分是非結構化的,並不是全部都是有價值的。我們閱讀的書籍,部落格,新聞文章,網頁,電子郵件等都是文字資料。所有這些文字都為我們提供了大量的資訊,並不斷增長。但是,並非所有的資料都是有用的。我們過濾掉噪音,只保留重要的資訊。這是乙個乏味的過程,但作為人類,我們需...

用R語言進行文字挖掘和主題建模

我們每天都會遇到各種各樣的文字資料,但大部分是非結構化的,並不是全部都是有價值的。我們閱讀的書籍,部落格,新聞文章,網頁,電子郵件等都是文字資料。所有這些文字都為我們提供了大量的資訊,並不斷增長。但是,並非所有的資料都是有用的。我們過濾掉噪音,只保留重要的資訊。這是乙個乏味的過程,但作為人類,我們需...

用R語言進行文字挖掘和主題建模

我們每天都會遇到各種各樣的文字資料,但大部分是非結構化的,並不是全部都是有價值的。我們閱讀的書籍,部落格,新聞文章,網頁,電子郵件等都是文字資料。所有這些文字都為我們提供了大量的資訊,並不斷增長。但是,並非所有的資料都是有用的。我們過濾掉噪音,只保留重要的資訊。這是乙個乏味的過程,但作為人類,我們需...