Сравнение двух словосочетаний (морфология, синтаксис, семантика...)
-
Нужно дать понять скрипту что словосочетание "Клавиатура" примерно одно и то же что и "Игровые клавиатуры".
Например: (совпадения я выдумал сам)
"Клавиатура" vs "Игровые клавиатуры" (совпадение 45%)
"Обои" vs "Обои на рабочий стол" (совпадение 90%)
"Красивое фото" vs "Красивы фотографии" (совпадение 95%)
"Записать в блокнот" vs "блокнот" (совпадение 50%)Возможно кто-то уже сталкивался с этим и тестировал на каких-то модулях npm или сторонними методами?
Просто поиск точного вхождения это к сожалению не совсем то, что нужно(
Вот нашел примитивный сайт который по символам делает сравнение, хватило бы и такого, только понять бы как это работает
-
@venom777 Модуль string-similarity выдает довольно неплохие результаты.
Вот простенький скриптvar stringSimilarity = require('string-similarity'); var words = [ ["Клавиатура","Игровые клавиатуры"], ["Обои", "Обои на рабочий стол"], ["Красивое фото", "Красивы фотографии"], ["Записать в блокнот", "блокнот"] ] words.forEach((w)=>{ console.log(`Compare ${w[0]} and ${w[1]} ${stringSimilarity.compareTwoStrings(w[0], w[1])}`) })
Вот результаты:
[983794920] [03:31:11] Поток №1 : Compare Клавиатура and Игровые клавиатуры 0.6666666666666666
[983794920] [03:31:11] Поток №1 : Compare Обои and Обои на рабочий стол 0.375
[983794920] [03:31:11] Поток №1 : Compare Красивое фото and Красивы фотографии 0.64
[983794920] [03:31:11] Поток №1 : Compare Записать в блокнот and блокнот 0.631578947368421
-
@support То, что нужно! Спасибо)
Ковырял эти два дня diff-match-patch , работает очень даже неплохо, но как только начал сравнивать варианты по 4-6 слов стал неправильно засчитывать слова как отсутствующие.
-
@venom777 diff-match-patch отличная либа, но нахождения коэффициента "похожести" не лучший вариант.