байесовский фильтр для пометки повторяющихся элементов

Я собираю новости по определенным темам, а затем запускаю байесовский классификатор, чтобы отметить их как интересные или неинтересные. Я вижу, что есть новости, которые представляют собой разные статьи, по сути, одни и те же новости. например - Бен Кингсли посещает Тадж-Махал с женой - Кингсли заводит роман с женой на лужайках Таджа

Как мне научить систему помечать все это как дубликаты?

Спасибо, Санджай.


person Sanjay    schedule 09.12.2009    source источник


Ответы (2)


Интересная идея. Я предполагаю, что это изучалось раньше, просмотр в каком-нибудь компьютерном научном журнале должен найти несколько хороших указателей. Тем не менее, вот несколько идей, которые у меня есть:

Метод

Вы можете найти самые уникальные ключевые фразы и посмотреть, насколько хорошо они совпадают с ключевыми фразами из других статей. Я бы предположил, что данные, опубликованные google по частоте фраз в Интернете даст вам базовый уровень.

Вы как-то должны уловить тот факт, что «в» — это очень распространенная фраза, но «Кингсли посещает» — это важно. После того, как вы отфильтровали весь текст до ключевых фраз, вы могли увидеть, сколько из них соответствует.

ключевые фразы:

  • набор всех глаголов, существительных, имен и новых (новых/с ошибками в написании) слов
  • вы можете брать фразы длиной от одного до пяти слов
  • удалить все, что очень часто встречается (можно иметь классификатор по общим фразам)
  • посмотрите, сколько из них совпадают между статьями.
  • иметь управляемый ползунок для установки порога соответствия

Это будет нелегко, если вы напишете это самостоятельно, но я бы сказал, что это очень интересная проблемная область.

Пример

Если мы просто используем заголовки и следуем методу вручную.

Бен Кингсли посещает Тадж-Махал с женой создаст следующие ключевые слова:

  • Бен Кингсли
  • Кингсли
  • Кингсли посещает
  • жена
  • Махал
  • ... так далее ...

но их следует удалить, так как они слишком распространены (следовательно, не помогают однозначно идентифицировать контент)

  • Бен
  • с женой

проделав то же самое с другим заголовком Роман Кингсли с женой на лужайках Таджа, вы сможете сравнить и обнаружить, что довольно много ключевых фраз совпадают. Следовательно, они по одному и тому же предмету.

Несмотря на то, что это уже большое мероприятие, вы можете многое сделать для дальнейшего сопоставления.

Расширения

Это все способы обрезать набор ключевых слов после его создания.

  1. WordNet было бы отличным началом поиска совпадений между словами "длиннее" и "расширить". Это было бы полезно, поскольку статьи не будут использовать один и тот же словарь для написания.

  2. Вы можете запустить Байесовский классификатор для того, что считается ключевой фразой. Его можно обучить, имея набор всех совпадающих/не совпадающих статей и их ключевых фраз. Вы должны быть осторожны с тем, как вы работаете с невидимыми фразами, поскольку они, вероятно, будут самой важной вещью, с которой вы столкнетесь. Может быть даже лучше запустить его на том, что не является ключевой фразой.

  3. Возможно, вам даже стоит посчитать расстояние Левенштейна между некоторыми ключевыми фразами, если ничего еще нашел совпадение. Я предполагаю, что всегда будут найдены какие-то совпадения.

У меня такое чувство, что это одна из тех вещей, где очень хороший ответ даст вам докторскую степень. Опять же, я полагаю, что это уже было сделано раньше (у Google должен быть какой-то автоматический способ очистки всех этих новостей сайты и подгонять их под категории и подобные статьи)

удачи в этом.

person James Brooks    schedule 09.12.2009
comment
Это довольно хорошее понимание проблемы. Я предполагаю, что байесовский метод работы найдет ключевые фразы, а затем увидит, насколько они похожи на уже обученные данные, чтобы классифицировать их. Я хочу, чтобы две строки сопоставлялись с тем, сколько ключевых фраз похожи между ними, чтобы пометить их как дубликаты. Это похоже на байесовский алгоритм, только в том, что ему не нужны данные для обучения. Я бы предпочел найти существующее решение, которое можно настроить, а не делать докторскую степень самостоятельно ;-) - person Sanjay; 09.12.2009
comment
Я не знаю о системе, которая уже существует, но где-то она должна быть. - person James Brooks; 14.12.2009

Это проблема классификации, но сложнее, учитывая количество различных классов, которые у вас будут. Одним из вариантов может быть уменьшение размера каждого документа с помощью Выбор функций (дополнительная информация). Выбор функции включает выбор первых n терминов (исключая стоп-слова, и возможно применение основы к каждому слову). Для этого рассчитайте для каждого документа взаимную информацию ( дополнительная информация) каждого термина, порядок термины по этому номеру и выбор первых n терминов для каждого документа. Этот сокращенный набор функций из первых n терминов для каждого документа теперь может служить основой для выполнения вашего дублирующего выбора (например, если между какими-либо документами имеется более x% общих терминов, снова x вычисляется с помощью ретроспективного тестирования). ),

Большая часть этого описана в этой бесплатной книге по поиску информации. .

person Joel    schedule 09.12.2009