Интеллектуальный анализ текста с помощью строки библиотеки 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