【问题标题】:text mining with r library stringdist使用 r 库 stringdist 进行文本挖掘
【发布时间】:2017-09-07 21:37:54
【问题描述】:

我已经准备好匹配两个字符串的下一个算法。

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% 匹配

【问题讨论】:

    标签: r stringdist


    【解决方案1】:

    使用 apply(对于每一行)计算出现次数为 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 
    

    【讨论】:

    • 你能在你的函数中使用mean(x &gt; 0)吗?
    • @CPak 是的,这可行,但我对 OP 数据了解不多。如果某处有-1 怎么办。
    • @PoGibas,点了,但我不明白为什么-1 会出现在qgrams 输出中
    • Nono,贡献是为@PoGibas。如果我说错了,我很抱歉。
    • 没有讽刺意味,代码 apply(foo, 1, function(x) 1 - mean(x == 0)) 有助于我正在开发的过程
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多