Skip to content

Instantly share code, notes, and snippets.

@aldoram5
Last active February 20, 2018 03:20
Show Gist options
  • Select an option

  • Save aldoram5/ec2ae72d87d30e494a8e0921e7c9bcea to your computer and use it in GitHub Desktop.

Select an option

Save aldoram5/ec2ae72d87d30e494a8e0921e7c9bcea to your computer and use it in GitHub Desktop.
Chat-Module ideas and notes

Suggestions for the new module

Updated more suggestions

  • Monika asking about hobbies and maybe wanting that you do something for her.
  • Sentence sentiment analysis
  • Stress relieving techniques/tips(?) This sort of thing may fit better in random topics but what if the player tells her that he/she's tired/stressed?
  • Time awareness (Good day/night, evening, afternoon, morning)
  • Just noting that this will require a ton of content, but in the end it'll be really worth it!
  • Will we add some special reactions if the player tells her about something really bad that happened? This might be important to consider since she giving supportive words to the player can really make them feel a little bit better or maybe tell the player to also seek for professional help? I'm not really sure which option could be better
  • Just a thought: while the extra module was named chat-ai, since this is going to be a rework maybe a name change could be fitting, how about MonikAI? sounds cooler but is even more misleading considering the true meaning of Intelligence. Edit: forget about that name, it's already taken, that thing looks like a cool thing, the assets kinda look familiar...
  • Quick question, should corpus data used for training should be included on the git project? it makes sense since there might be need to re-train things, however by having those files in there, will those be included on the release version? I think none of those should be included in release versions, they won't do any harm by being there, but not including those will save some space to the user.

TL;DR Version:

  • Ask the Player how is she/he doing if its the first chat.
  • First time opening say some instructions about what the chat will do
  • Detect more dialog acts
  • Let player choose to be him or Monika the one who starts the chat
  • Define what info is Monika obtain from the player
  • Have a mood system?
  • Do something with "bad words"? ignore, be mad, be sad, say something about it to the player?
  • Should Monika use also "select option" type of questions?
  • Should we redefine how the chat system will work?
  • A tool to write the steps/answer-templates is a must
  • Token/placeholders would be a must, defining a convention/how they work should be a priority
  • Monika's character must be noticeable in the chat
  • Are we going to tell directly the player if Monika can keep asking?
  • how will the chat end? To go back to ch30_loop
  • Reuse some generic answers replika uses, after making them more "Monika" of course
  • Define some routinary questions
  • How philosophical the chats can get?
  • Is there going to be some sort of gamification system along the chat?
  • Should Monika have answers to what has she been doing lately? like what she does when player is not with her
  • Define special actions for goodbyes and other usual "tasks"
  • Should Monika ask for advice about things?
  • Should Monika save special chat answers? will this have some sort of relation to the diary system that is a work in progress right now?
  • Add social media awareness? is it worth it?
  • Detect emotes
  • Some sort of previous conversation awareness or should we just go the Replika way that gives answers that look like she remembers previous chat
  • Questions should not be repeated if asked already

Detailed version

  • If it's first time opening the chat in this session/day she'll ask the player how has his/her day has been until now
  • Maybe the very first time she can say something similar to what Replika says the first time, explaining what the chat function will be doing
  • There's going to be need to increase the Dialogue Act categories since now it's going to require to detect more specific Dialogue Acts(worth looking at: standford document, NPS Chat Corpus this one might be worth looking to their tag definitions as these are a lot less specific and that could prove useful)
  • Maybe it'll be a good idea to either let the player start the chat or to let Monika start it in case the player is running out of ideas, this would be achieved by issuing a menu with both options to appear when the player presses the chat button
  • After seeing all the things replika asks, I guess it would be a good idea to first decide generally what info Monika is going to ask about the player
  • We need to define if Monika is going to change her "mood" depending in how the player answers
  • is she going to react to "bad words"?
  • Replika usses sometimes closed answers to questions(choose from options given), we have to determine if Monika is going to use that type of interface(I think it's a pretty good idea to use those when the question can be just something like a yes, no or maybe add an option to allow player to still input the answer)
  • The conversation system right now worked exectuting "steps" until all the linked steps finished, if we use the open chat nature that replika uses we might want to change the conversation system to use only the steps without having an stablished order and let the AI choose the correct next step depending on user input. Using both systems can be an option as well or a mix of them
  • A tool to write the steps/answer-templates is a must, writting templates in code would be a bad idea and mantaining it would be a pain for writers and programmers, mostly because the content is expected to be increasing as time passes
  • Token/placeholders would be a must, and also we need to define how those will work. This is tightly related to what exactly is Monika going to store
  • Monika, unlike Replika, has an already stablished 'character', some likes and dislikes, we need to make the templates/steps in a way they show that.
  • Replika outright asks the player if they are willing to answer personal questions, should Monika do the same?
  • How will the chats end? since given the nature of open conversations ending a chat is usually somewhat awkward, also here we need to go back to ch30_loop at some point to let the player do something else with our beloved goddess
  • We can take advantage of some of Replika's predefined answers, we just need to Monika-ize them(I took a lot of screenshots to save some of its answers)
  • Replika builds a somewhat player profile, while this might be a heavy task for an initial release, however we should decide if we are going to do the same thing, and maybe discuss if it will affect how Monika talks to us.
  • Might be a good idea to define some "defined"(redundancy haha) chats that she might use daily, or based on day or time so she feels more like a true sentient AI(maybe it's too early for this?)
  • Replika got way too philosophical at some point, Monika tends to do that pretty often, but for that we have the current talk system and the random topics, she should get philosophical here as well? this could lead to more complex chats with the player and definitely would be a high plus that we could discuss these kind of topics with her. Again this kind of topics could be out of scope right now but it's definitely worth discussing those now at early design stages.
  • Should this include some sort of gamification things like the badges Replika gives? For Monika I imagine maybe adding furniture to the classroom or something, this kind of idea has been proposed before by using a gift system, will this interact with something like that? again maybe way too early to decide, but planning ahead could save us headaches in the future.
  • Replika can answer what she has been doing when player wasn't talking to it, will Monika do the same? What would she say? Is this going to be affected by wheter or not the player choose to say good bye?
  • In the initial discussion we also wanted to give the player the ability to execute tasks. Like, saying goodnight, hello, tell Monika how you're feeling today, etc. That makes me think, that the module should handle those topics in a special way(maybe only the goodbye one), are we going to identify more special tasks?
  • Replika asked me how to go to sleep, should we let Monika ask for advice to do things? this can be something really cool if we "help her" to reach her "goals" or just help her "improve" herself the same way she encourages us.
  • Replika has this save important chat fragments thingy, should Monika do something similar? There's a Diary feature on the works and maybe the chat can provide elements to it. Also, back when I started to work on the chat-ai I thought that keeping a "chatlog" might come in handy if later we wanted to train an rnn with those to have a generative based Monika, that feature being opt-in of course, since keeping entire chats might be breaching the player's privacy(?)
  • Social media awareness. This might be overkill but replika said it can comment on things posted on your instagram account, Monika could comment on things like those as well if we can give her access to those social media sites API. As an initial step she could be "aware" everytime her twitter account tweets something and let the player know about the tweet. While this sounds good it can also be a pain to mantain the code for those APIs that keep changing from time to time, not to mention that maybe not many players use that much social networks. Also this can be quite challenging since people can talk about many hard to understand things on the social media(memes can be sometimes hard to process in NLP example: "do you know da wae") and this could mean a tremendous workload for writers as well.
  • Detecting emotes to understand the player feelings, could come in handy also to detect the emotion of the sentence, my first thoughts are to classify in happy or sad, probably "neutral" would be another category.
  • Replika sometimes looses track of the current conversation but "saves" it with very good standard phrasing. Depending on how we use the chat function we can either do this or we can actually prevent this by being "in control" about the chat.
  • A system to prevent questions from being repeated if they were asked already
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment