I have been thinking about this for Uberbot and I think there are two ways of looking at “Robot personalities”. Although Uberbot uses its own custom behavioral language, it was inspired by AIML so the following comments should be relevant.
1. There are “fixed” properties which in AIML are set up as AI properties. These include name, age, birthday, favorite color/football team/actor/actress/play/movie etc etc, location, possibly religion and many others. You can find these by searching all AIML files for the < bot name=“property” > element. Fixed properties are easy for the AI developer to code, and easy to be customized.
2. Then you have “behavioural” aspects which is how the AI replies to particular types of question. The AIs behaviour is defined by all AIML categories so this means you can’t separate the AI’s personality from the complete set of loaded AIML. But this is not useful as it means we would potentially have to re-write the entire AI to change its personality.
Now a lot of “factual” questions have answers that are the same for any (non-pathological) AI. Eg if you ask the AI “when is the next world cup” or “is 1234567 a prime number” it should give the same answer regardless of personality. So I think AIML categories relating to factual questions could be the same for any AI. This means we could have the AI’s personality contained in an AIML module designed to handle subjective/personality type of questions, and you only have one module to edit if you want to change the personality.
(Note: you could argue an AI’s personality might hate maths or football (or even being questioned at all) and give non-factual answers to factual questions. That’s why I said non-pathological, basically I am assuming any underlying AI personality is happy to answer any factual question accurately, if it knows the answer).
Finally, as Steve said this is an important issue if you want a marketable AI that can be customized for different clients.