Определение контекста слова - Python

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


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

фотография, бесплатная, поисковая, изображение, css3, CSS, учебные руководства, webdesign, учебное руководство, Google, фарфор, цензура, политика, Интернет

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

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

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

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

alt text


Какие-либо идеи?

Справка очень ценилась бы!

6
задан dmcer 24 March 2010 в 18:17
поделиться

4 ответа

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

Я не вижу настоящего NLP в указанной вами проблеме, но если вам нужен семантический анализ или синтаксический анализатор, попробуйте NLTK .

3
ответ дан 16 December 2019 в 21:37
поделиться

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

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

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

2
ответ дан 16 December 2019 в 21:37
поделиться

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

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

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

2
ответ дан 16 December 2019 в 21:37
поделиться

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

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

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

1
ответ дан 16 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: