Why do we need entity roles and entity groups?
Sometimes, it is not enough to only have the entity type and entity value to accomplish a complicated task. We need to distinguish entities at a more granular level. Rasa provides two additional pieces of information about an entity: its role and group.
You can use entity roles to distinguish entities from the same entity type. For example, in your bot system, you can use an entity of the city type to mark a traveler's departure and arrival cities. Since both the departure and the destination are marked as city types, the bot cannot distinguish which one is the departure. In this case, you can use the entity role information to determine which city entity is the departure city and which one is the arrival city.
For more complex expressions, users could express two or more different requests at the same time. This time, understanding how to distinguish between which entities belong to the same group of requests will be critical...