По-перше, перед тим, як розпочати, рекомендую звернутися до подібних питань у мережі, таких як /datascience/25053/best-practical-algorithm-for-sentence-s similarity та https: // stackoverflow. com / questions / 62328 / є-там-алгоритм-що-розповідає-семантичне-подібність-двох фраз
Для визначення схожості речень нам потрібно врахувати, які дані ми маємо. Наприклад, якщо у вас був мічений набір даних, тобто подібні речення та різні речення, тоді прямим підходом могло б бути використання алгоритму, що контролюється, для класифікації речень.
Підхід, який міг би визначити структурну схожість речень, полягав би в середньому серед векторів слів, породжених алгоритмами вбудовування слова, тобто word2vec. Ці алгоритми створюють вектор для кожного слова, а схожість косинусів серед них являє семантичну схожість між словами. (Daniel L 2017)
За допомогою векторів слів ми можемо використовувати наступні показники для визначення схожості слів.
- Косинусна відстань між вбудованими словами цих слів
- Евклідова відстань між вбудованими словами цих слів
Косинусна схожість - це міра подібності двох ненульових векторів внутрішнього простору продукту, що вимірює косинус кута між ними. Косинусовий кут - це міра накладання між реченнями за їх змістом.
Евклідова відстань між двома векторами слів забезпечує ефективний метод вимірювання мовної чи семантичної подібності відповідних слів. (Frank D 2015)
Ви також можете обчислити власний вектор речень, щоб визначити подібність речень.
Власні вектори - це особливий набір векторів, пов'язаних з лінійною системою рівнянь (тобто матричним рівнянням). Тут генерується матриця подібності речень для кожного кластеру та обчислюється власний вектор для матриці. Ви можете прочитати більше про підхід, заснований на Eigenvector, до ранжування речень у цьому документі https://pdfs.semanticscholar.org/ca73/bbc99be157074d8aad17ca8535e2cd956815.pdf
Для вихідного коду Siraj Rawal має ноутбук Python для створення набору векторів слів. Слова векторів можуть бути використані для пошуку схожості між словами. Вихідний код доступний тут https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE
Інший варіант - це підручник від Oreily, який використовує бібліотеку gensin Python для визначення схожості між документами. Цей підручник використовує NLTK для токенізації, а потім створює з корпусу модель tf-idf (термін обернена частота документа). Потім tf-idf використовується для визначення схожості документів. Підручник доступний тут https://www.oreilly.com/learning/how-do-i-compare-document-s Sličnost- using-python