Welcome to this page with a basic an overview of some of the required background information for this project. Some You most likely already have seen some of this information you have most likely seen before in other courses, but some of it will also be new to you. We expect each of you to have a decent understanding of the material listed below, as it that is necessary to be able to complete this project successfully. The background knowledge that we provide here is related to some of the main tools, software, and programming languages that are used within the project. There are a few quizzes that you need to complete, where the material presented below can be used to prepare (see also the Course Schedule).
Table of Contents | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Git
We use GitHub classroom Classroom to provide you with the initial agent code. GitHub is acode hosting platform for version control and collaboration. You need to join the GitHub classroom and use it for developing and sharing your code, and for storing and updating all the deliverables in this project. In order to understand how to do that, we introduce you to some basic readings and a tutorial to gain knowledge of how to use git. Git is a common tool used by many coding teams worldwide to develop code in tandem and facilitate its alignment. Getting to know git as part of this course will surely be of benefit to you in the long term.
Git Commands
Info |
---|
You can either do just the basics reading or do , just the interactive tutorial, or both. There is also a more in-depth explanation of each command in on the third page. |
The absolute basics (reading): https://www.simplilearn.com/tutorials/git-tutorial/git-commands.
...
https://www.simplilearn.com/tutorials/git-tutorial/merge-conflicts-in-git
Git Best Practices
Info |
---|
One of the most important takeaways from the link below is that: Commits are Supposed to Be Small and Frequent Whenever you have made a single logical alteration, you can commit code. Frequent commit helps you to write brief commit messages that are short yet informative. Also, it will provide significant meaning for those who may be reading through your code. |
https://www.geeksforgeeks.org/best-git-practices-to-follow-in-teams/
...
We use Google’s Dialogflow for transcribing spoken user utterances into text by means of using Automatic Speech Recognition (ASR), and for classifying these texts by means of intent recognition (NLU). One of your main tasks will be designing an intent scheme and adding entities for making to make sense of what a user says. You will need to specify these in your Dialogflow agent, which you need to create at the start of the project (only one per team). Dialogflow is a powerful and user-friendly tool to support building a conversational agent but needs some investment on your end to get acquainted. Git is a common tool used by many coding teams worldwide to develop code in tandem and facilitate its alignment. Getting to know git as part of this course will surely be of benefit to you in the long term. yourself acquainted with its capabilities. The resources we refer to below should provide you with some adequate support to use them in the remainder of the project. To make sure that you have the right level of understanding after going through the material, there are two quizzes in CANVAS that test your knowledge of the subjects. We have defined what areas will be tested on but feel free to read beyond those sections or other resources.
An Interactive Tutorial (Optional)
https://botflo.com/dialogflow-es-beginner-tutorial/
Best Practices
(until and not including ‘Protection of Consumer Practices’ section)
(In ‘Designing for Voice’ it mentions SSML, which will not be emphasized in this course)
references that you should read to familiarize yourself with the most important concepts used in the project.
What is a Dialogflow agent?
We talk about developing a conversational agent, but that agent itself consists of several other agents. One of those agents is a Dialogflow agent: https://cloud.google.com/dialogflow/es/docs/agents-overview.
Intents and Entities
Intents and entities are the two basic concepts from Dialogflow that we will use in this project while most other concepts will not be used. To learn about intents, read all sections until and not including the ‘Rich response message’ section here:https://cloud.google.com/dialogflow/es/docs/agents-design
What’s an Agent?
intents-overview. To learn about entities, read until and not including the ‘Session entities’ section here: https://cloud.google.com/dialogflow/es/docs/agentsentities-overview.
Intents
...
Best Practices
There are a few useful practices to learn about. To do so, read until and not including ‘Rich response message’ section)the ‘Protection of Consumer Practices’ section here:https://cloud.google.com/dialogflow/es/docs/intents-overview
Entities
(until and not including ‘Session entities’ section)
https://cloud.google.com/dialogflow/es/docs/entities-overview
Prolog
Prolog is a programming language focused on symbolic and logic-based computation. It's commonly used in artificial intelligence and computational linguistics. To understand Prolog thoroughly, one should familiarize oneself with its key concepts and structures, as outlined in the book "/agents-design. In ‘Designing for Voice’ SSML is mentioned which will not be used in this course.
An Interactive Tutorial
The best way to learn is to do. Although not required, we advise you to do thishttps://botflo.com/dialogflow-es-beginner-tutorial/.
HTML and Bootstrap
You will be developing a few basic web pages to provide some visual support to a user while they is conversing with your agent. We assume you are familiar with basic forms of HTML, the markup language for developing a webpage. If not, please check out this https://www.w3schools.com/html/default.asp to get you started. On top of HTML, we use Bootstrap 4 for facilitating the development of a webpage. The main purpose of this visual support is twofold: to provide (1) support to a user to reduce their cognitive load (the amount of information working memory needs to process at any given time) and (2) an indication of the progress on the task that has been made thus far. A user may not be able to remember all preferences and/or constraints on recipes they selected thus far. A system that would require a user to do so, would likely not be experienced as very user-friendly. It is also nice to show a user how much progress has been made in finding a recipe they like. A simple measure for our recipe recommendation agent to indicate progress is to show how many recipes still match the preferences of the user.
Bootstrap is a powerful, open-source front-end framework for web development. Many of the Bootstrap components can be used by a MARBEL agent to create and display webpages in a Chrome browser using the Social Interaction Cloud infrastructure. We first list a few of Bootstrap’s key features:
Responsive Design: Bootstrap's grid system and pre-designed components enable easy creation of responsive websites.
HTML, CSS, and JS Components: Offers a wide range of reusable components like buttons, and navigation bars.
Customization: Allows for extensive customization.
Community and Documentation: Backed by a strong community and comprehensive documentation.
Mobile-First Approach: Prioritizes mobile devices in design strategies.
This framework simplifies web development, making it accessible for beginners while still providing a powerful tool for more experienced developers.
To gain an understanding of Bootstrap, this https://www.w3schools.com/bootstrap4/default.asp will be very useful. To familiarize yourself with some of the basic components of Bootstrap, take a look at the first few items in the tutorial. We recommend you read at least up to the item on https://www.w3schools.com/bootstrap4/bootstrap_buttons.asp. The Tutorial will be useful for later reference to look up how you can change colors and use, for example, a progress bar.
To understand how you can integrate Bootstrap components into your agent, you need to read our Visual Support Guide. This is where we explain in more detail how you can use Bootstrap components for creating a webpage in this project.
Prolog
You will develop your recipe recommendation agent using MARBEL and SWI Prolog. The MARBEL agent implements a dialog management engine that you will use. You do not need to change this agent. You are, however, allowed to modify it if you like. The focus will be mostly on using Prolog to provide the agent with the knowledge it needs and to make it smarter by providing it with some logic related to its recipe recommendation task.
Prolog is a rule-based programming language based on symbolic logic. It is commonly used in Artificial Intelligence and Computational Linguistics. To understand Prolog, you should have familiarized yourself with its key concepts and structures using the book https://www.let.rug.nl/bos/lpn//lpnpage.php?pageid=online " by Patrick Blackburn, Johan Bos, and Kristina Striegnitz. This book covers fundamental topics like facts, rules, queries, unification, proof search, recursion, lists, arithmetic, definite clause grammars, and more. It also delves into more advanced topics such as cuts , negation, database manipulation, and working with files, providing a comprehensive overview of Prolog's capabilities and applicationsand negation. We briefly summarize here some of the core concepts for your convenience.
Logic-Based Programming: Prolog is fundamentally different from procedural languages like C or Python. It 's is based on formal logic, making it well-suited for tasks that involve rules and constraints, such as solving puzzles or processing natural language.
Facts, Rules, and RulesRecursion: The core of Prolog programming involves defining facts and rules. Facts state are basic assertions statements about objects and/or their relationships. Rules define relationships , while rules define the logic and conditions under which certain statements are true.Backtracking and Recursion: Prolog uses backtracking to between facts using basic logical relations such as conjunction, disjunction, and negation. The fact that rules can be recursive is what gives Prolog its power as a programming language. Recursion can be used, for example, for iterating over frequently used data structures in Prolog such as lists.
Lists and Arithmetic: Lists are fundamental data structures in Prolog. Prolog offers a range of built-in predicates for list manipulation. It also provides built-in support for arithmetic operations. Because Prolog’s basic form of computation is based on term matching, which does not support efficiently doing math, care must be taken to use the right operators when handling numbers in Prolog.
Pattern Matching and Unification: The Prolog core form of computation consists of pattern matching with the aim of unifying Prolog terms. Unification of two terms is a fundamental operation in Prolog, which, if it succeeds, returns substitutions for Prolog variables. When these substitutions are applied to the terms (and the variables instantiated), the result would be two identical terms.
Backtracking: Prolog uses backtracking to evaluate the rules in a program to find solutions to problems. If a potential solution fails at some stepone trace (part of a search tree) fails, Prolog automatically backtracks to find and try different options. Recursion is also a prevalent concept, used for iterating over data structures like lists.Pattern Matching and Unification: Prolog excels at pattern matching, where data structures are matched against patterns to extract information or verify conditions. Unification is a fundamental process in Prolog, used to make different terms identical through appropriate substitutionsalternative options that have not yet been explored to continue searching for a solution.
Advanced Features: Prolog provides advanced features like the cut operator. This operator can be used for controlling the backtracking process, mainly to increase the efficiency of Prolog programs.
Definite Clause Grammars (DCGs): These are used in Prolog for parsing and generating natural language constructs, making it them a powerful tool for language-related applications.
Lists and Arithmetic: Prolog treats lists as fundamental data structures, and offers a range of built-in predicates for list manipulation. It also supports arithmetic operations, but in a way that's distinct from traditional programming languages.
Advanced Features: Prolog provides advanced features like cuts (which control the backtracking process) and negation, along with capabilities for database manipulation and file handling, making it versatile for various complex applications.
Applications: Prolog is widely used in AI for tasks such as expert systems, natural language processing, and theorem proving, owing to its ability to handle complex symbolic information and logical constructs efficiently.
HTML Bootstrap Library
Bootstrap is a powerful, open-source front-end framework for web development. Key features include:
Responsive Design: Bootstrap's grid system and pre-designed components enable easy creation of responsive websites.
HTML, CSS, and JS Components: Offers a wide range of reusable components like buttons, forms, and navigation bars.
Customization: Allows extensive customization with Sass variables.
Cross-Browser Compatibility: Ensures consistency across different browsers and devices.
JavaScript Plugins: Includes various plugins for enhanced functionality.
Community and Documentation: Backed by a strong community and comprehensive documentation.
Mobile-First Approach: Prioritizes mobile devices in design strategies.
This framework simplifies web development, making it accessible for beginners while still powerful for experienced developers. Here is a link to the Documentation for more information: https://getbootstrap.com/docs/5.3/getting-started/introduction/ .
...
.