Вопрос или проблема
Я хотел бы классифицировать тексты без использования каких-либо моделей машинного обучения. Моя идея состоит в том, чтобы составить список ключевых слов, которые я назначу каждой категории. Затем, когда мне нужно будет классифицировать новый текст, я смогу сравнить его с моим списком ключевых слов и подсчитать, сколько ключевых слов для каждой категории содержится в тексте; категория с наибольшим количеством соответствующих ключевых слов будет моим окончательным прогнозом.
Пример классификации для этого списка ключевых слов:
зеленый : A
красный : B
яблоко : A
автомобиль : C
Предложение "Зеленое яблоко в автомобиле" классифицируется как A.
(Баллы => A : 2, B : 0, C : 1)
Вопрос в том, какие хорошие техники мне стоит изучить, чтобы составить свой список ключевых слов на основе тысяч различных текстов и ~5 классов? Большинство алгоритмов для извлечения ключевых слов, которые я нашел (RAKE и др.), сосредоточено на извлечении ключевых слов из одного текста, что совершенно не соответствует моей цели.
Это был бы хороший ‘базовый’ алгоритм для сравнения результатов с более продвинутыми методами классификации ML для моего исследования.
Вам, вероятно, следует рассмотреть простой случай условных вероятностей – например, наивный байесовский классификатор. Предположим, что вы используете Python, вы могли бы посмотреть пример “наивного байесовского классификатора спама” – в вашем примере вам нужно будет полагаться на 5 случаев, вместо стандартных 2, на которые полагаются спам-движки.
Пример можно найти здесь: https://www.kdnuggets.com/2020/07/spam-filter-python-naive-bayes-scratch.html
Соотнесите ваш текст со списком ключевых слов, а не наоборот, как вы обычно думаете о том, как решить эту задачу, ища ваши ключевые слова в тексте. Посмотрите, например, как работает алгоритм Ахое-Корасика. Вы можете использовать ваши классификации в качестве результата для найденных в тексте ключевых слов. Ваше решение может быть деревом ключевых слов, как AHO. Вам, возможно, не понадобятся транзакции перезапуска и перехода, потому что вы не хотите искать перекрывающиеся ключевые слова.
Ответ или решение
Извлечение ключевых слов для классификации текстов бизнес-правил
Классификация текстов без использования моделей машинного обучения — интересная задача, которая может стать основой для сравнения с более сложными методами в будущем. Предложенный подход, основанный на подсчете ключевых слов, может быть реализован с использованием ряда эффективных техник. В данной статье мы подробно рассмотрим, как создать список ключевых слов на основе множества текстовых записей и пяти классов.
1. Определение ключевых слов для классов
Первый шаг заключается в создании списка ключевых слов, соответствующих каждому из классов. Для этого можно использовать следующие методы:
-
Анализ частоты слов: Проанализируйте все текстовые данные, чтобы определить, какие слова чаще всего встречаются в текстах, относящихся к каждому классу. Для этого можно использовать такие инструменты, как TF-IDF (term frequency-inverse document frequency), чтобы выделить наиболее значимые термины для каждого класса.
-
Составление групп ключевых слов: Определение ключевых слов можно улучшить, связывая их с контекстом. Например, если класс A относится к экологии, вы можете добавить такие слова, как "экологичный", "устойчивое развитие", которые могут быть менее частыми, но более специфичными.
2. Использование алгоритмов для оптимизации извлечения ключевых слов
Для построения более надежного списка ключевых слов можно применить следующие алгоритмы:
-
Алгоритм Aho-Corasick: Данный алгоритм позволяет эффективно находить несколько ключевых слов в тексте одновременно. Создание дерева ключевых слов (или префиксного дерева) поможет вам быстро идентифицировать присутствие ключевых слов в новых текстах, минимизируя затраты по времени.
-
Методы обработки естественного языка (NLP): Использование библиотек NLP, таких как NLTK или SpaCy, может помочь в нормализации слов, также как в выделении наиболее значимых слов и фраз.
3. Создание механизма классификации
Как только у вас будет список ключевых слов для каждого класса, следующим шагом станет создание механизма классификации:
-
Подсчет совпадений: Для каждого нового текста подсчитайте количество ключевых слов, найденных в тексте, для каждого класса. Класс, ключевых слов которого больше всего, будет выбран как предсказанный.
-
Использование условных вероятностей: Этот подход можно дополнить методами, подобными наивному байесовскому классификатору, в котором вероятность принадлежности текста к классу можно оценить на основе предыдущих текстов. Для этого потребуется небольшое количество дополнительных шагов по ручной настройке, но улучшит точность классификации.
4. Тестирование и оценка
Для дальнейшего развития этой идеи имеет смысл проводить тестирование алгоритма на различных текстах. Выделите наборы данных, которые будут служить как тренировочными, так и тестовыми.
Заключение
Хотя предложенный метод основан на простом подсчете ключевых слов, его реализация с использованием алгоритмов, таких как Aho-Corasick и методов обработки естественного языка, позволит вам создать эффективный инструмент для классификации текстов. Как только этот базовый алгоритм будет установлен, его результаты можно будет сравнить с более сложными моделями машинного обучения, что даст возможность оценить их эффективность и целесообразность в вашем исследовании. Такой подход не только позволит вам быстро создать базовое решение, но и обеспечит хорошие условия для дальнейшего анализа и улучшения.