Я построил некоторые нейронные сети (MLP (полностью подключенные), Elman (рекуррентные)) для различных задач, таких как игра в понг, классификация рукописных цифр и прочее ...
Кроме того, я попытался создать несколько первых сверточных нейронных сетей, например, для классификации многозначных рукописных заметок, но я совершенно новичок в анализе и кластеризации текстов, например, в задачах распознавания / кластеризации изображений можно полагаться на стандартизированный ввод, например изображения размером 25x25, RGB или оттенки серого и т. Д. ... Есть много предварительных предположений.
Для интеллектуального анализа текста, например, новостных статей, у вас постоянно меняется размер ввода (разные слова, разные предложения, разная длина текста, ...).
Как реализовать современный инструмент для анализа текста, использующий искусственный интеллект, предпочтительно нейронные сети / SOM?
К сожалению, мне не удалось найти простые учебники для начала. Сложные научные труды трудно читать, и это не лучший вариант для изучения темы (на мой взгляд). Я уже прочитал довольно много статей о MLP, методах отсева, сверточных нейронных сетях и т. Д., Но я не смог найти основную информацию о интеллектуальном анализе текста - все, что я нашел, было слишком высоким уровнем для моих очень ограниченных навыков интеллектуального анализа текста.
Помимо LDA вы можете использовать скрытый семантический анализ с K-Means . Это не нейронные сети, а скорее «классическая» кластеризация, но она работает довольно хорошо.
Пример в sklearn (взято отсюда ):
Теперь метки назначения кластера доступны в
km.labels_
Например, это темы, извлеченные из 20 групп новостей с помощью LSA:
Вы также можете применить факторизацию неотрицательной матрицы , которую можно интерпретировать как кластеризацию. Все, что вам нужно сделать, это взять самый большой компонент каждого документа в преобразованном пространстве - и использовать его как назначение кластера.
В склеарне:
источник
LSA + KMeans работает хорошо, но вы должны ввести количество ожидаемых кластеров. Кроме того, коэффициент силуэта найденных скоплений обычно низок.
Другой метод, с помощью которого я получаю лучшие результаты, - использовать пример DBSCAN . Он ищет центры высокой плотности и расширяется, образуя кластеры. В этом методе он автоматически находит оптимальное количество кластеров.
Я также обнаружил, что очень важно использовать стеммер, такой как Snowball для ex, который уменьшает ошибки из-за опечаток. Хороший список стоп-слов также очень важен, если вы хотите быть уверенным в том, чтобы избавиться от некоторых кластеров, которые не имели бы смысла из-за большого числа распространенных слов без значимого значения. Когда вы строите свою матрицу подсчета, нормализация также важна, она позволяет добавить вес к слову с низкой частотой в наборе данных, но высокой частотой в определенных выборках. Эти слова имеют смысл, и вы не хотите пропустить их. Это также снижает вес слов с высокой встречаемостью во всех конкретных выборках (близко к стоп-слову, но для слов, которые могут иметь небольшое значение). Последнее, что я заметил, было важно - это не печатать 10 лучших слов ваших кластеров, а более расширенный выбор. Обычно качество и релевантность ключевых слов по отношению к метке, которую вы бы дали кластеру, имеют тенденцию резко снижаться после этих 10–20 лучших слов. Таким образом, расширенный обзор ключевых слов поможет вам проанализировать, действительно ли ваш кластер действительно релевантен или сильно загрязнен шумом.
источник
Мой любимый метод - LDA ; Вы можете посмотреть здесь учебник с использованием пакетов Python.
Вы также можете посмотреть на такие более простые методы, как этот .
источник