Как работают механизмы обнаружения контента, такие как Zemanta и Open Calais?

Мне было интересно, как семантический сервис, такой как Open Calais, вычисляет названия компаний или людей, технические концепции, ключевые слова и т. Д. Из фрагмента текста. Это потому, что у них большая база данных, с которой они сопоставляют текст?

Как такая служба, как Zemanta, узнает, какие изображения предложить, например, к фрагменту текста?

22.08.2008 10:51:19
3 ОТВЕТА

Open Calais, вероятно, использует технологию синтаксического анализа языка и статистику языка, чтобы угадать, какие слова или фразы являются Именами, Местами, Компаниями и т. Д. Затем, это просто еще один шаг, чтобы выполнить какой-либо поиск этих объектов и вернуть метаданные.

Zementa, вероятно, делает нечто подобное, но сопоставляет фразы с метаданными, прикрепленными к изображениям, чтобы получить связанные результаты.

Это конечно не легко.

0
22.08.2008 17:58:23

Я не знаком с перечисленными конкретными услугами, но в области обработки естественного языка разработан ряд методов, позволяющих извлекать информацию такого рода из общего текста. Как заявил Шон, если у вас есть подходящие термины, нетрудно найти эти термины с некоторыми другими объектами в контексте, а затем использовать результаты этого поиска, чтобы определить, насколько вы уверены, что извлеченный термин является действительным объектом интерес.

OpenNLP - отличный проект, если вы хотите поиграть с обработкой естественного языка. Упомянутые вами возможности, вероятно, лучше всего реализовать с помощью Named Entity Recognizer (NER) (алгоритмы, которые обычно находят собственные имена, а иногда и даты) и / или устранения неоднозначности слов (WSD) (например, слово «банк»). имеет различные значения в зависимости от его контекста, и это может быть очень важно при извлечении информации из текста. Учитывая предложения: «самолет накренился налево», «сугроб был высок» и «они ограбили банк», вы можете увидеть, как неоднозначность может сыграть важную роль в понимании языка)

Методы, как правило, основываются друг на друге, и NER является одной из более сложных задач, поэтому для успешного выполнения NER вам, как правило, потребуются точные токенизаторы (токенайзеры на естественном языке, обратите внимание - статистические подходы, как правило, лучше всего), струнные стеммеры ( алгоритмы, которые связывают похожие слова с общими корнями: таким образом, слова, подобные информатору и информатору, обрабатываются одинаково), обнаружение предложения («Мистер Джонс был высоким.» - это только одно предложение, поэтому вы не можете просто проверить пунктуацию), часть речевые тегеры (POS-тегеры) и WSD.

Существует порт Python (части) OpenNLP под названием NLTK ( http://nltk.sourceforge.net ), но у меня пока нет особого опыта работы с ним. Большая часть моей работы была с портами Java и C #, которые хорошо работают.

Все эти алгоритмы, конечно, зависят от языка, и для их запуска может потребоваться значительное время (хотя, как правило, это быстрее, чем чтение материала, который вы обрабатываете). Поскольку современное состояние в значительной степени основано на статистических методах, существует также значительный коэффициент ошибок, который необходимо принимать во внимание. Кроме того, поскольку частота ошибок влияет на все этапы, а что-то вроде NER требует многочисленных этапов обработки, (tokenize -> обнаружение предложения -> POS-тег -> WSD -> NER) составной коэффициент ошибок.

7
30.08.2008 03:56:57

Михал Финкельштейн из OpenCalais здесь.

Во-первых, спасибо за ваш интерес. Я отвечу здесь, но я также призываю вас читать больше на форумах OpenCalais; там много информации, включая, но не ограничиваясь: http://opencalais.com/tagging-information http://opencalais.com/how-does-calais-learn Также не стесняйтесь следить за нами в Twitter (@OpenCalais ) или напишите нам по адресу team@opencalais.com

Теперь к ответу:

OpenCalais основана на десятилетии исследований и разработок в области обработки естественного языка и анализа текста.

Мы поддерживаем полный «стек НЛП» (как мы его называем): от токенизации текста, морфологического анализа и маркировки POS до мелкого разбора и определения именных и устных фраз.

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

Для наиболее известных организаций (таких как люди, компании) мы также выполняем разрешение анафоры, перекрестные ссылки и канонизацию / нормализацию имен на уровне статьи, поэтому мы будем знать, что «Джон Смит» и «Мистер» Смит, например, скорее всего, ссылается на одного и того же человека. Таким образом, краткий ответ на ваш вопрос - нет, речь идет не только о сопоставлении с большими базами данных.

События / факты действительно интересны, потому что они поднимают наши правила открытия на один уровень глубже; мы находим отношения между объектами и помечаем их соответствующим типом, например M & As (отношения между двумя или более компаниями), изменения в сфере занятости (отношения между компаниями и людьми) и так далее. Излишне говорить, что извлечение событий / фактов невозможно для систем, которые основаны исключительно на лексиконах. По большей части наша система настроена на точность, но мы всегда стараемся поддерживать разумный баланс между точностью и целостностью.

Кстати, в этом месяце появятся новые интересные возможности для метаданных, так что следите за обновлениями.

С Уважением,

Michal

9
4.05.2009 19:45:20