AGENTS NNTP Client Agents can retrieve articles by either using a search engine (such as Deja News \cite{deja}) or by connecting to a newsserver that the client connects. The agent can then retrieve articles by issuing commands to the server. Details of these commands can be found in appendix CROSSREF or in the Request For Comment (RFC) 977 document, which describes the NNTP news. It is important that agents do not keep entire articles but only references to them, which will save space, if two or more agents refer to the same article. Their unique Message_Id should refer to these articles. This is important because agents from other user's systems will also be asking for articles and checking by Message_Id, which articles have been stored already. Retrieving information for the user is one of the delegated tasks that the user would be able to do them but trust the agent to be able to do it for them effectively. Client Interface The client interface should enable the user to have access to all the abilities of a standard Usenet news client and have a menu, which sets up the agent's initial profile and is able to read and alter topic profiles. The system should also have the abil ity to search for other users agents and connect to them. An example client interface can be found in the prototype system for this agent framework. User's NNTP Client The NNTP users client connects a newsserver and performs all the commands necessary to read and post news articles. This will be achieved by using all the commands specified in the RFC 977\cite{rfc977} document. Dialog Based Feedback This dialog feedback mechanism is the part of the user interface, which brings up a list of articles that the agent has found from t0he user. When the user selects one of the articles, the main text of the article is shown up in a listbox. Clicking on o ther articles will add them to the listbox. De- selecting them by clicking them again deletes the main text from the listbox. When the user has finished selecting the articles which they consider the most relevant the system then analyses the articles and tries to induct a pattern which can be searched for when selecting other articles for the user's selection. Information about this is given in more detail in CROSSREF. Useful feedback to the user provides a method of dialog with the agent, which is one of the attributes that make up an agent. Expert System Filtering for an Agent Experts Systems have been discussed earlier in section CROSSREF. The agent uses an expert system to enable it to classify articles. The system also provides a mechanism for introspection. This involves outputting text to a listbox. This text contains in formation about what decisions the agent made in regard to classifying and choosing articles. This is important because allows the user to make their own decision as to whether the agent has correctly classified an article or not and can decide then what to do with the article. Using an expert system provides a framework of rules of which new ones can add and old ones deleted or modified. Agent Learning and Updating the Rulebase Because of the limited time allowed to complete this research project a particular method of pattern matching has been included into this design framework. This method by \cite{learning_alg} finds patterns in pieces of text by looking for the distance bet ween words. This method compares pairs of words in each of the article chosen and the ones rejected and look for pairs of words from each article, which are similar. Database of Matching Articles This database is accessed via the Agent Coordinator. This component stores the references that the agent has. These references are stored in a hastable, which is shown in figure CROSSFREF. Each article processed by the system can be stored in a news object, which contains the following attributes: This object then becomes a record in the database. The attributes stored in each record provide the system with a mechanism to access different parts of the article. This provides the flexibility to examine parts of the article without having to search the article for them, allowing the program to be more efficient. For example if the system needed to check for a particular author's name, the system could retrieve the author's name directly without having to search the entire record. This speeds up access to the database.