使用 r 库 stringdist 进行文本挖掘
text mining with r library stringdist
我已经准备好下一个匹配两个字符串的算法。
library(stringdist)
qgrams('perimetrico','perimetrico peri',q=2)
pe ri tr er im me o et ic co p
V1 1 2 1 1 1 1 0 1 1 1 0
V2 2 3 1 2 1 1 1 1 1 1 1
在我看来,这是统计出现次数的正式实现。
stringdist('perimetrico','perimetrico peri', method='qgram', q=2)
5
但我对这个解决方案不太满意。这就是为什么我要计算第一个结果,例如以下方式:
pe=1
ri=1
tr=1
er=1
im=1
me=1
o=0
et=1
ic=1
co=1
p=0
因此,最终结果将是 9/11 = 82% 匹配
使用应用(对每一行)计算 0 出现的次数,然后从 1
中减去该数字。
library(stringdist)
foo <- qgrams('perimetrico','perimetrico peri',q=2)
apply(foo, 1, function(x) 1 - mean(x == 0))
V1 V2
0.8181818 1.0000000
或者您可以四舍五入(对于 0.82
)并乘以 100(对于 82
百分比)
apply(a, 1, function(x) round(1 - mean(x == 0), 2) * 100)
V1 V2
82 100
我已经准备好下一个匹配两个字符串的算法。
library(stringdist)
qgrams('perimetrico','perimetrico peri',q=2)
pe ri tr er im me o et ic co p
V1 1 2 1 1 1 1 0 1 1 1 0
V2 2 3 1 2 1 1 1 1 1 1 1
在我看来,这是统计出现次数的正式实现。
stringdist('perimetrico','perimetrico peri', method='qgram', q=2)
5
但我对这个解决方案不太满意。这就是为什么我要计算第一个结果,例如以下方式:
pe=1
ri=1
tr=1
er=1
im=1
me=1
o=0
et=1
ic=1
co=1
p=0
因此,最终结果将是 9/11 = 82% 匹配
使用应用(对每一行)计算 0 出现的次数,然后从 1
中减去该数字。
library(stringdist)
foo <- qgrams('perimetrico','perimetrico peri',q=2)
apply(foo, 1, function(x) 1 - mean(x == 0))
V1 V2
0.8181818 1.0000000
或者您可以四舍五入(对于 0.82
)并乘以 100(对于 82
百分比)
apply(a, 1, function(x) round(1 - mean(x == 0), 2) * 100)
V1 V2
82 100