Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference or Relation between RASA and Spacy

I'm really new to Chatbots and starting to learn these stuff using frameworks. I'm starting to use this opensource framework RASA and learning about it. Then I found that this entity extraction tool Spacy, is used by RASA.

Can anybody explain what's the actual relation between these ? What's the role of Spacy within RASA ?

like image 771
Tharindu Thisarasinghe Avatar asked Aug 02 '18 07:08

Tharindu Thisarasinghe


People also ask

What is Rasa and spaCy?

Rasa is a library used for building AI chatbots using Python and natural language understanding (NLU). You will use Spacy for advanced natural language processing and backend operations.

Does Rasa use spaCy?

Back to Rasa Let's make a change to the NLU pipeline in our `config. yml` file so that we're able to use our own spaCy model. The main part that is important here is that we're configuring a SpacyNLP component in our pipeline that is referring to our own en_ner_demo_replace model.

What is the difference between Rasa NLU and Rasa core?

Rasa NLU: A natural language understanding solution which takes the user input and tries to infer the intent and extract the available entities. Rasa Core: A dialogue management solution tries to build a probability model which decides the set of actions to perform based on the previous set of user inputs.

What algorithm is used in Rasa?

Rasa NLU internally uses Bag-of-Word (BoW) algorithm to find intent and Conditional Random Field (CRF) to find entities. Although you can use other algorithms for finding intent and entities using Rasa. You have to create a custom pipeline to do that.


1 Answers

The Rasa stack has two primary components: NLU and Core. Inside of Rasa NLU there are pipelines for extracting intents and entities. One of the pipeline components uses spaCy. For example in this Rasa pipeline:

pipeline:
- name: "nlp_spacy"
- name: "tokenizer_spacy"
- name: "intent_entity_featurizer_regex"
- name: "intent_featurizer_spacy"
- name: "ner_crf"
- name: "ner_synonyms"
- name: "intent_classifier_sklearn"

spaCy is used for pre-processing of the utterances, tokenization, and featurization. It also utilizes other python libraries like nltk and sklearn.

But Rasa NLU has several different pipeline options. So in the below pipeline:

pipeline:
- name: "tokenizer_whitespace"
- name: "ner_crf"
- name: "intent_featurizer_count_vectors"
- name: "intent_classifier_tensorflow_embedding"

spaCy is not used at all, but sklearn and tensorflow are.

Rasa NLU attempts to abstract some of the difficulties of working with spaCy and other libraries to make it easier and more focused on building a chatbot. Then there are other applications that are trying to take Rasa NLU and make it even easier to use by providing a more abstraction with a GUI. It's a fairly common pattern in open source where one tool builds on another. Some of the GUI applications for Rasa are:

  • Rasa UI
  • Rasa Talk
  • Articulate
like image 127
Caleb Keller Avatar answered Sep 21 '22 18:09

Caleb Keller