Вопрос или проблема
У меня есть коллекция (около 1000) очень шумных, похожих документов, каждый из которых очень длинный (>10 страниц – 600 параграфов) с множеством подразделов – я хочу провести тематическое моделирование по документам, чтобы выявить ключевые темы.
Я чувствую, что мне нужно внимательно подумать о том, как обработать документы, но мне трудно найти ресурсы/статьи. Кажется ли следующий подход разумным, и есть ли какие-либо статьи/источники, которые могут быть полезны?:
- Итерация по каждому документу
- Идентификация параграфов
- Сохранение только самых длинных параграфов (скажем, только верхний квартиль)
- Обычная предобработка NLP (стоп-слова, токенизация и т.д.)
- Встраивание каждого параграфа в виде вектора tf-idf
- Кластеризация KMeans по всем параграфам
- Использование кластеризованных параграфов в качестве новых документов в общей корпусе
Таким образом, конечный корпус будет состоять из документов, которые представляют собой кластеризованные параграфы из каждого оригинального документа. Затем я могу провести тематическое моделирование.
Некоторые начальные кластеризации дали плохие результаты (низкий индекс силуэта). Есть ли какие-либо подходы, которые могли бы помочь? Или что-то, что я мог упустить?
K-means имеет определенные предположения, которые ведут к высокому смещению из-за жесткого назначения. В случае тематического моделирования документы могут иметь перекрывающиеся классы, т.е. документ может содержать две темы.
Я бы предложил вам попробовать факторизацию ненегативной матрицы вместо K-means, чтобы проверить результаты.
Я предлагаю ознакомиться с bertopic (с умолчательными umap + hdbscan) и плотными встраиваниями из модели, подобной Bert. Лучше всего взять модель встраивания слов с большим количеством токенов, такой как Longformer с ~4000 входными токенами, которую затем обернуть в трансформер предложений. Потенциально вы можете воспользоваться встраивателем со 100000 входными токенами, чтобы все ваши документы полностью поместились в ввод вашего встраивателя.
Ответ или решение
Моделирование тем на длинных документах: кластеризация внутри документа как первичный этап
Моделирование тем является важным инструментом для извлечения значимых паттернов из больших объемов текстовых данных. В вашем случае, с коллекцией из 1000 длинных и шумных документов, подход, который вы рассматриваете, имеет свои достоинства, но также требует дальнейшего развития для достижения лучших результатов.
Этапы вашего подхода
Ваши этапы, изложенные в вопросе, логичны и имеют смысл. Давайте рассмотрим их по порядку, а также добавим рекомендации и альтернативные методы:
-
Итерация по каждому документу: Это хороший шаг, чтобы обеспечить комплексный подход к каждому тексту. Обратите внимание на структуру документов, такие как разделы и подразделы.
-
Идентификация параграфов: Деление на параграфы – ключевой момент, особенно в длинных документах, где структура может размываться. Позаботьтесь о сохранении контекста в параграфах.
-
Отбор длинных параграфов: Удерживание только верхнего квартиля по длине может быть полезным. Однако, возможно, стоит рассмотреть возможность включения параграфов, которые хорошо представляют темы, а не только самые длинные. Это поможет в дальнейшем контекстуальном моделировании.
-
NLP предобработка: Применение стандартных методов предобработки (удаление стоп-слов, токенизация, лемматизация) является хорошей практикой. Имейте в виду, что выбор стоп-слов следует адаптировать для вашей специфической области.
-
Векторизация параграфов с помощью TF-IDF: Этот метод может работать, но стоит рассмотреть и другие способы векторизации. Например, использование векторных представлений слов, таких как Word2Vec или GloVe, может более точно отразить семантические нагрузки.
-
Кластеризация с использованием K-Means: Этот метод может предоставить результаты, но стоит учитывать его ограничения, такие как жесткие присвоения классов. Темы в документах могут пересекаться, как гласит ваше замечание. В этом случае можно рассмотреть напряженную кластеризацию, например, HDBSCAN, которая более эффективно обрабатывает неопределенности.
-
Использование кластеризованных параграфов как новых документов: Превращение кластеризованных параграфов в новые документы – това правильный шаг для упрощения анализа, однако важно следить за тем, чтобы роль контекста не была потеряна.
Альтернативы и рекомендации
-
Негативное матричное факторизирование (NMF): Этот метод может быть полезен для нечеткого моделирования тем и лучше подходит для случаев, когда документы имеют перекрывающиеся темы. Использование NMF вместо K-Means может улучшить результаты, особенно если ваши документы содержат много информации.
-
Преобразовательные модели, такие как BERT: С применением современных архитектур, таких как BERT, можно добиться более точного представления данных. Вы можете рассмотреть использование BERT для представления текста и его когерентности. Для задач долгосрочного контекста попробуйте Longformer, который способен обрабатывать большее количество токенов.
-
Бертопик и HDBSCAN: Использование Bertopic в сочетании с HDBSCAN и UMAP может значительно улучшить качество модели. Эти методы помогут найти подмножества тем и выявить сложные паттерны без жестких границ кластеров.
Заключение
Ваш подход имеет многообещающие элементы, но улучшить точность кластеризации можно, добавив более сложные методы векторизации и кластеризации. Подобные альтернативы, включая работу с трансформерами и флексибельные модели, могут привести к лучшим результатам. Попробуйте оценить каждую стратегию, проводя тесты и сравнивая критерии, такие как силуэтный коэффициент, чтобы найти наиболее подходящий метод для вашей задачи.
Рекомендуемые ресурсы:
- "Bertopic: Topic Modeling with BERT embeddings" – Исходный репозиторий на GitHub.
- "Non-negative Matrix Factorization" – Исследуйте оригинальные статьи по NMF для дополнения своих знаний.
- "A Survey of Topic Modeling in Text Mining" – Обзор статей о различных методах моделирования тем.
Применяя указанные рекомендации, вы сможете достичь более высокоэффективных результатов в моделировании тем на длинных и сложных документах.