Introduction

Cyber-match is a computer based matching system designed to match people who share similar interests and viewpoints.  This program differs from a simple database-matching algorithm, since it uses expert system rules to determine an overall compatibility score.  This scoring method considers “close” or “partial” matches making it more powerful than a simple match.  The application uses a Visual Basic graphical user interface to allow the user to enter their profile, look up other profiles, and match their profile with potential candidates from the database.  An Access database is used to store the profile data and temporary tables used by the application during the matching process.  Tules implanted in CLIPS determine matches and the associated scores to those matches.  OCX drivers available from the CLIPS website helped create a link between the Visual Basic environment and CLIPS.

Objectives

The primary objective in our proposal was to represent the knowledge acquired from our experts in a set of CLIPS rules that would allow for inexact matching.  Based apon feedback received from our experts, we developed a scoring system which would award full points for an exact match, fewer points for a close match, and no points for non-compatible attributes.

Additionally, a set of CLIPS rules linked to an external database and graphical user interface.  Using downloaded OCX drivers, we were able to marry the three systems together into a seamless application.

Functionality

From the user’s perspective, the interface is quite simple.  It is a single page questionnaire that allows the user to enter, store and update their profile information, lookup other user’s profiles, and match against the profile database.  The Visual Basic interface coupled with the OCX drivers hides the Access database and the CLIPS knowledgebase from the user.

The prototype for our questionnaire was developed after similar web-based systems.  Due to the proprietary nature of these systems, we were not able to obtain examples of their algorithms. However, most of the systems appeared to perform a simple database match.  Each of the systems contained a questionnaire requesting basic contact information, followed by the user’s desired goals in using the system.  Most systems also contained questions concerning the user’s interests and personality traits.  

Design

	Visual Basic	
	The questionnaire form was created in Visual Basic and acts as the user interface throughout the application.  The form contains profile questions along with buttons to perform searches, adds, updates and a match to the specified profile.  The layout of the questionnaire resides on one page, preventing any confusion or annoyance involved in scrolling down a page to input the profile.  The user can review answers and make changes if desired.

The questionnaire first asks for contact information such as name, address, city, state, and zip code.  The e-mail address field allows users to contact potential matches passively to avoid uncomfortable confrontations.  The physical information asks for gender, height, weight, and birth date.  Ethnicity, smoking, and drinking provides important behavioral information that may prevent potential problems arising with a match.  Dating goals questions help assess the type of relationship a user seeks and matches him/her with other candidates with similar goals.  The education/occupation section requests information concerning education and the income level of the user.  Users with high income may prefer dating someone within the same income bracket.  The interest section provides the main information needed to match profiles and set up the rules.  The drop down menus contain the possible responses to these questions, and help eliminate typos and invalid entries that could inhibit the matching process.  

CLIPS

The OCX/Active X drivers established a link between CLIPS and the VB code.  This link, also called a router, acted as a blackboard type connection allowing for two-way communication.  The communication link allows flexibility for the Visual Basic code to assert all of the facts necessary to fire the rules.  Since all of the facts are asserted from VB, the CLIPS file contains nothing but a long list of rules that implement the knowledge base segment of the system.  This provides a stronger separation between the knowledge base and the inference engine, and makes the implementation of new rules or the update of the existing rules easier.

	Access Database

The Access Database stores the users’ profiles.  However, the storage space also houses a temporary set of data values returned to Visual Basic from CLIPS.  These values are used to calculate the candidates’ final scores.
Alternative Approaches

As a group, we discussed different approaches to the project.  The biggest debate involved the amount of implementation in CLIPS and Visual Basic.  Visual Basic could have created the user interface, and then implement the entire knowledge base and inference engine in CLIPS using deffacts, deftemplates and a more complex set of rules.  
Additional options included a text based interface or a graphical interface based in JESS or WebCLIPS.  Our final implementation creates an easily maintained and expandable application.  This design forced the goup to work with an application that we familiararity with, and the graphical user interface helps reduce errors in the system.
Problems

During the development process, we encountered three primary problems: user interface, connecting Visual Basic and CLIPS, and time.  Our original concept for the user interface was a text based system that only someone familiar with the system would operate.  Our plan was to collect hand written questionnaires from people, enter them into the system, and perform the matches ourselves.  While entering some sample questionnaires, we quickly identified a few problems with this concept.  First of all, typing questionnaires into the system involves high burden..  Secondly, spelling, punctuation and capitalization differences could introduce errors into the system.  The graphical user interface we implemented controls data error as well and provides a simple, user-friendly interface.

Interfacing Visual Basic and CLIPS together became the second major problem.  It was relatively simple to download and install the OCX/Active X drivers and discover how to establish the CLIPS router.  However, we did run into problems as we began to pass information across the router.  For unknown reasons, the function in the OCX/Active X drivers called AssertFact did not work well.  After trying other functions, and looking through a few examples we decided to use AssertString instead and had much better luck.  The other major problem with the interface was how to get the data back into VB.  We originally implemented it so that CLIPS would return the user id, attribute and score to Visual Basic, and then Visual Basic would parse the data and interpret it.  This seemed to work very well initially, but as we began to test it more thoroughly, we discovered that attributes containing multiple words separated by a space were actually causing data errors in the Visual Basic code.  So we altered the CLIPS rules to return the data in a comma delimited format to allow greater control over the parsing.

Our last major hurdle was time.  We had originally planned to implement the system and then spend a great deal of time confidence testing and evaluating its effectiveness as a system for finding matches.  Unfortunately the development took quite a bit longer than originally anticipated, so we were unable to implement all of the desired functionality, and the testing phase was dramatically reduced.
Future Work

Three separate areas for additional work exist in our project:  Rule Implementation, Additional Features, and Application Usage.  Rule implementation involves changes made to the CLIPS rules used in the matching process.  The rules may need to reflect the meaning of the information received from the profile in a different scoring manner.  The additional features include enhancements in the user interface, security, and more information available on the potential candidates.  The design of this application allows the basic functionality to provide advisement in other situations regarding human interaction and behavior.

The three ideas the group would like to see implemented in the rules are matching the three preferred matching attributes, including horoscope and astrology, and designing the questionnaire to extract behavioral attributes about candidates.  The questionnaire used in this version of the application includes fields at the bottom of the form asking for the user’s three interest preferences in a mate.  These interests could be used in matching the profiles in the database.  A constant multiple would be included in the compatibility scores to reflect how closely the profiles match the preferred attributes.  

Information regarding astrology could be reflected in the rules.  The star signs provide information about a person and can present valid information about their interaction with society and in relationships.  Behaviors of certain signs do not match well with the behaviors of another sign due to difference in goals and general outlooks on life.  

The questionnaire could always incorporate questions accessing the general behavioral attributes of a person.  These attributes could give more incite on the personality and what personality best matches to them.  This is an important concept to consider since behavioral attributes contribute to the way a person deals with conflict and expressing emotions, both of which are very important in a relationship.

The application needs to include some security features regarding the profiles stored in the database.  The profiles are currently not protected from any user making any changes.  Future enhancements would include a check box on the questionnaire asking if the user wants the profile visible to others in the database.  Checking the box would make the profile visible, so other candidates can view it, if for instance they match to that person.  The profiles should also be secured by a password, so any person other than the owner of the profile cannot make updates.  Finally a general additional feature includes links from the application to a map system on the Internet.  Users could determine the distance between themselves and other candidates.  This information may be relevant in whether a relationship might start or not be possible. 

The main goal of the group was to design a system that met all our goals and would be overall useful.  Fortunately, there are other situations that directly involve compatibility among people involved, such as apartment matching or roommate matching.  Roommate matching is similar to matching people with similar dating goals.  A good roommate shares similar living needs and is willing to share responsibilities and conduct a good living environment.  A good living environment may differ between people, so it is important to match roommates with similar views.  In addition to having a good roommate, the apartment itself is very important.  Finding an apartment is very hard since many conveniences are involved as well as financial burden.  Another form could be creating asking information on what type of apartment they are looking for, the location, and the price range they are willing to spend.  This information could be stored in a database, and a knowledge base could match applications for apartments with apartments available for rent.

References

Web sites related to dating services:
	www.matchmakerintl.com/survey.html
www.togetherjn.com/form.htm
www.americansingles.com
www.ge-houston.com/gehpersonal.html
www.2ofakind.com

Expert:
	Sara Davison is a University of Washington Psychology graduate student.  She currently lives in California, but worked with us on the project via email.  Sara’s field of study in Psychology regarded how people interact and the personality factors that impact interaction.