2009-11-08 4 views
2
I love to eat chicken. 
Today I went running, swimming and played basketball. 

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

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

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

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

+0

Почему "ЕДА", а не "ПТИЦЫ"? – Gareth

+0

Не могли бы вы дать нам какие-либо обновления о методах, которые вы пробовали и были успешными? – morfara

ответ

4

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

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

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

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

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

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

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

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

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

2

Google Sets делает некоторые из этого, и есть discussion, который упоминает надмножества. Тем не менее, я на самом деле не видел никаких технических деталей, просто идей и дискуссий.

Может быть, это может по крайней мере помочь исследования ...

+2

Я вошел в предметы на прикроватном столике моей жены и придумал «терроризм» –

+4

Мы следим за тобой, Киркхэм. –

2

Вопрос, который вы задаете, - это целая область исследований, называемая тематической категорией текста. Большой обзор методов - "Machine learning in automated text categorization" in ACM Computing Surveys, by Fabrizio Sebastiani..Один из простейших методов (хотя и не обязательно лучший) состоит в том, чтобы иметь множество (сотни) примеров предложений в каждой категории, а затем обучать наивный байесовский классификатор на этих выборках. NLTK содержит наивный байесовский классификатор в модуле nltk.classify.naivebayes.

+0

В настоящее время я занимаюсь своим старшим проектным проектом, и обнаружил, что SVM работает значительно лучше, чем Байес. Просто подумал, что ты хотел бы знать. Причина заключается в том, что по мере роста набора обучения количество элементов (слов), а некоторые слова могут упоминаться только один или два раза. Точность Байеса уменьшается, когда слишком много функций. – apexdodge

0

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

http://wndomains.fbk.eu/

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

0

Tenqyu решил использовать Python и Machine Learning.

  1. Есть набор данных текста
  2. Применить Tf-IDF векторизации. Вес термина, который встречается в документе, просто пропорционален
    к термину частоты. (The Luhn Assumption 1957) Специфика термина может быть количественно определена как обратная функция от количества документов, в которых оно происходит.
  3. векторное пространство модели
  4. полиномиальной Native Байеса Классификация

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