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

Спасибо за все ответы!