< Back

Lab 29: Loebner

As usual, create a directory to hold today's files. All programs that you write today should be stored in this directory.

    $ cd ~/cs120/labs
    $ mkdir lab29 
    $ cd lab29 


Loebner Competition

Modify Chat Bot Output Format

All chat bot programs must have the same output format so that it is not possible to distinguish between bot and human based on format.

  1. Modify your chat bot python program's output so that it conforms to the following standard:
    1. The bot should prompt for user input first
    2. The program should not print anything before the first prompt
    3. The bot should use the prompt text "> " (without the quotes)
    4. The bot should not prefix bot output with anything, i.e. do not print anything except for the prompts and your responses.

    For example, the output of the program should look like:

          > hello bot
          hello human
          > can you pass a Turing test?
          no, do you want to play chess?
        
  2. Download the python program verify_bot.py and put it in the same directory as your chat bot python file.
  3. From the directory containing your bot program, run the verify bot program by typing python3 verify_bot.py YOUR_BOT_FILE_NAME.py.
  4. Wait until everybody's bot file is successfully verified before proceeding.

Run The Client

The client program will communicate with the server to determine who you will chat with and will connect you to the bot or person you will chat with.

  1. Download the python program loebner_client.py and put it in the same directory as your chat bot python file.
  2. From the directory containing your bot program, run the client by typing python3 loebner_client.py YOUR_BOT_FILE_NAME.py. Note, YOUR_BOT_FILE_NAME.py is the name of your chat bot python file.
  3. Wait until everybody's has connected to the server.
  4. Chat.
  5. When the chat is over, evaluate who or what you were chatting with.

Spell Checking

You are probably as reliant on spell checking as I am. It is a process that has evolved tremendously over the past couple of decades. Real spell checkers us a data structure known as a Tree to make retreiving of mispelled words incredibly efficient. However, if you ignore the efficiency, checking a word against a dictionary of words is fairly straight forward.

Details

Create a file called spell_check_word.py That will allow a user to type in a word to get spell checked. Your program will read in a dictionary of words that it knows are correctly spelled. If the word the user typed in is in the dictionary file, then output that the word is spelled correctly. If it is not in the dictionary file, output that the word is not spelled correctly.

You can use our provided dictionary_file.in file in order to check spelling.

Example

  $ python3 spell_checker.py 
  What do you want to spell check? helol
  helol is not spelled correctly

  $ python3 spell_checker.py 
  What do you want to spell check? hello
  hello is spelled correctly

Hint

  • Create a function called check_dictionary(word, file_name). The function should take two string parameters: The word the uses wishes to check the spelling of, and a string which is the name of a text file representing the correctly spelled words. It should return a boolean, True if the word is in the dictionary file, and false otherwise.
  • Your function needs to iterate over every line from the text file, and check to see if the word parameter is equal to the word on the current line.

 

Challenge

The hamming distance between the two words is the number of characters that need to be flipped in order to make the words the same. Note that the hamming distance between two words is only defined when the strings are of the same length.

Using the notion of hamming distance, modify your above program so that it outputs a suggestion of what word the user meant to type. This will simply be the word from the dictionary that has the smallest hamming distance.