Алгоритм подобия текста (неконтролируемый алгоритм)

NLP

1. Jaro distance

Даны две текстовые строкиs1s_1,s2s_2Их джоро расстояние определяется как:Jaro公式в:mmпредставляет две строкиmatchколичество символовsi|s_i|Указывает длину текстовой строкиttУказывает количество транспозитоинов ()

попрошайничествоmatchколичество символов: соответственно изs1s_1,s2s_2символов, когда они одинаковы или меньше, чемd=max(xi,x2)21d =\lfloor \frac{max(|x_i|,|x_2|)}{2}\rfloor - 1, считаетсяmatchиз.

Например:s1s_1= "ДИКСОН",s2s_2= "ДИКСОНКС"匹配空间расстояниеddВычисляется равным 3, тогда каждое сравнение в пространстве от max(0,i-d) до min(i+d,xLen) (если от горизонтальной осиs1s_1Для сравнения, xLen означаетs1s_1длина). наконец получитьmatchномерm=4m=4.

s1s_1каждый персонаж вs2s_2среднее расстояниеddсимволы внутри сравниваются. положить всеmatchОбщее количество строк, которые необходимо заменить, чтобы соответствовать порядку, деленное на два, является размером транспозиций.tt. Здесь совпадают две строки: "DION", "DION", поэтомуt=0t=0. Кроме тогоs1|s_1|=4, s2|s_2|=8, но:dj=13(45+48+404)d_j=\frac{1}{3}(\frac{4}{5} + \frac{4}{8} + \frac{4-0}{4})

Ссылаться на:Rosetta code.org/wiki/jar O_'s…

2. PCA like SIF

image_1e6iak6751vvlhhabn51ltj1t1tm.png-65.4kB

  1. Первый шаг — умножить каждый вектор слов в предложении на уникальный вес. Этот вес является постояннымααразделить наααСумма частот слова, то есть вес высокочастотного слова, уменьшится относительно. После суммирования получается вектор временного предложения.

  2. Затем вычислите первый главный компонент матрицы, состоящей из всех векторов предложений в корпусе.uu, пусть каждый вектор предложения вычитает его вuuпроекция на (аналог PCA). где векторvvв другом вектореuuПроекция на определяется следующим образом:

image_1e6iam2bv1vl2c281d7thjc1v1i2a.png-2.6kB

  1. Код:image_1e6iamnqvd9l133vrd31l5g1q1m2n.png-106.8kB