Как сделать слова в категории. (НЛП)

I love to eat chicken.
Today I went running, swimming and played basketball.

Моя цель — вернуть FOOD и SPORTS, просто проанализировав эти два предложения. Как вы можете это сделать?

Я знаком с НЛП и Wordnet. А есть что-то более высокоуровневое/практичное/современное??

Есть ли что-нибудь, что автоматически распределяет слова по «уровням»?

Что еще более важно, каков технический термин для этого процесса?


person TIMEX    schedule 08.11.2009    source источник
comment
Почему ЕДА, а не ПТИЦА?   -  person Gareth    schedule 08.11.2009
comment
Не могли бы вы дать нам какую-либо информацию о методах, которые вы пробовали и были успешными?   -  person morfara    schedule 15.12.2016


Ответы (5)


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

Большая часть обработки естественного языка начинается с грамматики (которая может быть или не быть независимой от контекста). Это набор правил построения, указывающих, как более общие вещи состоят из более конкретных.

пример контекстно-свободной грамматики:

Sentence ::= NounPhrase VerbPhrase
NounPhrase ::= ["The"] [Adjective] Noun
Adjective ::= "big" | "small" | "red" | "green"
Noun ::= "cat" | "man" | "house"
VerbPhrase ::= "fell over"

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

Как только грамматика определена (или изучена с использованием сложных алгоритмов, известных только Google, подобным Google), строка, называемая «примером», анализируется в соответствии с грамматикой. который помечает каждое слово частями речи. очень сложная грамматика будет состоять не только из частей речи, которые вы выучили в школе, но и из таких категорий, как «Веб-сайты», «Имена пожилых людей» и «ингредиенты».

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

текст ссылки В этом поиске в Google перечислены несколько техник, используемых в НЛП, и вы можете многому у них научиться.

РЕДАКТИРОВАТЬ, чтобы просто решить эту проблему, можно сканировать Интернет в поисках предложений формы «_ is a _», чтобы создать базу данных отношений между элементами и категориями. затем вы анализируете строку, как указано выше, и ищете слова, которые являются известными элементами в базе данных.

person Nathan    schedule 08.11.2009

Вопрос, который вы задаете, — это целая область исследований, называемая тематической категоризацией текста. Отличным обзором методов является "Машинное обучение в автоматизированной категоризации текста" в ACM Computing Surveys, автор Фабрицио Себастьяни.. Один из самых простых методов (хотя и не обязательно самый эффективный) состоит в том, чтобы иметь множество (сотни) примеров предложений в каждой категории, а затем обучать наивный байесовский классификатор на этих образцах предложений. NLTK содержит наивный байесовский классификатор в модуле nltk.classify.naivebayes.

person Ken Bloom    schedule 12.11.2009
comment
В настоящее время я занимаюсь своим старшим дизайн-проектом именно в этом и обнаружил, что SVM работает значительно лучше, чем Байес. Просто подумал, что вы хотели бы знать. Причина в том, что по мере роста обучающей выборки растет и количество признаков (слов), а некоторые слова могут упоминаться только один или два раза. Точность Байеса снижается, когда признаков слишком много. - person apexdodge; 16.01.2011

Отчасти это делает Google Sets, а также обсуждение, в котором упоминаются надмножества. Тем не менее, я не видел там никаких технических подробностей, только идеи и обсуждения.

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

person Doug L.    schedule 08.11.2009
comment
Я ввел данные о предметах на прикроватной тумбочке моей жены, и там появилось слово «терроризм». - person Pete Kirkham; 08.11.2009

Вы можете взглянуть на ресурс Домены WordNet от людей из ФБК. Это расширение WordNet, предназначенное для категоризации текста и устранения неоднозначности смысла слов. Он допускает разную степень детализации.

http://wndomains.fbk.eu/

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

person Community    schedule 14.11.2009

Tenqyu решила эту проблему с помощью Python и машинного обучения.

  1. Иметь набор данных текста
  2. Примените векторизацию Tf-idf. Вес термина, встречающегося в документе, просто пропорционален
    его частоте. (Предположение Луна, 1957 г.) Специфика термина может быть количественно определена как обратная функция количества документов, в которых он встречается.
  3. Векторная космическая модель
  4. Полиномиальная нативная байесовская классификация

Более подробно процесс описан здесь: https://hackernoon.com/how-to-better-classify-coachella-with-machine-learning-part-1-dc84c53d1a9c

person user1094824    schedule 08.10.2017