NLP/сравнение текст машинного обучения
в настоящее время я разрабатываю программу с возможностью сравнения небольшого текста (скажем, 250 символов) с коллекцией аналогичных текстов (около 1000-2000 текстов).
цель состоит в том, чтобы evalute, если текст A похож на один или несколько текстов в коллекции, и если да, то текст в коллекции должен быть извлечен по идентификатору. Каждый текст будет иметь уникальный идентификатор.
есть два способа, которыми я хотел бы, чтобы выход был:
1: Текст a соответствует тексту B с 90% сходством, текст C с 70% сходством и так далее.
Вариант 2: Текст сопоставленный текст D с наибольшим сходством
Я прочитал некоторое машинное обучение в школе, но я не уверен, какой алгоритм подходит для этой проблемы лучше всего, или если я должен рассмотреть использование НЛП (не знаком с предметом).
У кого-нибудь есть предложение, какой алгоритм использовать или где я могу найти литературу необходимыми для решения моя проблема?
Спасибо за любой вклад!
2 ответов
Это не кажется проблемой машинного обучения, вы просто ищете некоторые мера сходства текста. Как только вы выберете один, вы просто отсортируете свои данные в соответствии с достигнутыми "баллами".
в зависимости от ваших текстов, вы можете использовать один из следующих показателей ( список из wiki) или определить собственные:
- Хэмминга
- расстояние Левенштейна и Дамерау–Левенштейна расстояние
- Нидлмана–Вунш расстояние или алгоритм продавцов
- Смит-Уотерман расстояние
- расстояние Гото или Смит-Уотерман-расстояние Гото
- Monge Elkan расстояние
- расстояние блока или расстояние L1 или расстояние блока города
- Джаро–Винклер расстояние
- Метрика расстояния Soundex
- простой коэффициент соответствия (SMC) кости!--10-->
- сходство Jaccard или коэффициент Jaccard или Tanimoto коэффициент
- Тверски индекс
- коэффициент перекрытия
- евклидово расстояние или расстояние L2
- Косинус сходство
- вариационное расстояние
- hellinger расстояние или Bhattacharyya расстояние
- информационный радиус (расхождение Дженсена-Шеннона)
- косое расхождение
- путаница вероятность
- Тау метрики аппроксимации Кульбака–Лейблера дивергенция
- Феллеги и Sunters метрики (ГФС)
- максимальная матчей
- ли расстояние
некоторые из вышеперечисленных (например, ie. cosine similarity) требуют преобразования ваших данных в векторизованный формат. Этот процесс также может быть достигнут многими способами, с помощью простейшего возможного мешка слов / методов tfidf.
сам список далек от завершения, это просто проект таких методов. В частности, существует много ядер строк, которые также подходят для измерения сходства текста. В частности, ядро Wordnet может измерять семантическое сходство на основе одной из наиболее полных семантических баз данных английского языка.
Я нашел отличную статью для измерения семантического сходства, которая идеально подходит для моей проблемы.
измерение семантического сходства на основе WordNet
Спасибо за все ответы!