Mechanics: Generating NPC Conversations – Side B – RL

My previous thoughts on generating conversations touched upon a rather specific case of human interactions. It focused on comments on the Internet. After writing that I considered if that makes any sense to use in the case of a real life conversation (in the context of the fiction of course) and my conclusion was that no… no, it doesn’t work.

There are a few reasons why and also a few thoughts about how it could possibly work I’d like to share.

Starting with the reasons, there are two huge differences between a conversation online and in person. The first is that online communication allows for non-linear exchanges, with comment trees usually forming a tree. Users can very much jump between various points of that tree and develop t into separate conversations. The issue is that this does not work with speaking with someone directly. All conversations, in this case, play out sequentially in time. The second significant difference is consent. Online interactions can be somewhat more hostile due to their impersonal nature. The way some people speak to other online do not work when in someone’s physical proximity. Thus I think that the tone of such conversations would be friendlier and more positive.

1) Topics

I remember a long time ago I was reading about ALICE there was this one thing that stuck out to me. One of the features it possessed let it keep track of the current topic of the conversation. Now, the usage of this feature varied, since ALICE was a very strongly curated system. In fact, all of its responses and patterns it detected had to be written by a person. There was very little automation in that regard.

The digression aside, I think this is a good thing to consider. I would say that in any conversation there is always a topic that, over time, evolves and becomes another topic and another. But at any one point of time, the topic is more or less clear to both sides.

Thus in any conversation when a statement is made by one person, the other may choose to either continue the topic or divert it towards another more or less related one. Continuing a topic may, in itself, look in many different ways. Sometimes it’s about asking questions, giving the other person a signal to continue or talking about the topic from a different perspective.

Comparably to the focus I previously placed on personas in the context of an online conversation between many people, I would say that when two people talk to each other, the topic they are discussing is more fundamental to how the interaction flows rather than what kind of personas the people take on. It’s more intimate and individualised in that regard.

Furthermore, I would say that the person’s response is contingent on the topic. There are situations where some behaviours are more or less appropriate. I think we would all agree that our response to someone we’re talking with (and thus likely share some kind of relationship with) tells us their grandmother died we would never try to ignore that and steer the conversation to your favourite TV show. There are just certain rules of social conduct that dictate the way we treat each other.

Intuitively between these two things (topic and conduct), I think they could be modelled using finite state automata. But again, these are my thoughts, not something I’ve tried.

2) Leading

Seeing conversations as purely action-reaction doesn’t quite capture one crucial aspect. When humans communicate with each other most of the time one of them is leading a conversation. That being said, in some cases two people exchange comments with each other without a clear lead and who is leading the conversation changes once in a while. Though again – it doesn’t need to.

I think it’s crucial for conversation generation to keep track of who’s leading and create opportunities for the other character to seize it.

Looking at this from the perspective of topics, there are two natural situations where the lead gets passed to the other person, as the conversation shifts to a different topic or when both characters tackle the same topic from different perspectives. The second situation represents a stricter back and forth, and it can be assumed that such a conversation could change who leads multiple times without crossing onto a different topic. On the other hand, if a conversation isn’t changing the lead, it’s likely because one of the speakers takes on a more passive role asking questions or merely commenting on what the lead is saying, encouraging them to continue.

There is a simple way to determine who is the lead at any moment – they speak more with fewer interruptions from the other side. Truth be told, it shouldn’t be much of an issue to include this when representing conversations using finite state automata.

3) Moods and tones

Finally, I feel like characters engaging in a conversation might be expressing a mood. This would dictate the topics they pick and the way they speak. A character in a bad mood might react grumpily to frivolous topics. A character that is sad might not display too much energy when urging the person they are talking to continue. In that way, a character’s mood influences the tone of the conversation.

The question, of course, comes down to discretising the moods. How many different moods should be taken into account at all? Should moods and conversation tones be dictated by an emotion model (Chemistry Of The Human Element) or is that too much? Not enough? In the end, it’s likely they can be expanded iteratively starting with a neutral mood and casual tone.

I have a feeling the most effective way to implement this, would be factoring in the mood when the conversation lead selects a topic. While for the more passive character in the conversation it would instead focus more on the way they respond.

Well, that’s an idea at least. Finite state automata involving topics and moods and dictating who’s leading the conversation and what they say.

Leave a comment