Donc, je commence tout juste à apprendre comment un réseau de neurones peut fonctionner pour reconnaître les modèles et classer les entrées, et j'ai vu comment un réseau de neurones artificiel peut analyser les données d'image et catégoriser les images ( démo avec convnetjs ), et la clé là-bas consiste à sous-échantillonner l'image et chaque pixel stimule un neurone d'entrée dans le réseau.
Cependant, j'essaie de comprendre si cela peut être fait avec des entrées de chaîne? Le cas d'utilisation que j'ai est un "moteur de recommandation" pour les films qu'un utilisateur a regardés. Les films ont beaucoup de données de chaîne (titre, intrigue, tags), et je pourrais imaginer "sous-échantillonner" le texte en quelques mots clés qui décrivent ce film, mais même si j'analyse les cinq premiers mots qui décrivent ce film, je pensez que j'aurais besoin de neurones d'entrée pour chaque mot anglais afin de comparer un ensemble de films? Je pourrais limiter les neurones d'entrée uniquement aux mots utilisés dans l'ensemble, mais pourrait-il alors grandir / apprendre en ajoutant de nouveaux films (l'utilisateur regarde un nouveau film, avec de nouveaux mots)? La plupart des bibliothèques que j'ai vues ne permettent pas d'ajouter de nouveaux neurones après que le système a été formé?
Existe-t-il un moyen standard de mapper les données de chaîne / mot / caractère aux entrées dans un réseau neuronal? Ou un réseau neuronal n'est-il pas vraiment le bon outil pour analyser des données de chaîne comme celle-ci (quel est un meilleur outil pour le filtrage de motifs dans les données de chaîne)?
la source
Les réponses de @Emre et @Madison May présentent toutes deux de bons points sur le problème en question. Le problème consiste à représenter votre chaîne en tant que vecteur d'entité pour l'entrée dans le NN.
Tout d'abord, le problème dépend de la taille de la chaîne que vous souhaitez traiter. Les longues chaînes contenant des jetons may (généralement des mots) sont souvent appelées documents dans ce paramètre. Il existe des méthodes distinctes pour gérer les jetons / mots individuels.
Il existe plusieurs façons de représenter des documents. Beaucoup d'entre eux font l' hypothèse du sac de mots . Les types les plus simples représentent le document comme un vecteur du nombre de mots ou de la fréquence des termes (tf). Afin d'éliminer les effets de la longueur du document, les gens préfèrent généralement normaliser par le nombre de documents dans lesquels un terme apparaît, la fréquence du document ( tf-idf ).
Une autre approche est la modélisation de sujet, qui apprend une représentation latente de dimension inférieure des données. LDA et LSI / LSA sont des choix typiques, mais il est important de se rappeler que cela n'est pas supervisé. La représentation apprise ne sera pas nécessairement idéale pour tout apprentissage supervisé que vous faites avec votre NN. Si vous souhaitez faire de la modélisation de sujets, vous pouvez également essayer des modèles de sujets supervisés .
Pour les mots individuels, vous pouvez utiliser word2vec , qui exploite les NN pour incorporer des mots dans un espace de taille arbitraire. La similitude entre deux vecteurs de mots dans cet espace appris tend à correspondre à une similitude sémantique.
Une approche pionnière plus récente est celle des vecteurs de paragraphe , qui apprennent d'abord un modèle de mot de type word2vec, puis s'appuient sur cette représentation pour apprendre une représentation distribuée d'ensembles de mots (documents de toute taille). Cela a montré des résultats de pointe dans de nombreuses applications.
Lors de l'utilisation de NN dans la PNL, les gens utilisent souvent des architectures différentes, comme les réseaux neuronaux récurrents (comme les réseaux de mémoire à court terme ). Dans certains cas, les gens ont même utilisé des réseaux de neurones convolutifs sur du texte.
la source
Ce n'est pas un problème sur les réseaux de neurones en soi, mais sur la représentation des données textuelles dans l'apprentissage automatique. Vous pouvez représenter les films, la distribution et le thème sous forme de variables catégorielles. L'intrigue est plus compliquée; vous voudriez probablement un modèle de sujet pour cela, mais je laisserais ça de côté jusqu'à ce que vous compreniez. Il fait précisément ce "sous-échantillonnage" textuel que vous avez mentionné.
Jetez un œil à ce didacticiel pour savoir comment coder des variables catégorielles pour les réseaux de neurones. Et bonne chance!
la source
J'ai essayé les 2 façons suivantes pour l'implémentation d'essai-n-test de réseaux de neurones avec du texte. Ce dernier fonctionne assez bien, mais avec des limites.
Créez du vocabulaire en utilisant word2vect ou NLTK / jetons de mots personnalisés et attribuez un index à chaque mot. C'est cet index qui représente le mot sous forme de nombre.
Défis:
Utilisez la matrice d'identité, par exemple pour les mots "n", utilisez la matrice "nx n" ou (n-1 x n-1) où chaque ligne et colonne représente un mot. Mettez "1" dans la cellule d'intersection et "0" dans les lieux de repos. ( référence )
Défis:
la source