Определение контекста слова - Python - PullRequest
6 голосов
/ 23 марта 2010

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


У меня есть список слов , скажем:

Фото, бесплатно, поиск, изображение, CSS3, CSS, учебники, веб-дизайн, учебник, Google, Китай, цензура, политика, интернет

и у меня есть список контекстов :

  • Программирование
  • Мировые новости
  • Технология
  • Веб-дизайн

Мне нужно попытаться сопоставить слова с соответствующим контекстом / контекстами, если это возможно.

Может быть, каким-то образом обнаруживать отношения между словами.

alt text


Есть идеи?

Помощь будет высоко ценится!

Ответы [ 4 ]

3 голосов
/ 23 марта 2010

Похоже, это больше проблема категоризации / онтологии, чем НЛП. Попробуйте WordNet для стандартной онтологии.

Я не вижу никакого реального НЛП в вашей заявленной проблеме, но если вам нужен семантический анализ или анализатор, попробуйте NLTK .

2 голосов
/ 23 марта 2010

Я только что нашел это пару дней назад: ConceptNet

Это онтология здравого смысла, поэтому она может быть не такой специфичной, как хотелось бы, но у нее есть Python API, и вы можете загрузить всю их базу данных (в настоящее время около 1 ГБ распаковано). Просто имейте в виду их лицензионные ограничения .

Если вы прочитаете статьи , которые были опубликованы командой, разработавшей ее, вы можете получить некоторые идеи о том, как соотнести ваши слова с понятиями / контекстами.

2 голосов
/ 23 марта 2010

Откуда эти слова? Они приходят из реальных текстов. Если это так, то это классическая проблема интеллектуального анализа данных. То, что вам нужно сделать, это перевести ваш набор документов в матрицу, где строки представляют, из какого документа пришло слово, а столбцы представляют слова в документах.

Например, если у вас есть два таких документа:

D1: нужно найти смысл. D2: нужно отделить яблоки от апельсинов

Ваша матрица будет выглядеть так:

      Need to find meaning Apples Oranges Separate From
D1:   1     1   1     1      0      0       0       0
D2:   1     1   0     0      1      1       1       1

Это называется термином по матрице документов

Собрав эту статистику, вы можете использовать алгоритмы, такие как K-Means , для группировки похожих документов. Поскольку вы уже знаете, сколько у вас понятий, ваши задачи должны быть несколько проще. K-Means - очень медленный алгоритм, поэтому вы можете попытаться оптимизировать его, используя такие методы, как SVD

1 голос
/ 24 марта 2010

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

Другой вид таксономии, который может быть весьма полезен для вас, - это система категорий Википедии. Это не просто спонтанная идея, которую я только что придумал, но была проделана большая работа по выводу реальных онтологий из категорий Википедии. Взгляните на Java Wikipedia Library - идея состоит в том, чтобы найти статью в Википедии для рассматриваемого термина (например, «css3»), извлечь категории, к которым относится эта статья, и выбрать лучшие из них с уважение к некоторому критерию (например, «программирование», «технология» и «веб-разработка»). В зависимости от того, что вы пытаетесь сделать, этот последний шаг (выбор лучшей из нескольких категорий) может быть или не быть сложным.

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

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