lukalabs / cakechat

CakeChat: Emotional Generative Dialog System
Apache License 2.0
1.7k stars 935 forks source link

Training on group chat instead of one on one conversation #35

Closed SuperGayBoi closed 6 years ago

SuperGayBoi commented 6 years ago

Would it be possible to train the existing architecture on group data instead of one on one conversation? if so: whats the best way to do this? if not: what changes could be made to make this possible?

nicolas-ivanov commented 6 years ago

I'm not sure I fully understand what "group data" looks like and what you are trying to achieve with it.

SuperGayBoi commented 6 years ago

The goal would be to create a bot that can effectively participate in group chats.

not sure the best way to format "group data" that's part of what I wanted guidance with. its hypothetical

nicolas-ivanov commented 6 years ago

Cakechat model is capable of generating an answer for a given context, where the context may consist of one of several utterances. Our model was trained on dialogs with alternating utterances, i.e. only two speakers (let's call them A and B) participated in each dialog and every other context utterance was from another speaker: A, B, A -> B.

You can use the same Seq2seq architecture for conversations with more than two speakers. One way to do it is just to fine tune our trained model on data that comes from several speaker, like A, B, C -> A.

However, without extra information the model will hardly be capable to distinguish the speakers in a dialog, and I assume, that is a desired feature for your model. If so, it would be helpful to acquire a dataset where each utterance is labeled with a speaker id. In this case you can feed these labels to a model as conditions:

[{"text": "Hi, Eddie, what's up?", "condition": "person_1"}, {"text": "Not much, what about you?", "condition": "person_2"}, {"text": "Fine, thanks", "condition": "person_1"}, {"text": "Hey, guys! Are you up for a movie?", "condition": "person_3"}]

The article "A Persona-Based Neural Conversation Model" may be relevant to your needs.