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

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

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
0
2 316
3

Ответы 3

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

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

Конечно, это непросто.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

С уважением,

Михал

Другие вопросы по теме