Интеллектуальный анализ текста с помощью строки библиотеки r

У меня есть следующий алгоритм, подготовленный для сопоставления двух строк.

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% совпадения

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 
Другие вопросы по тегам