Автоматическая пометка и категоризация текста с использованием НЛП и онтологии соответственно.

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

ПРИМЕР:

ТЕКСТ: «Следующая гонка Формулы-1 пройдет в Испании»

ТЭГИ: "Формула-1", "гонка", Испания

если какой-либо пользователь будет искать эти теги, он получит эту запись в результатах.

Но я хочу, чтобы пользователи, которые ищут «Спорт», «Автоспорт» или «Европа», также получили эту запись, хотя эти теги не были явно помечены в записи, но связаны, потому что «Формула 1» является типом «Автоспорт». ", что является типом "Спорт", а "Испания" находится в "Европе".

На данный момент в моей форме отправки пользователи пишут свой текст в одном текстовом поле, а затем пишут свои теги во втором текстовом поле ниже и отправляют.

эти теги позже классифицируются администратором вручную. Таким образом, в приведенном выше случае администратор вручную поместит «Испанию» в качестве дочернего элемента «Европа». (Столбец иерархии MS SQL Server)

Я думаю, что это может быть достигнуто с помощью некоторого программного обеспечения Ontologies. dotNetRdf, OWL... но не уверен. Я просто узнаю об этой стороне мира несколько дней назад, и я не уверен, как это может мне помочь. Это решение, или я ищу совершенно не то? Любые предложения для достижения вышеизложенного?

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

Думаю, для этого мне придется использовать какой-нибудь сервис НЛП? Есть идеи, какой из них использовать, или любое другое предложение?


person M. Ali Iftikhar    schedule 29.04.2013    source источник


Ответы (2)


Онтологии могут быть полезны, если отношения, которые вы ищете, достаточно общие (например, страны и континенты). По семантическому родству «гонка» и «спорт». Я бы порекомендовал какое-то семантическое сходство между словами (или тегами), которое вы можете использовать.

По сути, если вы создаете матрицу MxM, моделирующую зависимость/сходство между различными тегами, вы можете использовать эти веса для получения похожих концепций. Например, «гонка» и «спорт» будут гораздо более связаны, чем, например, «гонка» и «испания».

Как рассчитать веса? Это можно решить с помощью нескольких методов, таких как [явный семантический анализ] (http://en.wikipedia.org/wiki/Explicit_semantic_analysis) или [Distributional Semantics] (http://en.wikipedia.org/wiki/Distributional_semantics). Одной из самых простых метрик будет использование некоторой метрики одновременности (т. Е. % документов «гонка» и «спорт» появляются вместе).

Кроме того, вы также можете использовать больше методов НЛП, таких как синонимы.

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

Для извлечения тегов вам следует изучить Entity Extraction, nltk может быть хорошим инструментом для начала.

Надеюсь, это поможет.

person miguelmalvarez    schedule 29.04.2013

Используемое вами решение (столбец иерархии MS SQL Server) может быть дополнено в этом случае онтологией OWL (которая представляет собой иерархию/таксономию). Привожу пример того, как это будет выглядеть в вашем случае и что из этого можно получить.

Онтология, связанная со спортом, будет выглядеть так:

Class: Sport

Class: Formula_1
  SubClassOf: Motor_Sport

Class: Motor_Sport
  SubClassOf: Sport

Затем с помощью программы, называемой reasoner, вы можете задавать такие вопросы, как: Что более конкретно, чем Sport? (подклассы Sport)

Список результатов содержит Motor_Sport и Formula_1. Затем вы можете использовать эти классы, например, для аннотирования ваших данных.

Хороший способ начать работу — ознакомиться с учебником Protégé OWL.

person loopasam    schedule 30.04.2013
comment
спасибо за это @loopasam. Я новичок в этом мире онтологий/таксономии/НЛП. Ваш обучающий сайт обязательно поможет. Я подробно расскажу об этом. Но я думаю, что я немного запутался здесь ... например, как вы упомянули выше, что Motor_Sport станет подклассом Formula_1. Кто отнесет Motor_Sports к категории Formula_1 на первое место. Это происходит автоматически? Или некоторым придется делать это вручную? - person M. Ali Iftikhar; 30.04.2013
comment
Утверждение Motor_Sport как суперкласса Formula_1 выполняется вручную. Это единственный способ сделать это, так вы указываете свое знание предметной области. Затем, когда онтология построена, вы можете запросить ее, как указано в моем ответе. Преимущество здесь в том, что вам нужно курировать информацию только один раз, а затем использовать ее все остальное время. Некоторые онтологии уже существуют, поэтому я предлагаю вам начать искать домен, который вы ищете, прежде чем создавать свой собственный. Если вы найдете тот, который подходит вам, вы можете использовать его для решения вашей проблемы. - person loopasam; 30.04.2013