web-dev-qa-db-fra.com

traitement de chaînes de texte pour l'entrée de réseau neuronal

Je comprends que l’entrée ANN doit être normalisée, normalisée, etc., en laissant de côté les particularités et les modèles de différentes ANN, comment puis-je prétraiter du texte codé en UTF-8 dans la plage de {0,1} ou alternativement entre la plage { -1,1} avant qu'il soit donné en entrée aux réseaux de neurones? J'ai recherché cela sur Google mais je ne trouve aucune information (j'utilise peut-être le mauvais terme).

  1. Cela a-t-il du sens?
  2. N'est-ce pas la façon dont le texte est prétraité pour les réseaux de neurones?
  3. Y a-t-il des alternatives?

EDIT 20-November-2013:

J'ai longtemps accepté comme correcte la réponse de Pete… .. Cependant, j'ai de sérieux doutes, principalement en raison de recherches récentes que j'ai effectuées sur la connaissance symbolique et les ANN.

Dario Floreano et Claudio Mattiussi expliquent dans leur livre que ce traitement est effectivement possible, en utilisant encodage distribué.

En effet, si vous essayez une recherche google scholar, il existe une pléthore d'articles et de travaux sur les neurosciences sur la manière dont l'encodage est censé être utilisé par le cerveau pour coder la Connaissance symbolique.

Teuvo Kohonen} _, dans son article "Cartes auto-organisées", explique:

On pourrait penser que l’application des lois d’adaptation neuronale à un jeu de symboles (considéré comme un ensemble de variables vectorielles) peut créer un carte topographique indiquant les "distances logiques" entre le symboles. Cependant, il se pose un problème qui réside dans le différent nature des symboles par rapport aux données continues. Pour le dernier, la similarité apparaît toujours de manière naturelle, sous forme de différences métriques entre leurs encodages continus. Ce n'est plus vrai pour des éléments discrets et symboliques, tels que des mots, pour lesquels aucune métrique n'a été défini. C'est dans la nature même d'un symbole que sa signification est dissociés de son encodage.

Cependant, Kohonen a réussi à traiter les informations symboliques dans les MOS!

En outre, Dr. Alfred Ultsch dans son article "L'intégration des réseaux de neurones avec Traitement des connaissances symboliques" traite précisément de la manière de traiter les connaissances symboliques (telles que le texte) dans les ANN. Ultsch propose les méthodologies suivantes pour le traitement de la connaissance symbolique: raisonnement approximatif neural, unification neurale, introspection et intégration Acquisition de connaissances. Bien que peu d’informations puissent être trouvées sur ceux de Google Scholar ou d’ailleurs ailleurs.

Pete dans sa réponse a raison sur la sémantique. La sémantique dans les ANN est généralement déconnectée. Cependant, après référence, explique comment les chercheurs ont utilisé des RBM, formés pour reconnaître la similarité de la sémantique de différentes entrées de Word. Il ne devrait donc pas être impossible d’avoir une sémantique, mais nécessiterait une approche en couches, ou un ANN secondaire si une sémantique est requise. .

Traitement du langage naturel avec des réseaux neuronaux sous-symboliques, Risto Miikkulainen, 1997Formation de machines Boltzmann restreintes aux observations de mots, G.E.Dahl, Ryan.P.Adams, H.Rarochelle, 2012

25
Ælex

Je vais aller de l'avant et résumer notre discussion comme réponse ici.

Votre objectif est d’incorporer du texte dans votre réseau de neurones. Nous avons établi que les ANN traditionnels ne conviennent pas vraiment à l'analyse de texte. L'explication sous-jacente de cette situation repose sur l'idée que les RNA agissent sur des entrées qui sont généralement une plage continue de valeurs et que la proximité de deux valeurs pour une entrée signifie une sorte de proximité dans leur signification. Les mots n'ont pas cette idée de proximité et ainsi, il n'y a pas de codage numérique réel pour les mots qui peuvent avoir un sens en tant qu'entrée dans un ANN.

D'autre part, une solution qui pourrait fonctionner consiste à utiliser une analyse sémantique plus traditionnelle qui pourrait éventuellement produire des plages de sentiment pour une liste de sujets, puis ces sujets et leurs valeurs de sentiment pourraient éventuellement être utilisés comme entrée pour un ANN.

18
Pete

Je pense qu'il serait fascinant de nourrir du texte (codé au niveau du caractère) à un réseau de croyances profond, pour voir quelles propriétés du langage il peut découvrir.

De nombreux travaux ont été effectués récemment sur la modélisation du langage de réseau neuronal (principalement au niveau Word, mais également au niveau du personnage).

Voir ces liens pour plus d'informations 

http://www.stanford.edu/group/pdplab/pdphandbook/handbookch8.htmlhttp://code.google.com/p/Word2vec/

Les vecteurs Word sont codés en s’entraînant sur un grand corpus d’articles de Wikipédia, etc., et ont pu acquérir des caractéristiques sémantiques et syntaxiques, ce qui permet de définir une "distance" entre eux "

"Il a été récemment montré que les vecteurs Word saisissent de nombreuses régularités linguistiques, par exemple vecteur d'opérations vectorielles ('roi') - le vecteur ('homme') + le vecteur ('femme') est proche du vecteur ('reine')"

Voir également ce superbe document de recherche d'Ilya Sutskever sur la génération de caractères aléatoires, qui présentent les caractéristiques de la langue anglaise après avoir été formés sur wikipedia. Des trucs incroyables!

http://www.cs.toronto.edu/~ilya/pubs/2011/LANG-RNN.pdfhttp://www.cs.toronto.edu/~ilya/rnn. html (Démo de texte en ligne de génération de texte - très cool!)

7
swami

Ce que vous essayez de faire n’est pas tout à fait clair, mais j’imagine que cela semble en quelque sorte lié à ce que les gens appellent le "langage naturel". Il y a beaucoup de références à ce sujet ... Je ne suis pas un expert, mais je sais par exemple qu'il existe des références intéressantes par O'Reilly. 

Du point de vue de NN, il existe de nombreux modèles NN différents. Je pense que vous faites allusion au perceptron multicouche le plus populaire, doté d’une sorte d’algorithme de rétropropagation, mais il existe de nombreux modèles de mémoire associative qui pourraient mieux convenir à votre cas. Le livre de Simon Haykin est une très bonne référence à ce sujet.

Cependant, si j'essayais de faire quelque chose comme cela, je commencerais à essayer de comprendre comment la fréquence des lettres, des syllabes et des mots se présente ensemble dans la langue anglaise (?). 

J'espère que j'ai aidé. Comme je l'ai déjà dit, je ne suis pas un expert dans le domaine. 

2
DanielTheRocketMan

Solution 1: A = Alt (65) = 65 Bin = 01000001

Solution 2: Ajoutez des mots à la base de données du dictionnaire et ajoutez le champ id (int) . Convertissez le champ id en binaire.

En NN, utilisez des lettres ou des mots id (en binaire)

0
user3557421