J'ai construit des réseaux de neurones (MLP (entièrement connecté), Elman (récurrent)) pour différentes tâches, comme jouer au Pong, classer les chiffres manuscrits et tout ça ...
De plus, j'ai essayé de construire certains premiers réseaux de neurones convolutifs, par exemple pour classer des notes manuscrites à plusieurs chiffres, mais je suis complètement nouveau pour analyser et regrouper des textes, par exemple dans les tâches de reconnaissance / clustering d'images, on peut s'appuyer sur une entrée standardisée, comme des images de taille 25x25, RVB ou niveaux de gris et ainsi de suite ... il existe de nombreuses fonctionnalités de pré-hypothèse.
Pour l'exploration de texte, par exemple les articles de presse, vous avez une taille d'entrée en constante évolution (différents mots, différentes phrases, différentes longueurs de texte, ...).
Comment mettre en œuvre un outil d'exploration de texte moderne utilisant l'intelligence artificielle, de préférence des réseaux de neurones / SOM?
Malheureusement, je n'ai pas pu trouver de didacticiels simples pour commencer. Les articles scientifiques complexes sont difficiles à lire et ne sont pas la meilleure option pour apprendre un sujet (selon moi). J'ai déjà lu pas mal d'articles sur les MLP, les techniques de décrochage, les réseaux de neurones convolutifs et ainsi de suite, mais je n'ai pas pu en trouver un de base sur l'exploration de texte - tout ce que j'ai trouvé était beaucoup trop élevé pour mes compétences très limitées d'exploration de texte.
En dehors de LDA, vous pouvez utiliser l' analyse sémantique latente avec K-Means . Ce ne sont pas des réseaux de neurones, mais plutôt un clustering "classique", mais cela fonctionne plutôt bien.
Exemple en sklearn (tiré d' ici ):
Désormais, les étiquettes d'affectation de cluster sont disponibles dans
km.labels_
Par exemple, ce sont les sujets extraits de 20 groupes de discussion avec LSA:
Vous pouvez également appliquer la factorisation matricielle non négative , qui peut être interprétée comme un clustering. Tout ce que vous devez faire est de prendre le plus grand composant de chaque document dans l'espace transformé - et de l'utiliser comme affectation de cluster.
En sklearn:
la source
LSA + KMeans fonctionne bien mais vous devez saisir le nombre de clusters que vous attendez. De plus, le coefficient de silhouette des grappes trouvées est généralement faible.
Une autre méthode avec laquelle j'obtiens de meilleurs résultats consiste à utiliser l' exemple DBSCAN ici . Il recherche des centres de haute densité et se dilate pour former des grappes. Dans cette méthode, il trouve automatiquement la quantité optimale de clusters.
J'ai également trouvé très important d'utiliser un stemmer, comme Snowball par exemple, qui réduit les erreurs dues aux fautes de frappe. Une bonne liste de mots vides est également très importante si vous voulez être sûr de vous débarrasser de certains clusters qui n'auraient aucun sens en raison de la forte occurrence de mots communs sans signification significative. Lorsque vous construisez votre matrice de comptage, la normalisation est également importante, elle permet d'ajouter du poids à un mot avec une faible occurrence dans l'ensemble de données, mais avec une occurrence élevée dans des échantillons particuliers. Ces mots ont un sens et vous ne voulez pas les manquer. Il réduit également le poids des mots avec des occurrences élevées dans tous les échantillons particuliers (proche du mot d'arrêt mais pour les mots qui peuvent avoir un peu de sens). Une dernière chose que j'ai remarquée était importante n'est pas d'imprimer les 10 premiers mots de vos clusters, mais une sélection plus étendue. Habituellement, la qualité et la pertinence des mots clés par rapport au libellé que vous attribuez au cluster ont tendance à diminuer considérablement après ces 10 à 20 premiers mots. Ainsi, une vue étendue des principaux mots clés vous aidera à analyser si votre cluster est vraiment pertinent ou très pollué par le bruit.
la source
Ma méthode préférée est le LDA ; vous pouvez consulter ici un tutoriel utilisant des packages python.
Vous pouvez également consulter des méthodes beaucoup plus simples comme celle-ci .
la source