Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: TIMEXОтветов: 5
I love to eat chicken.
Today I went running, swimming and played basketball.

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

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

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

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

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

pythontextnlpnltk

Ответы

Ответ 1 · рейтинг 4 · Nathan

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

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

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

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

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

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

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

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

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

Ответ 2 · рейтинг 3 · Ken Bloom

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

Ответ 3 · рейтинг 2 · Doug L.

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

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

Ответ 4 · Community

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

http://wndomains.fbk.eu/

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

Ответ 5 · user1094824

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы