Вопрос или проблема
Вот мой корпус
{
0: "собаки милые", # собаки дружелюбные
1: "метисы добрые", # собаки дружелюбные
2: "псинки прекрасные", # собаки дружелюбные
...,
3: "кошки злые", # кошки недружелюбные
4: "могги противные", # кошки недружелюбные
5: "котики недобрые", # кошки недружелюбные
}
Как человек, я вижу из этих документов, что:
- собаки дружелюбные (0, 1, 2)
- кошки недружелюбные (3, 4, 5)
Но как машина может прийти к такому же выводу?
Если бы я воспользовался методом латентного размещения Дирихле, мне кажется, он столкнется с трудностями в нахождении тем, поскольку синонимы “размывают” основное значение. Например:
- “собаки”, “псинки” и “метисы” могут все относиться к “собакам”
- “милые”, “добрые” и “прекрасные” могут все относиться к “дружелюбной черте характера”
Есть ли способ использовать уже обученный набор латентных векторов (например, Google News-vectors-negative300.bin.gz) для представления каждого документа в более широких категориях, а затем находить темы? (т.е. вместо использования ‘сырых’ слов)
Это вообще имеет смысл?
ДОБАВЛЕНИЕ: Если подумать, моя проблема в основном сводится к: возможно ли заменить/переопределить набор схожих по значению слов одним всеобъемлющим словом?
Один из вариантов – начать с поиска шаблонов с помощью установленных инструментов. Для каждого утверждения найдите субъект и сентимент.
Вот готовые инструменты (без обучения или машинного обучения):
- WordNet – большая лексическая база данных английских слов.
- Synset – способ найти группы синонимичных слов, которые выражают одно и то же понятие.
- SentiWordNet присваивает каждому синосету из WordNet.
Ответ или решение
Для извлечения латентных тем из вашего корпуса текстов, содержащего синонимы, можно использовать несколько методов, которые помогут машинному обучению справиться с "разводнением" значений из-за синонимов. Ваша задача заключается в группировке фраз и выражений по общей тематике, что можно сделать с помощью предварительной обработки и использования векторных представлений слов.
1. Использование предобученных векторных моделей
Вы можете использовать предобученные векторные модели, такие как Word2Vec или GloVe, чтобы преобразовать слова в векторы, представляющие их семантические значения. Ваша ссылка на модель Google News также является хорошим примером.
Этапы работы:
-
Предобработка текста: Преобразуйте текст в нижний регистр, удалите знаки препинания и выполните токенизацию.
-
Векторизация: Для каждого документа представьте его как среднее арифметическое векторов слов, входящих в документ. Таким образом, вместо того чтобы представлять каждый документ отдельными словами, вы получите "представление документа", которое будет более устойчивым к синонимам.
2. Группировка с использованием кластеризации
После получения векторов документов вы можете применить алгоритмы кластеризации, такие как K-средние или иерархическая кластеризация, чтобы сгруппировать документы по их векторным представлениям.
Этапы работы:
-
Кластеризация: Примените метод K-средних к векторным представлениям ваших документов. Определите количество кластеров вручную или используйте метод локтя для определения оптимального количества.
-
Анализ кластеров: После кластеризации вы сможете проанализировать, какие документы попали в каждый кластер, и определить общие темы, присущие каждому кластеру.
3. Замена синонимов на обобщающие термины
Вы также можете использовать инструменты, такие как WordNet и SentiWordNet, для замены синонимов на более обобщенные термины.
Этапы работы:
-
Использование WordNet: Обратите внимание на группы синонимов (synsets) и замените слова в ваших документах на обобщающее слово, представляющее каждую группу.
-
Сентимент-анализ: Если вас интересуют также эмоциональные окраски текста, SentiWordNet поможет вам оценить положительные и отрицательные характеристики.
4. Применение LDA после предобработки
Если вы хотите использовать Latent Dirichlet Allocation (LDA) после обработки синонимов, вы можете:
- Запустить LDA на тексте с замененными синонимами, что увеличит вероятность того, что алгоритм распознает латентные темы, поскольку он будет работать с уменьшенным количеством уникальных слов.
Заключение
Таким образом, вы можете эффективно использовать предобученные векторные модели и алгоритмы кластеризации для извлечения тем из вашего текста. Замена синонимов на общие термины также поможет улучшить качество тем, которые извлекаются из корпуса. Эти методы в сочетании позволяют компьютеру лучше понимать семантику текстовой информации и формировать практические, полезные выводы.