Как я могу выразить тонкие отношения в моих данных?

20

«А» относится к «В» и «С». Как я могу показать, что «B» и «C» могут в этом контексте также быть связаны?

Пример:

Вот несколько заголовков о недавней бродвейской пьесе:

  1. «Гленгарри Глен Росс» Дэвида Мамета, в главной роли Аль Пачино, открывается на Бродвее
  2. Аль Пачино в «Гленгарри Глен Росс»: что думают критики?
  3. Аль Пачино зарабатывает слабые обзоры для Бродвейского поворота
  4. Театральное обозрение: Гленгарри Глен Росс твердо продает свои звезды
  5. Гленгарри Глен Росс; Эй, кто убил Klieg Lights?

Проблема:

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

Как мне найти отношения, которые предполагают, что № 3 связан с № 4? Оба они могут быть легко связаны с # 1, но не друг с другом.

Есть ли (Googlable) имя для такого рода данных или структуры? Какой алгоритм я ищу?

Цель:

Учитывая 1000 заголовков, система, которая автоматически предполагает, что эти 5 пунктов, вероятно, все об одном и том же.

Честно говоря, я так давно запрограммировал, что не могу правильно сформулировать эту проблему. (Я не знаю, что я не знаю, если это имеет смысл).

Это личный проект, и я пишу его на Python. Заранее спасибо за любую помощь, советы и советы!

Чак Н
источник
1
звучит как разбор естественного языка и / или требуется какая-то другая вероятностная техника
jk.
2
Это большой вопрос!
Майкл Браун
Я думаю, что я видел системы, которые могут сделать это, реализованные в Прологе.
FrustratedWithFormsDesigner
1
@FrustratedWithFormsDesigner Я подозреваю, что вы думаете об объединении в логическом программировании ..?
Изката

Ответы:

14

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

Карл Билефельдт
источник
7

Вы входите в мир семантики. Существуют публичные сервисы, которые будут анализировать текст и извлекать основные понятия (быстрый поиск по семантическому API). показал несколько), которые будут анализировать документ в свободной форме и возвращать основные встреченные темы, включая людей, места, вещи, даты и концепции. , Некоторые из лучших вернутся в формате, известном как [RDF]

Если вы хотите создать свою собственную систему, которая может сделать это, то поле « Обработка естественного языка», и это очень интригующая кроличья нора, чтобы нырнуть вниз.

Майкл Браун
источник
4

Если это вообще возможно, получите историю вместе с заголовком. Заголовки могут иногда становиться «симпатичными» и делать лишь косвенную ссылку на то, что обсуждается. Это хорошо работает с людьми (потому что они имеют глобальный контекст ), но не так хорошо с НЛП.

Как упоминалось в ответе Карла Билефельда, кластеризация - это хороший подход, но дьявол кроется в деталях. Вам нужно не только выбрать подход к кластеризации, который соответствует вашей проблеме / пользовательскому пространству, вы также должны выяснить, что кластеризуется.

Я работал в области поиска информации (IR) с 80-х по 90-е годы, и мы сосредоточились на поиске сходств и кластеризации на основе центроидов . Наши документы были представлены взвешенными векторами атрибутов , которые в основном представляют собой список терминов и их относительную важность в документе. Этот подход может работать (хотя и лучше с некоторыми коллекциями, чем с другими), но у него есть проблемы с короткими симпатичными заголовками, потому что у них нет ключевых словарных терминов, чтобы связать вещи вместе. Но если вы используете весь документ, тогда вы получите гораздо более богатый список терминов (и, возможно, лучшее понимание важности), и этот список терминов, вероятно, облегчит обнаружение соединения (т.е. вычисление), когда у вас есть заголовки, которые "милый".

Мой адрес электронной почты находится в моем профиле, если вы хотите заняться проблемами генерации векторов и т. Д.

Питер Роуэлл
источник