Project 2: myELIZA

For this project, you and your group will be designing and implementing a small system in C or C++ that will simulate a primitive AI chatbot. Specifically, you will be implementing a version of ELIZA that is one of the earliest natural language processing programs. The program will simulate a conversation between the user and a psychiatrist. You should consider the program interaction as the user having an initial psychiatric interview.

Details:

  • Your program will be based on C++ regular expressions that will be used for pattern matching and substitution methodology that gave users an illusion of understanding. You need to watch the video to understand the basic expectations of the program, and possible algorithms and data structures that could be implemented for this project.
  • Further, you will need to utilize the . You may access it from the website (), the terminal, or an IDE of your choice. Use
  • Also, as a reminder, all of the work for this project must be the sole product of the group. You may not share code with other groups, or download solutions off the internet, as doing so will be considered cheating. If you are struggling with a concept or implementation, you are encouraged to contact the instructor or your TAs for aid.

Requirements

This assignment has two parts: a wiki portion and an implementation portion.

Wiki

For the wiki portion, the group must generate documentation describing their system using the wiki functionality provided by GitLab. The wiki must contain at least one page that provides a high-level description of the entire system and must contain at least one page for each of the major functionality components (i.e. if there are six major functionality components, there should be at least six pages).

For the high-level description page, the team must provide a brief description of each of the major functionality components, how they work together, and some of the major data structures across the entire project. This information should not be copied and pasted from the project instructions. The page must also contain a diagram of the entire system, based on the one created during recitations. The diagram must be created digitally (i.e. using PowerPoint, Photoshop, Paint.net, UMLet, etc.), must be easy to read and understand, and cannot a photographed or scanned image.

For each major functionality component page, the student accountable for that component must provide a detailed description of their component. This description should have three labeled sections: a brief description of the purpose of the component, a description of how data was stored and maintained for this component, and a description of the functionality for the component. They might also consider including diagrams to more easily visualize how all of the pieces fit together.

For the data storage and maintenance section, there should be an explanation of how data was stored and maintained in their component. What, if any, objects or structs were created to store data? How were they organized and managed? What types of formal data structures did were made use of (trees, graphs, arrays, hashes, etc)?

For the functionality component, there should be an explanation of the major functions in the component. How is data moved and transformed? How is it read in? How is it output? What are the various major functions constructed and how do they work?

Descriptions and explanations should be primarily in prose and paragraph format, not bulleted lists. Code snippets are also acceptable, but must be used as an enhancement to the explanation of functionality not as a substitution for it.

Your grade for the wiki will partly be based on apparent effort, so please be thorough in your descriptions. Additionally, because this is a wiki, the high-level description page must have links to all of the major functionality component pages.

Implementation

Your program must provide the following functionality and adhere to the following constraints:

  • Your int main() should be in its own .c/.cpp file
  • All .c/.cpp files, except your c/main.cpp, must have associated header files. You may not #include a .c/.cpp file, only header files
  • The user will use his or her natural language to interact with the system. This means that there is no specific format required from the user or menu with options that need to be selected from the user to get a response from the system. However, for this assignment, assume that the user is communicating with single sentences, common phrases or short answers like “yes”, “I do not know”, “maybe”, etc.
  • Your system should respond to every user input even if invalid or non understandable :
    • Read in and store answers to keep track of repeated responses to motivate the user to give a different response.
    • End the program when the users types “bye”.
    • Have at least 50 different type of regular expressions to match responses and respond accordingly.
    • Your program must use regex to define regular expressions and then regex_match(), regex_search(), and regex_replace() to elaborate system responses.
  • See the example of .
  • Review the content of the following Webpages as resources: , and .
  • Major functionality components must be constructed in some function, or across some functions, that are declared and defined outside of your c/main.cpp . Remember, function declarations must be stored in a header file, while definitions must be stored in a .c/.cpp file. You may have additional functions that support your major functionality component function.
  • Your code must be well commented.
  • Each group member should be performing regular commits to the GitLab repository server with meaningful commit Fixed bug or New code are not meaningful, so try to be more specific about what was fixed or what was added.
  • You must provide a .txt format README file which includes:
    • The names of all group members
    • Instructions on how to compile your program
    • Instructions on how to run your program
  • Additionally, you may write a makefile, but please specify if it needs any additional flags to function properly.

Each student must be accountable for one or more major functionality components, and may not swap after they sign up for a component barring an exceptional circumstance. Failure to be accountable for any major functionality component will result in a 0 for the coding portions of the project (milestone submission and/or final submission). Keep in mind that some components build on others, so be careful about who takes ownership of which pieces and manage your time to avoid a crunch near the due date. Also, the group should strive to balance the work across all members.

The major functionality components are responses to user input that can be classified as containing any of the following:

  1. Generic verbs such have, purchase, travel, know, learn, etc.
  2. Love or relationships (keywords like love, spouse,girlfriend,boyfriend, etc)
  3. Concern ( keywords like hate, kill, suicide, etc.)
  4. Financial ( keywords like money, savings, investments, bankruptcy, etc.)
  5. Wellbeing (keywords like exercise, vitamins, relaxing, sleeping, etc).
  6. Education (keywords like courses, university, studying, student, education, etc. )
  7. Entertainment ( keywords like concert, movies,dancing, restaurant,bar, etc. )
  8. Others defined by group

Milestone Project Submission

Your program must provide all requested functionality for major functionality component 1, and storing user responses to detect multiple identical answers from the user and motivate to get a different response. At least one group member must submit a .zip file containing the following:

  1. All files necessary to compile and run your program (Please do not include any files not necessary to run the program on the CSE machines)
  2. A .txt format README file explaining how to compile and run your program

Final Project Submission

Your program must provide all requested functionality. At least one group member must submit a .zip file containing the following:

  1. All files necessary to compile and run your program (Please do not include any files not necessary to run the program on the CSE machines)
  2. A .txt format README file explaining how to compile and run your program

Calculate the price of your order

Select your paper details and see how much our professional writing services will cost.

We`ll send you the first draft for approval by at
Price: $36
  • Freebies
  • Format
  • Formatting (MLA, APA, Chicago, custom, etc.)
  • Title page & bibliography
  • 24/7 customer support
  • Amendments to your paper when they are needed
  • Chat with your writer
  • 275 word/double-spaced page
  • 12 point Arial/Times New Roman
  • Double, single, and custom spacing
  • We care about originality

    Our custom human-written papers from top essay writers are always free from plagiarism.

  • We protect your privacy

    Your data and payment info stay secured every time you get our help from an essay writer.

  • You control your money

    Your money is safe with us. If your plans change, you can get it sent back to your card.

How it works

  1. 1
    You give us the details
    Complete a brief order form to tell us what kind of paper you need.
  2. 2
    We find you a top writer
    One of the best experts in your discipline starts working on your essay.
  3. 3
    You get the paper done
    Enjoy writing that meets your demands and high academic standards!

Samples from our advanced writers

Check out some essay pieces from our best essay writers before your place an order. They will help you better understand what our service can do for you.

  • Essay (any type)
    Direct Social Work Practice and Helping Process
    Undergrad. (yrs 3-4)
    Social Work and Human Services
    APA

Get your own paper from top experts

Order now

Perks of our essay writing service

We offer more than just hand-crafted papers customized for you. Here are more of our greatest perks.

  • Swift delivery
    Our writing service can deliver your short and urgent papers in just 4 hours!
  • Professional touch
    We find you a pro writer who knows all the ins and outs of your subject.
  • Easy order placing/tracking
    Create a new order and check on its progress at any time in your dashboard.
  • Help with any kind of paper
    Need a PhD thesis, research project, or a two-page essay? For you, we can do it all.
  • Experts in 80+ subjects
    Our pro writers can help you with anything, from nursing to business studies.
  • Calculations and code
    We also do math, write code, and solve problems in 30+ STEM disciplines.

Frequently asked questions

Get instant answers to the questions that students ask most often.

See full FAQ
  • How do you find the best essay writer for me?

    Our professional writing service focuses on giving you the right specialist so the one assigned will have the knowledge about the right topic. However, if you’ve used our essay service before, you can ask us to assign you the expert writer who used to complete papers for you in the past. We can easily do so if the specialist in question is available at the moment.

    If you’re ordering from our essay writing service for the first time, we will assign you a suitable expert ourselves and ensure that your academic essay writer is a pro. Moreover, let us know how complex your assignment is so that we can find the best match for your order.

    We’ve hired the best writers in 80+ academic subjects to complete any paper you need. As soon as we hear, “Write my essays,” our support team assigns you the writer who understands your needs and subject.

    In case you need to make sure we’ve picked a great specialist to deal with your paper, you can chat with the expert writers directly. We do our best to make sure you’re happy with the writer we’ve selected for you.

  • How can you prove that your paper writing service is not a scam?

    We have been selling original essays for more than 15 years. To prove that we are a trustworthy custom essay writing company, we provide quick delivery and a money-back guarantee. If we can’t complete your paper for any reason, we’ll send your money back to the credit card. We want to deliver the finest services, so you can decide if the paper is good enough; from our side, we’ll edit it according to your primary requirements to make the writing perfect. Our online paper writing service is about both giving you the materials you need when you need them and ensuring that your private data is safe. Check out our guarantees to see how we control the quality of your assignment and protect you as a customer.

See full FAQ

Take your studies to the next level with our experienced specialists