4

J'ai une application de chat qui fonctionne avec des messages prédéfinis. La base de données contient environ 80 conversations prédéfinies, chacune avec 5 réponses possibles. Pour clarifier, voici un exemple:Génération de texte précise

Q: "How heavy is a polar bear?" 

R1: "Very heavy?" 
R2: "Heavy enough to break the ice." 
R3: "I don't know. Silly question." 
R4: ... 
R5: ... 

Disons que l'utilisateur choisira R3: «Je ne sais pas question idiote »

Ensuite, cette réponse aura 5 réponses possibles, par exemple:

R1: "Why is that silly?" 
R2: "You're silly!" 
R3: "Ugh. I'm done talking to you now." 
R4: ... 
R5: ... 

Et chacune de ces réponses aura 5 réponses possibles; après quoi, la conversation prendra fin et il faudra en commencer une nouvelle. Donc, pour récapituler, j'ai 80 conversations écrites manuellement, chacune avec 5 réponses possibles, allant jusqu'à 3 couches de profondeur = 10 000 messages au total.

Ma question: Quelle serait la manière la plus précise de générer automatiquement plus de conversations comme celles-ci en utilisant l'apprentissage automatique? J'ai recherché RNN: Karparthy's RNN post. Bien que RNN puisse créer un nouveau contenu basé sur l'ancien, le nouveau contenu est assez aléatoire et absurde.

Pour une meilleure compréhension de l'utilisation de ces conversations, rendez-vous au http://getvene.com/ et regardez la vidéo d'aperçu.

+0

qu'essayez-vous d'accomplir? essayez-vous simplement de générer des conversations à consonance réaliste ou essayez-vous de le rendre réellement informatif? – user3080953

+0

Un son réaliste, c'est amusant à utiliser est l'objectif principal –

Répondre

3

Je commencerais probablement avec un modèle de texte génératif. Il y a un bon article qui utilise Python et Keras (vous pouvez cependant utiliser le réseau neuronal récurrent de LSTM également avec TensorFlow). Avec un ensemble de données d'apprentissage bon et riche, l'algorithme peut en effet produire des sorties de texte très intéressantes. Comme mentionné dans l'article ci-dessus, il y a un projet Gutenberg où vous pouvez trouver un nombre impressionnant de livres gratuits gratuitement. Cela devrait fournir une quantité suffisante de données d'entraînement. Cependant, puisque vous avez probablement déjà joué avec RNN, je vais aller plus loin.

La chose suivante sont les relations entre un question et responses possible. Cela me dit qu'il y a une certaine sémantique impliquée dans vos conversations. Ce qui signifie que ce n'est pas aléatoire et que les réponses générées devraient au moins essayer de «s'adapter» à une réponse quelque peu pertinente. Quelque chose comme Latent Dirichlet Allocation pour trouver une bonne catégories et des sujets basés sur des données, mais de manière inversée - basé sur le sujet (question), vous devez trouver au moins en quelque sorte des données pertinentes (réponses). Peut-être un moyen de diviser le texte généré en plusieurs parties, puis vectoriser ces parties et utiliser quelque chose comme Document Distance algorithme pour trouver la correspondance? Une idée qui pourrait aussi être utile est la Latent Semantic Analysis parce qu'en fait, à partir d'une matrice de mots/vecteurs, vous devez réduire la matrice autant que vous le pouvez tout en préservant les similitudes.