Abstract:
The invention relates to an apparatus, method and computer program for adding context to a chat transcript. A message is received which defines at least a part of the chat transcript. The message is then analysed in order that context can be added to it and the modified message is then transmitted to interested parties. Note, the message could for example be modified by assigning a verb thereto and by associating a person with that verb. In this way the chat transcript reads more like a story narrative.

Description:
FIELD OF THE INVENTION  
         [0001]    The invention relates to real-time communication.  
         BACKGROUND OF THE INVENTION  
         [0002]    There are two main kinds of communication using a computer; email and various forms of real-time chat (e.g. using Sametime available from IBM Corporation). Real-time chat systems allow people to type messages to one another and for those messages to appear almost instantaneously on the addressee&#39;s display screen. Such systems enable a more natural interaction and discussion to take place than is possible via email.  
           [0003]    As users type, their chat system creates a “chat transcript” showing what each user says. The format is typically “name: speech” (e.g. Nicki: What time are you lunching?) Such transcripts typically make dry reading and fail to convey much emotion. This can frequently lead to boredom and misunderstandings. Even if those in the chat are talking about things that they are enthusiastic about or that are important to them, they will rarely produce a chat transcript that they wish to save, much less one that they feel does artistic justice to their topic to the extent that they would share those transcripts with others.  
           [0004]    More recent chat systems have tried to make chat transcripts more interesting. For example Microsoft(R) Instant Messenger allows the user to insert “emoticons” to indicate the mood in which something is said. Other systems such as IRC allow the equivalent of stage directions with special commands that insert these directions. For example a user could say “/me laughs heartily” and this would then be rendered by the chat system as “[username] laughs heartily”.  
           [0005]    Such systems however require the user to specifically indicate their mood to other users. This is inconvenient since it can often interrupt a user&#39;s train of thought. Consequently many users will not bother to add their own emotion to a real-time conversation or will do so rarely. Thus the chat transcript will continue to make dry reading.  
           [0006]    U.S. Patent Publication 2002/0005865 discloses a method and device for authoring content for interactive agents. When the agent is authored using this method, it can interact with a user through dialogue and gestures specific to contexts defined by user input, internal states or events of the agent, or input from other systems. The agent may respond to user questions differently when in different moods and the agents mood may change in response to user statements or actions the agent performs. For example, if the user says “I hate New York you moron”, the agent may recognise the keyword “moron” as an insult and therefore get angry. This will be reflected in its responses to the user.  
           [0007]    With a real-time conversation between two human-beings, each will have some idea of the mood of the person they are chatting with based on the kinds of words that that person uses. There is a need however to make chat transcripts of such real-time conversations more interesting and fun to read.  
         SUMMARY  
         [0008]    Accordingly, in a first aspect, the invention provides an apparatus for adding context to a chat transcript, the apparatus comprising: means for receiving a message, defining at least a part of said chat transcript, from a user; means for analysing the text of said message; means, responsive to analysis of the text, for modifying said text in order to add context thereto; and means for transmitting said modified message to interested parties.  
           [0009]    It will be appreciated that the addition of context, may actually involve deletion of text from the message.  
           [0010]    Preferably the means for modifying the text in order to add context thereto comprises means for assigning a verb to the text; and means for associating the verb with the user from which the message is received. Thus a message of: “Hi. How are you?”. May be modified to read: “Hi. How are you?”, questioned Nicki.  
           [0011]    In one embodiment, in order to assign a verb to the text, matches are sought between at least a portion of the text and at least one list. Each item in the list is preferably associated with at least one verb. A verb associated with a matched item is preferably selected. Note, at least one item in a list preferably has a plurality of verbs associated with it. Verbs may also be assigned weightings to determine how often such verbs are assigned.  
           [0012]    In one embodiment at least a portion of the text is replaced with an assigned verb. For example, :-) may be replaced with “Nicki smiled.” 
           [0013]    In one embodiment, it is possibly to specify at least one predefined rule. This preferably defines how the text should be displayed at a client. Preferably it is possible to instruct the client how to display the text, based on the at least one predefined rule. For example, a rule may specify that if a person has just said something prior to sending the latest message, then this message should be tagged onto the end of their last message.  
           [0014]    According to one embodiment, it is possible for a user to indicate their mood. This mood can then be used to influence the context added to the text.  
           [0015]    In one embodiment, an adverb is included as part of the context. This adverb is preferably chosen according to the mood indicated by the user.  
           [0016]    In one embodiment, the history of a chat transcript is stored. It is preferably possible to update the chat transcript and for any changes to be reflected in the transcript on the display screens of users involved in the chat.  
           [0017]    In one embodiment, a user (to whom the text belongs) is informed of the suggested context. The user can then accept or reject the suggested context. Such acceptance/rejection is then acted upon.  
           [0018]    In one embodiment, context is assigned based on a predetermined theme. For example, if a historical theme is selected, then verbs such as “spake” and “quoth” may be appropriate.  
           [0019]    According to a second aspect, the invention provides a method for adding context to a chat transcript, the method comprising the steps of: receiving a message, defining at least a part of said chat transcript, from a user; analysing the text of said message; responsive to analysis of the text, modifying said text in order to add context thereto; and transmitting said modified message to interested parties.  
           [0020]    According to a third aspect, the invention provides a computer program for adding context to a chat transcript, the computer program comprising program code means adapted to perform, when said program is run on a computer, the steps of: receiving a message, defining at least a part of said chat transcript, from a user; analysing the text of said message; responsive to analysis of the text, modifying said text in order to add context thereto; and transmitting said modified message to interested parties.  
           [0021]    According to a fourth aspect, the invention provides a client for adding context to a chat transcript, the client comprising: means for receiving a message, defining at least a part of said chat transcript, from a user; means for analysing the text of said message; means, responsive to analysis of the text, for modifying said text in order to add context thereto; and means for transmitting said modified message to interested parties.  
           [0022]    According to a fifth aspect, the invention provides a server for adding context to a chat transcript, the server comprising: means for receiving a message, defining at least a part of said chat transcript, from a user; means for analysing the text of said message; means, responsive to analysis of the text, for modifying said text in order to add context thereto; and means for transmitting said modified message to interested parties.  
           [0023]    Thus an apparatus, method, computer program, server and client have been described which preferably improve a chat transcript by adding context thereto. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0024]    A preferred embodiment of the present invention will now be described, by way of example only, and with reference to the following drawings:  
         [0025]    [0025]FIG. 1 shows an example instant messaging system according to the prior art;  
         [0026]    [0026]FIG. 2 illustrates an example chat transcript according to the prior art;  
         [0027]    [0027]FIGS. 3 a ,  3   b  and  3   c  show, according to a preferred embodiment of the present invention, the components and processing involved subsequent to the receipt of an instant message. 
     
    
     DETAILED DESCRIPTION  
       [0028]    Instant Messaging can be implemented in a variety of different ways. Users typically have lists of “buddies” with whom they communicate on a regular basis. Using ICQ, for example, a user contacts an ICQ server in order that the server can determine which of the user&#39;s buddies are online. The ICQ server then sends the user the necessary contact details pertaining to the user&#39;s online buddies and also ensures that the user is visible to other users. Subsequent communication then takes place directly between the user and another person. The server does not need to become involved in the actual conversation. It is only when a user terminates their session, that their machine informs the ICQ server such that it can alter the user&#39;s status to “offline”. Please refer to the Internet site “How Stuff Works” for more information.  
         [0029]    Other messaging systems such as Microsoft Instant Messenger use an intermediary server to forward each message onto the intended recipient. FIG. 1 shows an example of how such a messaging system is implemented.  
         [0030]    Clients  10  and  40  are both running instant messaging software  20 ,  50 . If a user of client  10  wishes to communicate in real-time with a user of client  40 , client  10  sends an instant message to a central messaging server  70 . The instant message contains sender and addressee identification information and server  70  determines whether the sender of the message is known to the server using user lookup component  90  to access a list of known users  85 . (Note a user will typically register with the server via user registration component  75  prior to actual use of the instant messaging software.)  
         [0031]    Assuming that the user is already known to server  70 , the user lookup component  90  and user list  85  is also used to determine whether the addressee of the message is known to the server. Again assuming that the addressee is known, the chat transcript creation component  80  creates a new chat transcript. The server adds to the transcript in the form [username]: [text of instant message]. This information is then forwarded onto client  40  for display via that client&#39;s instant messaging software  50 . The same information is also forwarded to client  10  for display via that client&#39;s instant messaging software  20 . If a user of client  40  then replies to the message, the server  70  creates a new line of text according to the same format described above and forwards this to both clients  10 ,  40 . Each client may then use the information received to add to the chat transcript and to display this to the client&#39;s user.  
         [0032]    [0032]FIG. 2 shows an example of a chat transcript  30  according to the prior art. As discussed above, such a transcript does not make particularly interesting reading. There is no emotion or context.  
         [0033]    The present invention therefore preferably adds such context and emotion to a chat transcript. For example the chat transcript of FIG. 2 may be rendered as follows:  
         [0034]    “hello Adam”, greeted Roo, “Are you coming to the meeting this afternoon?” 
         [0035]    “I&#39;m not certain, where is it?”, Adam pondered  
         [0036]    “I think it is in the house”, He paused for a moment,  
         [0037]    “Yes. It&#39;s in Hursley House.” 
         [0038]    “It was 2:30 wasn&#39;t it?” 
         [0039]    “No”. Roo said, “It&#39;s at 3:00.” 
         [0040]    “Ah, excellent, I&#39;ll be coming then.” 
         [0041]    Roo grinned, “Don&#39;t be late this time!” 
         [0042]    Such a transcript is far more interesting rendered in this way.  
         [0043]    [0043]FIG. 3 a  shows how the system is preferably implemented as a set of objects (using an object-orientated programming language such as Java™). Server  70  comprises a co-ordinator object  105 , a categories file  110  (appendix A), and a number of categories objects  120 . Each categories object corresponds to a category in the categories file  110 . The categories file is used to initialise the relevant category object (e.g. the data in the smile category is used to initialise the smile object).  
         [0044]    Thus upon system start-up, the co-ordinator object  105  initialises the category objects  120  with appropriate data from the categories file  110 .  
         [0045]    The categories file comprises a number of different categories pertaining to the different ways in which a user may say something. The categories of the preferred embodiment are shown in appendix A in bold. They are:  
         [0046]    1. generic  
         [0047]    2. repeat  
         [0048]    3. greeting  
         [0049]    4. pause  
         [0050]    5. coo  
         [0051]    6. laugh  
         [0052]    7. smile  
         [0053]    8. wink  
         [0054]    9. question  
         [0055]    10. exclaim  
         [0056]    11. disagreement  
         [0057]    12. agreement  
         [0058]    13. conclude  
         [0059]    14. explain  
         [0060]    15. decide  
         [0061]    16. suggest  
         [0062]    17. whisper  
         [0063]    18. enthuse  
         [0064]    Each category lists the words a user might say and corresponding verbs that might add context based on what they have said.  
         [0065]    The format of the categories file is:  
         [0066]    (i) category name;  
         [0067]    (ii) verbs to add context (separated by commas);  
         [0068]    (iii) weightings;  
         [0069]    (iv) words found in the sentence;  
         [0070]    (v) words the sentence starts with; and  
         [0071]    (vi) blank line  
         [0072]    Each category object is initialised with its data.  
         [0073]    [0073]FIG. 3 b  shows an overview of the processing performed by co-ordinator object  105 .  
         [0074]    The co-ordinator object  105  receives an instant message (step  200 ) and passes it to each category object  120  (step  210 ). Each category object  120  will then compare each word in the sentence of the instant message with the initialisation data acquired from the categories file (i.e. (i) to (vi) for the appropriate category)  
         [0075]    For example the co-ordinator object may pass each category object the following sentence “When is the project meeting scheduled for?”). The “question” category object will provide some matches (see extract below):  
         [0076]    question  
         [0077]    pondered, questioned, queried, asked, wondered,  enquired , demanded, requested,  
         [0078]    puzzled  
         [0079]    1, 1, 1, 1, 1, 1, 1, 1, 1  
         [0080]    ? 
         [0081]    how, why, when, where, is, what, who  
         [0082]    Not only does the sentence include a “?”, but it also starts with “When”. It is therefore likely that the user is posing a question.  
         [0083]    Each category object will then return a response to the co-ordinator object based on its analysis (step  220 ). If no word matches are found by an object, then the response will be a value of 0. The question category object will, in the preferred embodiment, return a response of 2 to the co-ordinator object since it found two matches (? And when). It is also possible that other objects will return hits (i.e. values of greater then zero). The co-ordinator object is responsible for analysing the responses and for selecting a category object based on such analysis (step  230 ,  240 ). The co-ordinator object preferably chooses randomly from those category objects that returned equal highest numerical values.  
         [0084]    Sometimes a person will use words that are not applicable found by any of the category objects. For such cases there is a generic category object. The generic category object will always return a response of greater than zero to the coordinator object. This object is preferably disregarded if other objects have also returned values of greater than zero.  
         [0085]    The majority of category objects preferably behave in a similar fashion. However there are some exceptions. Sometimes a person will repeat themselves, in which case the repeat category object will apply. This object compares the message received with a history it keeps of all other messages forming part of a chat transcript. The repeat category object preferably determines that the sentence is a repeat by looking for an exact match of an earlier sentence said by the same user (of course a user may also repeat something said by a different user). A response by the repeat category object may, on one embodiment, always be rated higher than responses from other objects (although this does of course not have to be the case).  
         [0086]    In the example above, object  105  ranks the response from the question category object most highly. The co-ordinator object then requests that the chosen category object (in this case the question category object) determine how the sentence should be formatted (step  250 ). (Note, this stage in the process will be explained in more detail below.) A formatted response is received from the category object (step  250 ) and is transmitted to the user (step  260 ).  
         [0087]    [0087]FIG. 3 c  illustrates the processing performed by the selected category object in accordance with a preferred embodiment.  
         [0088]    The selected category object (in this case the question category object) selects a verb to associate with the message (step  300 ). This may be a random selection. However, in the preferred embodiment, the categories file is used to initialise the category objects with weighting information. Thus the selection may be based on such information. For example the generic category object details words such as “quoth”, “spake” and “said”. “Quoth” and “spake” are not commonly used and so are given a lower weighting than the word “said”. Such words may, for example, only be used if all the other words in that category have been used more than a predetermined number of times. (This can be tracked.)  
         [0089]    In this example, the system might choose the verb “enquired”.  
         [0090]    Having selected a verb, the category object applies formatting rules with which it is associated (step  310 ,  320 ). Examples of such rules are shown in appendix B. As described in appendix B, a sentence can be structured in one of three ways:  
         [0091]    1. person; verb; speech  
         [0092]    2. speech; verb; person  
         [0093]    3. speech; person; verb  
         [0094]    The category object knows the name of the sender of the message since that person will have registered with server  70  and identification information is provided in the message received from the co-ordinator object  105 . The category object selects one of the options listed above.  
         [0095]    If for example the second choice of sentence structure is selected (i.e. speech; verb; name) and the verb “enquired” is selected from the categories file  210 , then the following sentence is created:  
         [0096]    “When is the project meeting scheduled for?”, enquired Nicki.  
         [0097]    It will be appreciated that according to the choice provided, the system may also create:  
         [0098]    Nicki enquired, “When is the project meeting scheduled for?” (selection 1); or  
         [0099]    “When is the project meeting scheduled for?”, Nicki enquired (selection 3).  
         [0100]    A category object preferably makes a random selection from the three options and may even store a history of selections in order that the transcript is varied. (Category objects may inform other category objects of their selections.) This makes the chat more interesting to the parties involved.  
         [0101]    According to the rules specified for the category object quotes and punctuation are typically also added.  
         [0102]    The reformatted message is then transmitted to the co-ordinator object (step  330 ).  
         [0103]    Note, category objects also preferably keep track of who the last message was from. Thus if a person was already speaking, then the particular category object responsible for formatting the current message informs the co-ordinator object  105  that the clients involved in the conversation should add the new message to what that person already said (i.e. without a hard return). The coordinator object then passes this onto the clients.  
         [0104]    If the person was the second last person to speak (again each category object keeps track of this since it receives each message from the co-ordinator object), the relevant category object may probabilistically decide not to mention that person by name. If this is the case, the name inserted by the relevant category object is replaced with he or she (as appropriate). Each category object can determine such information by accessing a database (not shown) detailing the typical gender of each name registered with it.  
         [0105]    Thus the selected category object typically uses the information gained from rules associated with it (e.g. those shown in appendix B) and also from the categories file (appendix A) to reformat the sentence and consequently insert context.  
         [0106]    The newly formatted sentence is then transmitted back to the co-ordinator object.  
         [0107]    It will be appreciated that the above are only examples of the kinds of categories and rules that can be used to add emotion, context and consequently interest to a chat transcript.  
         [0108]    A more detailed example of the processing of the present invention according to a preferred embodiment will now be described with reference to part of the chat transcript of FIG. 2.  
         [0109]    A message, “hello Adam”, is received at server  70  from Roo (determined from sender identification information contained in Roo&#39;s message). The message is addressed to Adam (information also contained in Roo&#39;s message).  
         [0110]    The message is passed by the server to co-ordinator component  105  (step  200 ) which, in turn, passes this message to each of the category objects  120  associated with the server (step  210 ).  
         [0111]    Each category object compares the words “hello” and “Adam” from the message with the category information it holds from the category file and returns its response for receipt by the co-ordinator object  105  (step  220 ). Naturally the generic object returns a response of 1, but so does the greeting category object (see Appendix A). The other category objects return responses of 0 to the co-ordinator object. The responses from all the category objects are analysed (step  230 ). A response of 1 or more from an object other than the generic object automatically results in the generic category being overrided. Thus the co-ordinator object selects the greeting category object (step  240 ). The co-ordinator object  105  requests that the greeting category object format the message (step  250 ). This object randomly selects a verb from its list of associated verbs (step  300 ). In this case, the verb “greeted” is selected. The object then looks, at step  310 , to the rules associated with it (such as those shown in Appendix B). It randomly selects a sentence structure—for example, speech, verb, person (option 2) and also adds quotation marks and other punctuation as appropriate. The first letter of the sentence is also capitalised (step  320 ). Thus the resulting formatted message now looks as follows:  
         [0112]    “Hello Adam.”, greeted Roo.  
         [0113]    This is then transmitted to the co-ordinator object  105  (step  330 ) which will then transmit the message (step  270 ) to the clients involved in the conversation.  
         [0114]    The next message received at co-ordinator object  105  (step  200 ) is also from Roo:  
         [0115]    are you coming to the meeting this afternoon? 
         [0116]    Again the co-ordinator object passes this message to all category objects  120  associated with the system (step  210 ). Each category object analyses the message for word matches and returns its response to the co-ordinator object (step  220 ). In this example the generic category object returns a response of 1 (as would be expected) and the question category object responds with a value of 2 (due to a match of “Are” and also “?”). The other objects have return values of 0. Thus the co-ordinator object requests that the question category object format the message appropriately (step  230 ,  240 ).  
         [0117]    At step  300 , the question category object assigns a verb to the message (for example “questioned”). It then examines rules associated with it (step  310 ). These rules specify for example that if this is a consecutive message from an user, then (i) it is not always necessary to mention them by name; (ii) this message should be added to the end of the previous message from that person. Thus the system randomly elects to do as suggested by (i) and (ii). Other rules indicate that the first letter of the sentence should be capitalised and that punctuation and quotation marks should be added. Thus the message is reformatted (step  320 ) to read:  
         [0118]    “Are you coming to the meeting this afternoon?” 
         [0119]    This message is transmitted (step  330 ) to the co-ordinator object with the instruction that the clients should add this to the end of the previous sentence (without starting a new line). The co-ordinator object receives this message (step  260 ) and forwards it onto the clients for them to display (step  270 ).  
         [0120]    Adam then replies with the message:  
         [0121]    I&#39;m not certain, where is it? 
         [0122]    The co-ordinator object receives this message (step  200 ) and passes this onto the category objects which analyse the message for matches (step  210 ). Once again, the question category object and the generic object are the only objects to respond with a value of greater than zero. The question category object is selected and the co-ordinator object requests that this object reformat the message (step  220 ,  230 ,  240 ). The question category object randomly selects the verb “pondered” (step  300 ). The rules associated with this object determine a sentence structure (e.g. speech; person; verb) and that quotes and punctuation should be added (step  310 ,  320 ) Since Adam has not previously spoken, an instruction to start this sentence on a new line is associated with the reformatted message. The complete message:  
         [0123]    “I&#39;m not certain, where is it?”, Adam pondered.  
         [0124]    is then transmitted to the co-ordinator object (step  330 ) for forwarding to the clients (step  270 ).  
         [0125]    Roo then replies:  
         [0126]    I think it&#39;s in the house  
         [0127]    Once again the co-ordinator object receives this message (step  200 ) and passes this message to all the category objects (step  210 ). The only positive response received is from the generic category object (step  220 ). Thus the co-ordinator object analyses the responses (step  230 ) and requests that the generic category object format the message appropriately (step  240 ). The generic category object selects the verb “said” (step  300 ) based on the fact that this has the highest weighting (i.e. is the most natural to use). However the rules (step  310 ) associated with the generic category object indicate that if the owner of the current message was the second last person to speak, the object may choose not to assign a verb and not to mention them by name. This is the case here and so the verb selected is overwritten. (Note, some rules could be accessed first in order to determine whether it is necessary to assign a verb.) Punctuation is however added and an instruction to start a new line provided. The message is thus created as:  
         [0128]    “I think its in the house.” 
         [0129]    (step  320 ).  
         [0130]    This is transmitted to the co-ordinator object (step  330 ) for forwarding to the clients (step  270 ).  
         [0131]    Roo then transmits a blank line message to server  70  for receipt by co-ordinator object  105  (step  200 ). Coordinator object  105  passes this to the category objects for analysis (step  210 ). The generic object category and the pause category object return positive responses (step  220 ). The latter is selected and is requested to reformat the message (step  230 ,  240 ). The pause category object selects not just a verb but rather a phrase: “paused for a moment” (step  300 ). The rules associated (step  310 ) with this object indicate that if this construction is selected then the structure of the sentence must be person; verb (“Roo paused for a moment” sounds fine, but “paused for a moment Roo” doesn&#39;t). The rules also indicate that “he” or “she” may be used randomly instead of a specific name. A database is used to determine that Roo is male. Further the rules specify that since Roo was already speaking, this additional reformatted message can be tagged on the end of the last message from Roo. All this is communicated to the co-ordinator object (step  330 ) which will then communicate this to the clients (step  270 ) to produce:  
         [0132]    “I think it is in the house.”, He paused for a moment.  
         [0133]    Thus the basic processing involved in reformatting messages received from clients should now be understood. The complete transcript as rendered is shown with reference to FIG. 2 above.  
         [0134]    Further enhancements on the basic principles will now be addressed:  
         [0135]    It will be appreciated that there may be occasions when the system selects an inappropriate verb or sentence structure. Thus in one embodiment, the user initiating the message is given the option to overwrite the selection made at the server. For example, the server may transmit the reformatted sentence to that user for confirmation, before transmitting it to the other user(s). Users are also preferably given the option to switch the reformatting off.  
         [0136]    In one embodiment, the server stores the history of each real-time chat conversation. Certain users may be given permission to update the stored history and such updates would then be reflected on the display screens of user&#39;s involved in the updated chat conversation.  
         [0137]    Further, the server may transmit the complete chat transcript to the relevant clients each time it gets updated. Clients/users with appropriate permissions may update the chat transcript locally and then broadcast this to server  70  for it to be forwarded onto the other client(s) involved in the real-time chat.  
         [0138]    In one embodiment, each user is given the option to specify their mood. For example a slider could be provided for indicating happiness on a scale of 1 to 10. Such information can then be used to dynamically re-weight verb choices. For example the message “Where are you going!” said by an angry user might demand a verb such as “ranted” from the exclaim category, rather than “questioned” from the question category.  
         [0139]    In another embodiment, the specified mood of a user can be used to add appropriate adverbs to a sentence. For example “Where are you going!”, Adam ranted angrily. Thus a separate file may be used to store a list of adverbs categorised according to specified mood.  
         [0140]    The present invention can also preferably be used to produce themed chats. The theme chosen may determine the verbs assigned. For example, if a historical theme is selected, then old-fashioned verbs like “spake” and “quoth” may be selected in favour of a word like “said”. In one embodiment, each available theme has a its own category objects. The appropriate objects are then loaded into memory based upon the theme chosen. Alternatively the weightings associated with a single category object may be dynamically adjusted according to the theme chosen. For example “said” would typically have a high weighting and “spake”/“quoth” a lower weighting. However for a historical theme, the weighting could be dynamically adjusted such that they are reversed.  
         [0141]    Further for themed chats, agents preferably run on server  70  that can alter the story environment. For example, in a storm setting at sea, perhaps an agent may occasionally insert narrative lines such as “The wind crashed and the waves reared up around the frail looking ship. Those on the deck bravely stood their ground”. Or very occasionally, it could block out what someone said with “Adam&#39;s voice was drowned out by the sound of splitting timbers”, and then they&#39;d have to say it again.  
         [0142]    According to one embodiment, a narrate function is also provided. This enables a story to be built around a chat. The user can type, for example, /narrate and this then allows them to add some story text without the sentence creator adding in context of its own.  
         [0143]    For example, Roo might send:  
         [0144]    /narrate Around the open fire, two figures sat, revelling in its warmth, and delighting in its light. The potatoes roasting in the centre of the fire were coming on nicely, and the heat from the fire was a welcome change from the cold of the night.  
         [0145]    Adam could then respond “Ah” to which the system might add, quoth Adam. Thus the /narrate function temporarily switches off the addition of context.  
         [0146]    It will be appreciated that the rules associated with category objects may be hardcoded or may be in storage associated with the category objects.  
         [0147]    Whilst the embodiments described matches on single words in order to assign verbs, a more advanced method could be used. For example, regular expressions as provided by programming languages such as Java™ could be used. Such expressions allow more complicated pattern matching to be defined. A more sophisticated approach is to detect any pattern in the text. One way of doing this would be to use regular expressions, which are a common way of detecting patterns. For example, a regular expression to detect some sentences in the passive voice would be “m/(were|had|was)\s+((\w+ed)|made)/”, which will detect any sentence that contains the were or had or was followed by a word ending in “ed” or “made”. For example “Mistakes were made” would be matched by this rule. (Java is a trademark of Sun Microsystems Inc. in the United States and/or other countries)  
         [0148]    Finally, it will be appreciated that whilst the main functionality of the present invention has been described as residing on the server, this does not have to be the case. For example, each client could have the appropriate means for adding context to any speech uttered by its user.  
         [0149]    Appendix A  
         [0150]    We start with the generic ones, that are always applicable.  
         [0151]    The format is  
         [0152]    moodname  
         [0153]    words (separated by commas)  
         [0154]    weightings  
         [0155]    blank line  
         [0156]    generic  
         [0157]    said, spake, quoth, uttered, remarked, commented  
         [0158]    1, 3, 3, 1, 1, 1  
         [0159]    Then the ones if a sentence is repeated  
         [0160]    same format as above.  
         [0161]    repeat  
         [0162]    repeated, reiterated, echoed, emphasised  
         [0163]    1, 1, 1, 1  
         [0164]    now the general ones.  
         [0165]    format is:  
         [0166]    moodname  
         [0167]    words (separated by commas)  
         [0168]    weightings  
         [0169]    words found in the sentence  
         [0170]    words the sentence starts with  
         [0171]    blank line  
         [0172]    Repeat above for each mood. Then, the last line of the file should read “done” 
         [0173]    done  
         [0174]    greeting  
         [0175]    greeted  
         [0176]    1  
         [0177]    hi, hello, howdy, yo  
         [0178]    pause  
         [0179]    paused, paused for a moment  
         [0180]    2, 1  
         [0181]    . . .  
         [0182]    [blank line] 
         [0183]    coo  
         [0184]    cooed  
         [0185]    1  
         [0186]    ahh, aww  
         [0187]    laugh  
         [0188]    laughed, chuckled  
         [0189]    2, 1  
         [0190]    heh, hehe, teehee  
         [0191]    smile  
         [0192]    smiled, grinned, beamed  
         [0193]    2, 1, 1  
         [0194]    :-), :), :o), 8-), :-)&gt; 
         [0195]    wink  
         [0196]    winked  
         [0197]    1  
         [0198]    ;-), ;), ;o)  
         [0199]    question  
         [0200]    pondered, questioned, queried, asked, wondered, enquired, demanded, requested, puzzled  
         [0201]    1, 1, 1, 1, 1, 1, 1, 1, 1  
         [0202]    ? 
         [0203]    how, why, when, where, is, what, who, are  
         [0204]    exclaim  
         [0205]    spouted, exclaimed, shouted, ranted, raved, came out with, cried, smiled  
         [0206]    1, 1, 1, 1, 1, 1, 1, 1  
         [0207]    cripes, wow, amazing, astonishing, unbelievable, remarkable, horrendous, scary, idiot, gosh, pah, bah, ! 
         [0208]    agreement  
         [0209]    acknowledged, assented, agreed, concurred, confirmed, corroborated, accepted, affirmed, endorsed, approved, declared, averred  
         [0210]    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1  
         [0211]    ok, yes, certainly, uhuh, correct, definitely  
         [0212]    conclude  
         [0213]    concluded, summarized, assessed  
         [0214]    3, 3, 2  
         [0215]    right then  
         [0216]    so  
         [0217]    explain  
         [0218]    explained, clarified  
         [0219]    1, 1  
         [0220]    because, since, therefore  
         [0221]    decide  
         [0222]    decided, resolved, determined, declared  
         [0223]    1, 1, 1, 1  
         [0224]    i will, he will, she will, you will, they will, it will, he shall, she shall  
         [0225]    suggest  
         [0226]    suggested, proposed  
         [0227]    1, 1  
         [0228]    how about, what about  
         [0229]    whisper  
         [0230]    whispered, breathed  
         [0231]    1, 1  
         [0232]    (  
         [0233]    enthuse  
         [0234]    enthused, trilled  
         [0235]    1, 1  
         [0236]    excellent, great, fantastic, cool, fab, superb  
         [0237]    done  
         [0238]    Appendix B  
         [0239]    Use one of the following in structuring a sentence  
         [0240]    Make selection randomly  
         [0241]    person; verb; speech  
         [0242]    speech; verb; person  
         [0243]    speech; person; verb  
         [0244]    Unless “paused for a moment is selected by pause category object  
         [0245]    In this case the format is speech [ie none]; person verb  
         [0246]    place quotation marks around speech  
         [0247]    Punctuation etc.  
         [0248]    if speech; verb; person formatting used  
         [0249]    place a comma after the quotes enclosed speech  
         [0250]    if the first letter in a sentence is not capitalised, make it so  
         [0251]    if a sentence does not end with a fullstop  
         [0252]    add one  
         [0253]    if a person was the second last to speak  
         [0254]    do not always mention them  
         [0255]    do not always assign verb  
         [0256]    if a person was already speaking  
         [0257]    add what they said to what they&#39;ve already said  
         [0258]    do no always assign verb  
         [0259]    if a person has spoken before and know what sex they are  
         [0260]    sometimes use he/she instead of their name  
         [0261]    New Line  
         [0262]    if new person speaking, start on new line