Commonsense Course Projects Gallery

Fall 2002

  1. Selected Coding Assignments

  2. Project Proposals

  3. Final Project

Selected Coding Assignments

Flash Visualization for Knowledge in Open Mind
Katie Todd and David Garcia

We decided that instead of having the results from OpenMind displayed in
a second text box, it would be more interesting to display the results
visually. We were prompted to think of this because the text box was
sort of boring and not very interesting, and, in addition, it just kept
getting bigger. The results from OpenMind are instead faded in one by
one in assorted locations on the screen so that the user is not
overwhelmed with results. This was coded in Flash.


Project Proposals

Acquiring Common Sense from The Sims
Andrea Lockerd

One question that I keep coming back to when trying to figure out what to do with common sense is: What is common sense? It seems like there are a number of different opinions about what should and shouldn't be included in common sense, and what it means for a computer to "use" common sense. If I have a big database of common sense knowledge with a great representation that allows a computer to answer seeminly common sense questions (like the ones mentioned on the website henry sent around), does this constitute the computer having or using common-sense? It gets back to the various motivation of AI researchers, some want computers to be intelligent, others want computers to seem intelligent for our purposes.

One way to think about common sense is shared knowledge or implicit knowledge. This is easy to think of in the context of communication. What goes unsaid in a conversation is implicitly understood to be shared knowledge or common sense. In the physical world, "things fall down not up", is implicitly understood to be shared knowledge given that we all share the same physical world. This idea extends into smaller circles of shared knowledge, where the smallest circle of common sense could be 2 people or a person and a computer. If a group of people were at an event. They can talk about or refer to the event assuming that the others share a common ground.

Extending the idea that common sense is what goes unsaid, it is interesting to think about how to acquire all this implicit knowledge. Even though we can't remember not knowing much of what is considered common sense, at some point we all had to learn these things either by being told by a parent or teacher or just through observation and experience. So, one way a computer might be able to go through this learning process is through simulation or a virtual world like the SIMs. Basically this is just taking advantage of the fact that there is this world that the computer can sense and affect. One thing that might be fun to do is implement a "child" or "butler" avatar that would follow around the user's avatar, trying to learn by observation, learn by asking questions about the current activity/surroundings, and maybe suggesting things to do and trying to anticipate things to do for the user (like a good butler). So basically letting the user and the agent interact in this virtual space turns into an interactive learning session for the agent, allowing the computer to learn in a common sense sort of way. Learning what is common by watching multiple interactions, learning about a new context or situation by recognizing action/environment similarities and dissimilarities and then asking questions.

So, for my class project, I'd like to look into the feasibility of making this learning butler character for the SIMs. I did however have some other thoughts about possible class projects. The following are a few different ideas around using common sense knowledge and reasoning to improve some type of human computer interaction.

1) A context-aware map with common sense about phys places, could a map with common sense be better at giving directions? Current mapping systems (mapquest, the talking car maps) are not very user friendly, and this tends to be because they don't have enough common sense to say "take a U-turn" instead of "take a left, go .01 miles, take a left, go .01 miles, and take a left". If it does some inference about "collocation" and "hasa" to give more common sense directions.

2) Common sense in communication (email IM phone) - disambiguating filling in the blanks, making assumptions about things that were not said. What could this be used fo? Could it help with filing and filtering of messages? Could it be better at inferring a todo list from your email - inferring action items from an email, and inferring priority from common sense about social interactions and relations. If my cell phone had some common sense about social interactions then would it not ring in a meeting?

3) Another example of the interactive learning idea mentioned with theSIMs is the 20questions game. The computer asks questions to try and guess the animal/vegetable/mineral the user is thinking of. When it guesses wrong it asks for user input about the difference between the guess and the actual answer, and then later it can use this to ask questions to discriminate between these things. The next level up is for it to get better at asking "good" questions, or most discriminating questions, thus getting to the answer most efficiently. It would be interesting to look at whether or not kids do this when they first learn the game. For example, do they start off just guessing different animal features, but then learn that if you ask "does it have 4 legs" or "does it have fur" you eliminate a lot of choices. Or is it natural to ask more discriminating questions before more particular ones?

4) My laptop gets carried around with me all the time. Could it start to have some common sense about its functionality by understanding something about the people I'm around and places I go. What would it do for me? It could make information about shared experiences more readily available, visible, or applicable to current task. When I'm sitting in class, maybe it puts some "relavent" documents and information on the desktop ready to be used because it has a common sense about this place from the last time I was there.

The Pro-Con Engine
Joanie Morris DiMicco

When groups of individuals are planning on doing activities, they make their decisions using a collective understanding of each other's preferences. These preferences have to be verbalized, either through spoken or written communication. While some members of the group may be more attuned to the preferences and particularities of different individual members of the group, often times, the group does not have a complete picture of the constraints and preferences of all members. This lead to either prolonged discussion of pros/cons or a dictator type approach to decision-making which leads to different members of the group having their preferences ignored.

How can common sense help? A data source containing common sense knowledge about each user's schedule, constraints on activities, and preference for different activities, then the data source can be used to articulate the pros and cons of a particular decision. A common sense application which is able to identify the issues relating to a decision can save time for the group (less time required to building a base understanding of the group's preferences) and can assist the group in making decisions which take into account each group member's needs and preferences.

As an example scenario, imagine that I were to ask the Pro/Con Engine, "Should my husband, dad, and I go apple picking this weekend?"

Rather than me having to guess the constraints and preferences of my husband and father, or having to ask each of them for what to them is obvious information, it would be preferable to ask a pro/con engine to enumerate the different pros and cons of the decision.

A possible result coming from the Pro/Con Engine would be:

- the weather forecast is good

- this is one of the few times you can do this activity
- apples make apple crisp
- apples are healthy for you
- it is an outdoor activities
- dad can't do this activity at home

- you will be tired because you are very busy on Saturday

- dad has to catch a plane at 5pm
- our car only fits two people
- my husband has a long week ahead of him
- you may need to rent a car

These pros and cons were derived from the following common sense observances about apple picking this weekend:
- you and your husband live in Boston

- you will need to drive to go apple picking.
- the drive is about 45 minutes.
- the cost for the activity is about $20
- you will purchase many apples
- you will be outside for the activity
- this weekend is Oct 12-13
- apple picking can only be done in the fall
- dad is only in town one day (Sunday)
- dad lives in Pittsburgh
- mike and I tried to go apple picking last year and went too late
- you like outdoor activities

The facts held in the database will be both of a worldly and personal nature. Some of the facts relate to time and geography. Others relate to facts about the activities. And a third category of information relates to personal preferences. This area of personal preferences is where I think this application will have the most benefit, because it will highlight the factors that each individual thinks is obvious, yet the collective group is not aware of.

Issues with this project idea:
- how can a common sense database make inferences about whether or not things are “pros” vs. “cons”? They are “obvious” to me, but may be difficult to infer.

- does this application propose to do too much?


This project proposes building a recommendation engine based around the preferences of multiple people. But this differs from previous work in that it does not make a suggestion of an activity, but rather presents a first-order analysis of whether or not a particular activity is a good or bad thing to do. By presenting arguments to the group of individuals, the group is better equipped to understand the pros and cons and make a well-informed decision.

Foreign Language Assistant
Rami Musa, Madleina Scheidegger

The application that we are proposing to build for our final project is an
application that will be of use to travelers around the world, by providing them
with relevant phrases and words to the current situation they are in. The
application would use online translation services to provide the translation,
and would use OpenMind to provide the common sense it needs to reason out what
phrases would be useful for the traveler for their current situation.

Currently travelers can only rely on basic phrase books, which are however
limited to the scope that the author considered necessary. The application we
would develop would not only be able to expand the scope dynamically to adapt to
the user's need, but also be language independent. This would allow travelers to
use the same application in all countries they go to without having to buy any
more books, or applications. In this project we will limit ourselves to
languages that use the Latin Script. Furthermore, German will be used to demo
and test the system since one of us is fluent in German, and thus can understand
and evaluate the system's behavior.

The system will have four functionalities, and the user may choose which
functionality to use. The four functionalities are:

1.Word translation: the user enters a word in English. The system uses an
online translation service to return the equivalent in the specified language.
Input: Germany Output: Deutschland

2.Phrase translation: the user enters a phrase in English. The system uses an
online service to return the equivalent in the specified language. We do not
expect the phrase translation to work as well as word translation. However,
this is an expected limitation of computer translation. We are considering the
problem of a good translation to be outside the scope of a term project, even
though it would be a useful problem to solve.
Input: I am hungry. Output: Ich bin hungrig.

3.Generating relevant words: the user enters a word in English describing their
current situation. The system queries Open Mind with that word to identify
relevant words to this situation which will then be presented with their
Input: hungry Output:
hungry hungrig
food Essen
breakfast Frühstück
lunch Mittagessen

4.Generating relevant phrases: the user enters a word in English describing
their current situation. The system queries Open Mind and identifies relevant
common sense phrases which the user might need in their current situation. The
phrases are then returned to the user with their translations.

Input: hungry

I am hungry. Ich bin hungrig.
Do you want food? Moechten sie etwas zu essen haben?
People eat in restaurants. Leute essen in Gaststätten.
People drink beer in restaurants. Leute trinken Bier in Gaststätten.

Acquiring Culturally Contextualized Common Sense
Rebecca Bloom, Avni Shah

Currently, there are a few databases on the web that have tackled different methods of storing commonsense information. However, none of these databases account for contextual information that might accompany certain commonsense phrases. This inability to organize data according to context often leads to the retrieval of information that seems contradictory. For example, a query on brides might return two statements:
"Brides wear white wedding dresses."
"Brides wear red kimonos."
These two seemingly contradictory phrases are actually both true, but within each one's own cultural context. If these statements could be accompanied by their cultural context, valuable commonsense information would be added to the database.

Our Proposal:
We hope to build an interface that allows a user to enter and retrieve information within a certain cultural context. When entering and retrieving information, the user will be able to choose/enter both a culture and a topic. The statements that are entered will be stored in a database and will be linked with the extra contextual information. Then, when the user indicates a specific culture and topic to search for, the retrieval system can look for information only within that context. For example, if the above two statements about brides had been entered with the context of "America" and "Japan" respectively, a person looking to find information about brides in Japan might enter "Japan" for culture and "brides" for topic and get: "Brides wear a red kimono."
We feel that a kind of context-orientated commonsense database would be extremely useful in commonsense reasoning because, in truth, there is no commonsense without context.

After class today, we might reorganize our idea to make an interactive game on Openmind to enter contextual information.

Commonsensical Meal Adviser
Ouko Luke, Carla Gomez and Arnan (Roger) Sipitakiat

Our idea is the creation of an application that will specifically deal with offering the optimal solutions given specific or peculiar sets of scenarios and domains.

We will build a certain set of rules for the specific knowledge database and have it query the specific knowledge (common sense) that we will spawn of open mind.

We will create our own set of knowledge that is oriented towards our problem domain.

The specific case here is a MEAL ADVISER. This is an application that uses common sense and comes up with suggestions on whether we can have dinner, what we can have, and how to go about it.

Open Mind Database Input

1. I have 2 gallons of milk
2. I have 3 pounds of pork
3. I have 4 pounds of beef
4. Beef can last for 10 days
5. Roger does not eat pork
6. Dinner is eaten between 5.00 and 9.00 P.M.

Rule Set

It will mainly deal with what, where, when, who and how issues?

1. Dinner (is equal) food (not equal) pork
2. Dinner time (is equal or more than 5.00 PM less than 9.00 P.M.
3. Carla, Roger, dinner, tomorrow (who, who, what, when)

Required Plug-ins

1. A calendaring database
2. A recipe database

We would type INPUT " I am having Carla and Roger for dinner tomorrow……"
It would suggest OUTPUT "Make them a Shepherds Pie….." OR " No, you have to reschedule for Friday, tomorrow you have the Common sense seminar."

Using Common Sense to Add Pictures to Short Stories
Alexandro Artola

Description of the program:

The program will use common sense knowledge to suggest pictures to be added to a short story.

This approach is similar to the one used in ARIA, however, there are two important differences:

1) Pictures will be drawn from a large picture database in the Internet (Yahoo! Picture Gallery), and no annotations will be used.

2) The program will be able to use common sense knowledge from previous sentences to suggest relevant pictures. This is possible because the program will function in a static manner (i.e., the user will provide the short story beforehand).


An important application of this program will be to add pictures to children stories. For example: In some situations, a child may be biased towards not reading a short story because it has no pictures in it; therefore, if an adult can use the program to add pictures to the story, then the child could be leaned towards reading the story while getting some visual notion of what he is reading. In addition, the child could use the program to select the pictures that match the story that he is developing in his head while he is reading the story.


A short story in the form of a file.


The short story file with suggestions of pictures between sentences, so that the user can select the pictures that he likes. Then, after the user selects the pictures, the program can covert the final version of the story with the pictures to HTML.


With time of using the program, the limitations of the Yahoo! Picture Gallery to capture all situations be apparent. This observation will specialize the types of short stories on which the program will work better, and on which the program will specialize.

Ask Jon: A Common Sense Profiling and Recommendation Engine
Tien-Lok J. Lau, Austin Wang


Through the use of the Open Mind Knowledge base, we aim to tackle two major challenges in the field of software agents: user profiling, and content recommendation. Ask Jon starts by profiling each user, and then recommends relevant information to the user based on a topic they specify. The project assumes that members of the Open Mind community have subconsciously embedded information about common stereotypical personalities and tastes into Open Mind; the goal is to mine this meta-information and utilize it in a provocative way.


Open Mind Commonsense is an ambitious project aimed at teaching computers all those things an average person knows but takes for granted. Its approach differs to other commonsense databases by allowing complete freedom in terms of input syntax, and is open to the public via the Internet. However, having a trove of random commonsense knowledge is merely the first step in the quest to develop a smarter computer. Therefore, we are looking to develop a brand new interactive application based on the knowledge embedded in Open Mind that will not only demonstrate the power of Open Mind, but also to test the potential of introducing computers to commonsense.

After some experimentation and analysis of the of information stored in Open Mind, we have come to the conclusion that much of the information considered "common sense" by the general public is actually common stereotypes of various cultures, ethnicity, religions, age groups, and professions. This may be a reflection on common sense in general, or a reflection on the information that people choose to put into Open Mind. Regardless, we believe that this information will be especially useful in the tasks of user profiling and content recommendation. Both of these tasks are not new in any way, and businesses have been working of these problems for a long time now. However, we are suggesting a novel approach to these important tasks by using the common sense knowledge in Open Mind. As the knowledge in Open Mind continues to grow, our profiler and recommendation engine will only grow stronger and more accurate, reflecting the common sense of the public.


Catherine is interested in knowing what type of movie Open Mind would recommend her based on her profile. She is interested in knowing if the collective common sense of Open Mind can correctly identify a type of movie that she would enjoy. Catherine fires up Ask Jon and enters information about herself. Figure 1 depicts a sample interface that she would see. She tells the system that she is a twenty-one year old Chinese engineer who does not have any religious affiliation.

Figure 1: Interface for profile creation (v 0.2)

Catherine is then shown a description of herself based on the system's mining of Open Mind so she can see how the system describes her. Now based on this profile, Catherine can then ask the system to recommend a type of book, movie, music or any other thing that Open Mind might know about. She may even enter a topic she has no exposure to but is interested in learning about. For example, she might want to get started in classical music but has no experience. Ask Jon will be able to return composers or pieces that she and other people like her are interested in.

Related Work

There have been many examples of integrated user profiling and recommendation systems in the field of software agents. Here are a few of them categorized by their chosen approach:
Keyword matching
In many content-based recommendation systems, users are represented by a collection of relevant keywords in the domain of that system. Documents are recommended to users according to the semantic difference between their profiles and the keywords within the document. This semantic difference is calculated using a semantic distance function; for most functions, two documents are considered semantically close if they are classified by many of the same keywords. Examples of such systems include InfoFinder (Krulwich and Burkey, 1996), NewsWeeder (Lang, 1995) and many systems developed for the routing task at the TREC Conferences (Harman, 1994).
Automated Collaborative Filtering
Automated Collaborative Filtering (ACF) is a common approach to content recommendation. Polcicova describes a system that leveraged the collective opinions of members of a community to assist individuals in finding personally relevant information (Polcicova, 1999). In that example, each user's opinion is represented by a set of ratings; the content is HTML pages. The list is appended every time user rates an HTML page. If the user visits a new page (or the agent proactively found a new page), the recommendation agent predicts whether the page is relevant by looking at other users with similar profiles that have rated the page. It combines those ratings to form a prediction, and if the rating is higher than a certain factor, it is recommended to the user.

Soft Computing
Talkmine is a soft computing recommendation system that uses ACF for filtering and uses a mixture of semantics and structure to categorize the documents (Rocha, 2001). The content categorization process is a fuzzy approximation of various variables such as structural and semantic proximity, and each user is characterized by their interests (represented by keywords) and their document retrieval behavior. An interesting addition to the user model allows each user to have multiple personalities, i.e. different sets of interests and behaviors, and interchange between them freely.

Recommendation is carried out by calculating the keyword proximity of the user's query and their accumulated knowledge about the query with the relevant information resources. Probability is employed to combine the knowledge contexts of different users.

Bayes Classification
Bayes classifiers have been used extensively to build models of user's interests. In the WWW browsing assistant developed by Syskill & Webert (Pazzam, 1997) represents interests as Boolean feature vectors. A notable aspect of the approach is their choice of creating a new profile for each topic, thereby specializing each profile. A naïve Bayes classifier is used to revise the user profile, which is then used to compare documents linked from the current page to suggest relevant and interesting ones.

Interest Vector Clustering
Soltysiak (Soltysiak, 2001) experimented with vector clustering of document descriptors as an alternative to keyword matching. The application used a sentence-based text summarizer to generate descriptor based vectors. These document vectors were plotted and any high level of clustering is interpreted as a possible interest in that area. The interest clusters were then compared against the current user profile. If the interest is classified as a probably match, it is added to the user profile.

Once the user interest space has been populated, any new document can be classified in the same way and drawn onto the interest vector space. If the new document vector is sufficiently close to an existing interest vector cluster, it is recommended to the user.


Ask Jon will inherit design features from many of the past applications above, but will demonstrate something fundamentally new. It will try to mine the implicit knowledge of people's preference within Open Mind and integrate it with the recommendation process.

The performance of the past keyword matching systems has been limited due to the lack of contextual information. Ask Jon hopes to harness the context-rich environment of Open Mind and combine keyword/concept matching and statistical modeling to achieve better performance.

The application shall be an interactive tool that the user can use to gather information about their topics of interest. The tool can also extend beyond personal content recommendation, since it uses very little a priori knowledge. For example, a user can create a profile using someone else's information, and then try to predict things that would appeal to them, like what flowers they would likes, or their favorite TV shows.

Due to the nature of Open Mind, it is important for the user to understand that the application may return baffling results. Therefore, it is part of our design goal to make them aware of the application's dynamic and fun nature.

Design Overview:
The implementation is intended to be simple, yet effective. The profile creation screen only features four questions and a "create" button. The four questions were chosen based on Open Mind's content, and their orthogonality.

The content recommendation screen will have current searches and past searches. The user can rate the past results if they wish. While the application is processing information from Open Mind during the topic search function, the information from Open Mind is visualized in a stimulating and intuitive fashion. The intension of the visualization is two-fold. Primarily, it is to keep the user interested while he waits for the results. Secondly, it gives him an idea of how the application generates the results, so that the results will not come as a complete surprise.

Technical Overview:
The agent is implemented in Java. Both the GUI and main application resides on the client machine, and queries the Open Mind concept semantic net developed by Hugo Liu and Push Singh. Open Mind will be used for each topic search and to create the user's profile initially. The semantic net is located on a server and is accessed through a common gateway interface.

Several user profiles can be stored on the local machine and can be retrieved and loaded as the user wishes. The search results for each user are also saved along with the profile.


Krulwich, B. and C. Burkey (1996)."Learning user information interests through extraction of
semantically significant phrases." In: Proceedings of the AAAI Spring Symposium on
Machine Learning in Information Access. . Stanford, California, March 1996.
Lang, K. (1995)."Learning to filter news." In: Proceedings of the 12th International
Conference on Machine Learning. . Tahoe City, California, 1995.
Harman, D. (1994)."Overview of the 3rd Text Retrieval Conference (TREC-3). ." In:
Proceedings of the 3rd Text Retrieval Conference. . Gaithersburg, Md
Rocha, Luis M. (2001)."TalkMine: A Soft Computing Approach to Adaptive Knowledge Recommendation" In:
Soft Computing Agents: New Trends for Designing Autonomous Systems. Vincenzo Loia and Salvatore Sessa (Eds.). Series on Studies in Fuzziness and Soft Computing. Physica-Verlag, Spring. In Press.
Polcicova, G. (1999)."Recommending HTML-documents using Feature Guided Automated Collaborative Filtering"
Comenius University. Bratislava, Slovakia
Pazzam M J and Billsus D. (1997). "Learning and Revising User Profiles: The Identification of Interesting Web Sites". Machine Learning, 27, No3.
Soltysiak, S J. (2001)."Automatic learning of user profiles - towards the personalization of agent services"
Sixth International Conference on the Practical Application of Intelligent Agents and Multi-Agent Technology (PAAM98). London, March 23-25, 2001

Visual Elimination
David Garcia, Katie Todd, Catherine Havasi

For the final project, we are interested in experimenting further with alternate (i.e., visual) representations of results from the database and how they affect people's positive and negative views of assertions. We would like to expand on the implementation of the first project that resides at One idea we have is to modify our first project and make it a game of some sort, where users can, for example, click the "good" common-sense sentences that come up. A counter can be maintained to keep track of how many clicks a certain piece of knowledge has received (ie., "good" feedback) as well as how many times it might have been clicked but wasn't (i.e., "bad" feedback). After the "good" and "bad" feedback counters reach a certain ratio and minimum count (e.g., 15 bad feedbacks and only 2 good ones), that statement could be removed from the database because it would be considered to have a low quality level. These counters can be implemented as extra fields for each entry in the database an additional field would act as a flag to determine if the assertion should still be used.

Other visual representations (e.g. text-only, html form) for labeling assertions will be determined and implemented for comparison.

We intend to make some sort of incentive for users to play this game, including a high-score list or something similar displayed by the list of people who have entered the most assertions. We feel that the addition of this sort of feedback mechanism will allow users to evaluate items in the database, and eventually less-useful statements will be purged from the database. The end result would be an OpenMind database with less "garbage," (e.g. Catherine Havasi is not a fire-breathing chipmunk) which would then be more useful for other applications.

We will use Flash to implement this project. The database will have to be altered to accommodate the additional fields and also properly deal with deleted assertions. All of the backend and interface scripts will be written in Python.


Chian Chuu and Hana Kim

Our final project proposes to develop a game that involves one player collaborating with StoryFighter in writing a story with a predetermined start and goal state. The objective of the player is to get from the start state to the goal state in a certain number of steps. StoryFighter's goal is to prevent the player from reaching the goal state, by suggesting related sentences obtained through Open Mind's database, while still maintaining a coherent story. Open Mind and the player take turns in writing a sentence, and the sentences have to be related and follow from the previous sentence. It would be easy for the player to suggest a sentence that directly links the start state with the goal state, but an added challenge of the game is that StoryFighter restricts use of certain related words. For instance, if the start state is "John is in prison", goal state is "John is on vacation with his wife in Hawaii", possible taboo words would be "prison, plane, escape, Hawaii, vacation, wife." The player would have to use their writings smarts to get around the taboo words and to reach the goal state in the specified number of steps!

The players are given a start state and goal state, which are predetermined and stored in a library of start and goal states. The taboo words are the words that are found in the directly in the start and goal states, as well as the most common related words that are extracted from Open Mind queries on those words. The number of steps is a number that the player themselves can pick, which is an assessment of how challenging the game will be. The smaller the number of steps, the more challenging StoryFighter makes the game, by increasing the number of taboo words, and by suggesting story sentences that would make it hard for the player to reach the goal state. The game will consist of a text editor, as well as extra visual graphics to make the game stimulating and fun.

6 Degrees of Separation
Josh Juster & David Gottlieb

The goal of our project is to take a sentence entered by the user and return a paragraph that relates to the user input. The methodology behind it would be to use degrees of separation between the user input and search the Open Mind database for entries relating to the keywords with the specific separation. We believe that Hugo's reorganization of the database, thereby making it easier to mine, will be a big step to implementing our design. The advatange to our method than straight Open Mind, is that entering plain keywords might give you random, irrelevant facts about the keyword that a user does not want to sort through. By linking the keywords using the shortest path, we can be more specific in our call to Open Mind, therefore, Open Mind will be able to return facts that are a lot more relevant to the user input.

Here's an example of how our implementation would work.

User inputs:

Tomorrow I am going to the circus to see the clowns with my friend.

1) get keywords (minus stopwords)


2) link all keywords via their shortest paths

tomorrow-circus: 4 sentences tomorrow-clown: 3 sentences
tomorrow-friend: 1 sentence circus-clown: 1 sentence circus-friend: 2
sentences clown-friend: 2 sentences

This means that the database can link these words in x number of sentences.
for example:

clown-friend: 2 sentences:

Clowns are funny looking. I have a friend that is really funny.
clown- funny - friend

3) find shortest path that connects all keywords:

first sentence: tomorrow-friend link (1 sentence)
second/third sentence: friend-circus link (2 sentences)
fourth sentence: circus-clown link (1 sentence)

this links all words tomorrow-friend-circus-clown in 4 sentences

result: a paragraph with somewhat relevant information about what you are
typing (hopefully)

Final Projects