Как строятся облака ключевых слов? - PullRequest
1 голос
/ 11 ноября 2019

Как создаются облака ключевых слов? Я знаю, что существует много методов nlp, но я не уверен, как они решают следующую проблему:

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

(В моей собственной программе эти статьи представляют собой статьи, в которых я могу использовать методы nlp для определения собственных имен, людей, мест и (?) Возможных предметов. Это будет очень большой список, учитывая статью достаточного размера, но я предполагаю, что могу свернуть список, используя какой-то метод, сравнивая статьи. Я не совсем понимаю, как это сделать правильно.

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

I предположим , что я мог бы создать эвристику, где, если слово существует в n% элементов, где n естьдостаточно мал, но вернет хороший список (скажем, 5% из 1000 статей - это 50, что кажется разумным), тогда я мог бы просто использовать это. Однако , проблема, которую я использую с этим подходом, заключается в том, что, учитывая два разных набора совершенно разных предметов, скорее всего, существует некоторая разница во взаимосвязи между предметами, и я выбрасываю эту информацию.

Это очень неудовлетворительно.

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

Если у кого-то есть какие-либо идеи, пожалуйста, дайте мне знать.

Спасибо!

РЕДАКТИРОВАТЬ:

Freenode / Programming / Guardianx предложил https://en.wikipedia.org/wiki/Tf%E2%80%93idf

TF-IDF нормально, но проблема в том, что вес должен бытьрешительно априори. Учитывая, что две разные коллекции документов будут иметь различное внутреннее сходство между документами, предполагая, что априорный вес не является правильным

freenode / программирования / anon предлагается https://en.wikipedia.org/wiki/Word2vec

Я не уверен, что хочу что-то, что использует нейронную сеть (немного сложнее для этой проблемы?), Но все еще рассматривает.

1 Ответ

1 голос
/ 11 ноября 2019

Tf-idf - все еще довольно стандартный метод извлечения ключевых слов. Вы можете попробовать демонстрационную версию экстрактора ключевых слов на основе tf-idf (который, как вы говорите, определен как apriori, имеет вектор idf, оцененный из Википедии). Популярной альтернативой является алгоритм TextRank , основанный на PageRank, который имеет готовую реализацию в Gensim .

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

Минимум, который вам нужно сделать, - это удалить стоп-слова, которые, как вы знаете, никогда не могут быть ключевыми словами (предлоги, статьи, местоимения и т. Д.). Если вы хотите что-то более изощренное, вы можете использовать, например, Spacy , чтобы сохранить только нужные части речи (существительные, глаголы, прилагательные). Вы также можете включить частые выражения из нескольких слов (gensim имеет хорошую функцию для автоматического определения коллокации), именованные сущности (spacy может это сделать). Вы можете получить лучшие результаты, если запустите разрешение основной части и замените местоимения тем, к чему они относятся ... Существуют бесконечные варианты улучшений.

...