Сведения о вопросе

Математик

18:24, 26th August, 2020

Теги

python   ruby   semantics   zemanta    

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

Просмотров: 408   Ответов: 3

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

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



  Сведения об ответе

LIZA

13:06, 1st August, 2020

Михал Финкельштейн из 38-го здесь.

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

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

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

Мы поддерживаем полный "NLP Stack" (как мы любим его называть): От токенизации текста, морфологического анализа и тегирования POS до поверхностного разбора и идентификации именных и вербальных фраз.

Семантика вступает в игру, когда мы ищем сущности (a.k.a. Извлечение Сущности, Распознавание Именованных Сущностей). Для этой цели у нас есть сложная система на основе правил, которая объединяет правила обнаружения, а также lexicons/dictionaries. эта комбинация позволяет нам идентифицировать имена companies/persons/films и т. д., даже если они не существуют ни в одном доступном списке.

Для наиболее заметных объектов (таких как люди, компании) мы также выполняем разрешение анафоры, перекрестную ссылку и канонизацию/нормализацию имени на уровне статьи, поэтому мы будем знать, что 'John Smith' и 'Mr. Smith', например, вероятно, относятся к одному и тому же лицу. Поэтому короткий ответ на ваш вопрос-нет, это не просто сопоставление с большими базами данных.

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

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

С уважением,

Михал


  Сведения об ответе

fo_I_K

11:26, 26th August, 2020

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

OpenNLP -отличный проект, если вы хотите поиграть с обработкой естественного языка. Названные вами возможности, вероятно, лучше всего будут реализованы с помощью распознавателей именованных сущностей (NER) (алгоритмы, которые обычно обнаруживают имена собственные, а иногда и даты) и / или устранения неоднозначности смысла слов (WSD) (например: слово 'bank' имеет различные значения в зависимости от контекста, и это может быть очень важно при извлечении информации из текста. Учитывая предложения: "самолет накренился влево", "the snow bank was high", and "they robbed the bank" вы можете видеть, как двусмысленность может играть важную роль в понимании языка)

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

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

Все эти алгоритмы зависят от языка, конечно, и они могут занять значительное время для запуска (хотя, как правило, это быстрее, чем чтение обрабатываемого материала). Поскольку модель state-of-the-art в значительной степени основана на статистических методах, необходимо также учитывать значительную долю ошибок. Кроме того, поскольку частота ошибок влияет на все этапы, а что-то вроде NER требует многочисленных этапов обработки, (tokenize - > sentence detect - > POS tag - > WSD - > NER) частота ошибок увеличивается.


  Сведения об ответе

LIZA

05:49, 29th August, 2020

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться