HarshanaLF commited on
Commit
d5c3c3f
·
verified ·
1 Parent(s): b1e2198

Upload folder using huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .dockeringore +52 -0
  2. .gitattributes +9 -35
  3. .github/workflows/check_file_size.yml +16 -0
  4. .github/workflows/huggingface.yml +20 -0
  5. .gitignore +14 -0
  6. .pylintrc +429 -0
  7. LICENSE +21 -0
  8. Makefile +108 -0
  9. README.md +168 -0
  10. app/actions/__init__.py +0 -0
  11. app/actions/__pycache__/__init__.cpython-310.pyc +0 -0
  12. app/actions/__pycache__/__init__.cpython-37.pyc +0 -0
  13. app/actions/__pycache__/actions.cpython-310.pyc +0 -0
  14. app/actions/__pycache__/actions.cpython-37.pyc +0 -0
  15. app/actions/actions.py +256 -0
  16. app/components/spell.py +51 -0
  17. app/configs/config_bert.yml +35 -0
  18. app/configs/config_custom.yml +66 -0
  19. app/configs/config_spacy.yml +38 -0
  20. app/configs/config_supervised.yml +28 -0
  21. app/credentials.yml +32 -0
  22. app/data/nlu/nlu _hotel.yml +208 -0
  23. app/data/nlu/nlu _mood.yml +88 -0
  24. app/data/nlu/nlu _out_of_scope.yml +527 -0
  25. app/data/nlu/nlu _resturant.yml +28 -0
  26. app/data/nlu/nlu.yml +115 -0
  27. app/data/rules/rules _hotel.yml +12 -0
  28. app/data/rules/rules _mood.yml +12 -0
  29. app/data/rules/rules _out_of_scope.yml +12 -0
  30. app/data/rules/rules _resturant.yml +7 -0
  31. app/data/rules/rules.yml +7 -0
  32. app/data/stories/stories _hotel.yml +322 -0
  33. app/data/stories/stories _mood.yml +28 -0
  34. app/data/stories/stories.yml +6 -0
  35. app/data/stories/stories_resturant.yml +11 -0
  36. app/dev-requirements.txt.txt +1 -0
  37. app/domain.yml +225 -0
  38. app/endpoints.yml +69 -0
  39. app/requirements.txt +3 -0
  40. app/resources/de.json.gz +3 -0
  41. app/resources/hotel_lex.txt +2 -0
  42. app/tests/test_stories.yml +20 -0
  43. docker/Dockerfile.action +18 -0
  44. docker/Dockerfile.rasa +24 -0
  45. docker/docker-compose.yml +74 -0
  46. nginx/default.conf +42 -0
  47. nginx/index.html +84 -0
  48. scripts/init.bat +7 -0
  49. scripts/init.sh +6 -0
  50. scripts/start.bat +8 -0
.dockeringore ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Ignore Python cache
2
+
3
+ **pycache**
4
+ _.pyc
5
+ _.pyo
6
+
7
+ # Ignore virtual environments
8
+
9
+ venv/
10
+ .env/
11
+
12
+ # Ignore logs and temporary files
13
+
14
+ _.log
15
+ _.tmp
16
+ \*.swp
17
+
18
+ # Ignore Docker-specific files
19
+
20
+ Dockerfile
21
+ docker-compose.yml
22
+ .dockerignore
23
+
24
+ # Ignore version control files
25
+
26
+ .git
27
+ .gitignore
28
+
29
+ # Ignore node_modules
30
+
31
+ node_modules/
32
+
33
+ # Ignore build directories
34
+
35
+ build/
36
+ dist/
37
+
38
+ # Ignore database files
39
+
40
+ db/
41
+
42
+ # Ignore IDE and editor specific files
43
+
44
+ .vscode/
45
+ .idea/
46
+ _.sublime-project
47
+ _.sublime-workspace
48
+
49
+ # Ignore OS generated files
50
+
51
+ .DS_Store
52
+ Thumbs.db
.gitattributes CHANGED
@@ -1,35 +1,9 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
1
+ # *.tar.gz filter=lfs diff=lfs merge=lfs -text
2
+ # \# filter=lfs diff=lfs merge=lfs -text
3
+ # Track filter=lfs diff=lfs merge=lfs -text
4
+ # .tar.gz filter=lfs diff=lfs merge=lfs -text
5
+ # files filter=lfs diff=lfs merge=lfs -text
6
+ # kubectl.exe filter=lfs diff=lfs merge=lfs -text
7
+ # app/models/*.tar.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.tar.gz filter=lfs diff=lfs merge=lfs -text
9
+ app/resources/de.json.gz filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.github/workflows/check_file_size.yml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Check file size
2
+ on: # or directly `on: [push]` to run the action on every push on any branch
3
+ pull_request:
4
+ branches: [master]
5
+
6
+ # to run this workflow manually from the Actions tab
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ sync-to-hub:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Check large files
14
+ uses: ActionsDesk/lfs-warning@v2.0
15
+ with:
16
+ filesizelimit: 10485760
.github/workflows/huggingface.yml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Sync to Hugging Face hub
2
+ on:
3
+ push:
4
+ branches: [master]
5
+
6
+ # to run this workflow manually from the Actions tab
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ sync-to-hub:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v3
14
+ with:
15
+ fetch-depth: 0
16
+ lfs: true
17
+ - name: Push to hub
18
+ env:
19
+ HF_TOKEN: ${{ secrets.HF_TOKEN }}
20
+ run: git push -f https://HarshanaLF:$HF_TOKEN@huggingface.co/spaces/HarshanaLF/rasa-hotel-core master
.gitignore ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Ignore models and database directories
2
+ app/models/
3
+ /docker/db/
4
+ /venv/
5
+ /app/venv/
6
+ # Ignore specific files and directories
7
+ .rasa/
8
+ .keras/
9
+ __pycache__/
10
+ .config/
11
+ .env
12
+
13
+ # Ignore .tar.gz files in app/models directory
14
+ app/models/*.tar.gz
.pylintrc ADDED
@@ -0,0 +1,429 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This Pylint rcfile contains a best-effort configuration to uphold the
2
+ # best-practices and style described in the Google Python style guide:
3
+ # https://google.github.io/styleguide/pyguide.html
4
+ #
5
+ # Its canonical open-source location is:
6
+ # https://google.github.io/styleguide/pylintrc
7
+
8
+ [MASTER]
9
+
10
+ # Files or directories to be skipped. They should be base names, not paths.
11
+ ignore=third_party
12
+
13
+ # Files or directories matching the regex patterns are skipped. The regex
14
+ # matches against base names, not paths.
15
+ ignore-patterns=
16
+
17
+ # Pickle collected data for later comparisons.
18
+ persistent=no
19
+
20
+ # List of plugins (as comma separated values of python modules names) to load,
21
+ # usually to register additional checkers.
22
+ load-plugins=
23
+
24
+ # Use multiple processes to speed up Pylint.
25
+ jobs=4
26
+
27
+ # Allow loading of arbitrary C extensions. Extensions are imported into the
28
+ # active Python interpreter and may run arbitrary code.
29
+ unsafe-load-any-extension=no
30
+
31
+
32
+ [MESSAGES CONTROL]
33
+
34
+ # Only show warnings with the listed confidence levels. Leave empty to show
35
+ # all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
36
+ confidence=
37
+
38
+ # Enable the message, report, category or checker with the given id(s). You can
39
+ # either give multiple identifier separated by comma (,) or put this option
40
+ # multiple time (only on the command line, not in the configuration file where
41
+ # it should appear only once). See also the "--disable" option for examples.
42
+ #enable=
43
+
44
+ # Disable the message, report, category or checker with the given id(s). You
45
+ # can either give multiple identifiers separated by comma (,) or put this
46
+ # option multiple times (only on the command line, not in the configuration
47
+ # file where it should appear only once).You can also use "--disable=all" to
48
+ # disable everything first and then reenable specific checks. For example, if
49
+ # you want to run only the similarities checker, you can use "--disable=all
50
+ # --enable=similarities". If you want to run only the classes checker, but have
51
+ # no Warning level messages displayed, use"--disable=all --enable=classes
52
+ # --disable=W"
53
+ disable=abstract-method,
54
+ apply-builtin,
55
+ arguments-differ,
56
+ attribute-defined-outside-init,
57
+ backtick,
58
+ bad-option-value,
59
+ basestring-builtin,
60
+ buffer-builtin,
61
+ c-extension-no-member,
62
+ consider-using-enumerate,
63
+ cmp-builtin,
64
+ cmp-method,
65
+ coerce-builtin,
66
+ coerce-method,
67
+ delslice-method,
68
+ div-method,
69
+ duplicate-code,
70
+ eq-without-hash,
71
+ execfile-builtin,
72
+ file-builtin,
73
+ filter-builtin-not-iterating,
74
+ fixme,
75
+ getslice-method,
76
+ global-statement,
77
+ hex-method,
78
+ idiv-method,
79
+ implicit-str-concat,
80
+ import-error,
81
+ import-self,
82
+ import-star-module-level,
83
+ inconsistent-return-statements,
84
+ input-builtin,
85
+ intern-builtin,
86
+ invalid-str-codec,
87
+ locally-disabled,
88
+ long-builtin,
89
+ long-suffix,
90
+ map-builtin-not-iterating,
91
+ misplaced-comparison-constant,
92
+ missing-function-docstring,
93
+ metaclass-assignment,
94
+ next-method-called,
95
+ next-method-defined,
96
+ no-absolute-import,
97
+ no-else-break,
98
+ no-else-continue,
99
+ no-else-raise,
100
+ no-else-return,
101
+ no-init, # added
102
+ no-member,
103
+ no-name-in-module,
104
+ no-self-use,
105
+ nonzero-method,
106
+ oct-method,
107
+ old-division,
108
+ old-ne-operator,
109
+ old-octal-literal,
110
+ old-raise-syntax,
111
+ parameter-unpacking,
112
+ print-statement,
113
+ raising-string,
114
+ range-builtin-not-iterating,
115
+ raw_input-builtin,
116
+ rdiv-method,
117
+ reduce-builtin,
118
+ relative-import,
119
+ reload-builtin,
120
+ round-builtin,
121
+ setslice-method,
122
+ signature-differs,
123
+ standarderror-builtin,
124
+ suppressed-message,
125
+ sys-max-int,
126
+ too-few-public-methods,
127
+ too-many-ancestors,
128
+ too-many-arguments,
129
+ too-many-boolean-expressions,
130
+ too-many-branches,
131
+ too-many-instance-attributes,
132
+ too-many-locals,
133
+ too-many-nested-blocks,
134
+ too-many-public-methods,
135
+ too-many-return-statements,
136
+ too-many-statements,
137
+ trailing-newlines,
138
+ unichr-builtin,
139
+ unicode-builtin,
140
+ unnecessary-pass,
141
+ unpacking-in-except,
142
+ useless-else-on-loop,
143
+ useless-object-inheritance,
144
+ useless-suppression,
145
+ using-cmp-argument,
146
+ wrong-import-order,
147
+ xrange-builtin,
148
+ zip-builtin-not-iterating,
149
+
150
+
151
+ [REPORTS]
152
+
153
+ # Set the output format. Available formats are text, parseable, colorized, msvs
154
+ # (visual studio) and html. You can also give a reporter class, eg
155
+ # mypackage.mymodule.MyReporterClass.
156
+ output-format=text
157
+
158
+ # Tells whether to display a full report or only the messages
159
+ reports=no
160
+
161
+ # Python expression which should return a note less than 10 (10 is the highest
162
+ # note). You have access to the variables errors warning, statement which
163
+ # respectively contain the number of errors / warnings messages and the total
164
+ # number of statements analyzed. This is used by the global evaluation report
165
+ # (RP0004).
166
+ evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
167
+
168
+ # Template used to display messages. This is a python new-style format string
169
+ # used to format the message information. See doc for all details
170
+ #msg-template=
171
+
172
+
173
+ [BASIC]
174
+
175
+ # Good variable names which should always be accepted, separated by a comma
176
+ good-names=main,_
177
+
178
+ # Bad variable names which should always be refused, separated by a comma
179
+ bad-names=
180
+
181
+ # Colon-delimited sets of names that determine each other's naming style when
182
+ # the name regexes allow several styles.
183
+ name-group=
184
+
185
+ # Include a hint for the correct naming format with invalid-name
186
+ include-naming-hint=no
187
+
188
+ # List of decorators that produce properties, such as abc.abstractproperty. Add
189
+ # to this list to register other decorators that produce valid properties.
190
+ property-classes=abc.abstractproperty,cached_property.cached_property,cached_property.threaded_cached_property,cached_property.cached_property_with_ttl,cached_property.threaded_cached_property_with_ttl
191
+
192
+ # Regular expression matching correct function names
193
+ function-rgx=^(?:(?P<exempt>setUp|tearDown|setUpModule|tearDownModule)|(?P<camel_case>_?[A-Z][a-zA-Z0-9]*)|(?P<snake_case>_?[a-z][a-z0-9_]*))$
194
+
195
+ # Regular expression matching correct variable names
196
+ variable-rgx=^[a-z][a-z0-9_]*$
197
+
198
+ # Regular expression matching correct constant names
199
+ const-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$
200
+
201
+ # Regular expression matching correct attribute names
202
+ attr-rgx=^_{0,2}[a-z][a-z0-9_]*$
203
+
204
+ # Regular expression matching correct argument names
205
+ argument-rgx=^[a-z][a-z0-9_]*$
206
+
207
+ # Regular expression matching correct class attribute names
208
+ class-attribute-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$
209
+
210
+ # Regular expression matching correct inline iteration names
211
+ inlinevar-rgx=^[a-z][a-z0-9_]*$
212
+
213
+ # Regular expression matching correct class names
214
+ class-rgx=^_?[A-Z][a-zA-Z0-9]*$
215
+
216
+ # Regular expression matching correct module names
217
+ module-rgx=^(_?[a-z][a-z0-9_]*|__init__)$
218
+
219
+ # Regular expression matching correct method names
220
+ method-rgx=(?x)^(?:(?P<exempt>_[a-z0-9_]+__|runTest|setUp|tearDown|setUpTestCase|tearDownTestCase|setupSelf|tearDownClass|setUpClass|(test|assert)_*[A-Z0-9][a-zA-Z0-9_]*|next)|(?P<camel_case>_{0,2}[A-Z][a-zA-Z0-9_]*)|(?P<snake_case>_{0,2}[a-z][a-z0-9_]*))$
221
+
222
+ # Regular expression which should only match function or class names that do
223
+ # not require a docstring.
224
+ no-docstring-rgx=(__.*__|main|test.*|.*test|.*Test)$
225
+
226
+ # Minimum line length for functions/classes that require docstrings, shorter
227
+ # ones are exempt.
228
+ docstring-min-length=10
229
+
230
+
231
+ [TYPECHECK]
232
+
233
+ # List of decorators that produce context managers, such as
234
+ # contextlib.contextmanager. Add to this list to register other decorators that
235
+ # produce valid context managers.
236
+ contextmanager-decorators=contextlib.contextmanager,contextlib2.contextmanager
237
+
238
+ # Tells whether missing members accessed in mixin class should be ignored. A
239
+ # mixin class is detected if its name ends with "mixin" (case insensitive).
240
+ ignore-mixin-members=yes
241
+
242
+ # List of module names for which member attributes should not be checked
243
+ # (useful for modules/projects where namespaces are manipulated during runtime
244
+ # and thus existing member attributes cannot be deduced by static analysis. It
245
+ # supports qualified module names, as well as Unix pattern matching.
246
+ ignored-modules=
247
+
248
+ # List of class names for which member attributes should not be checked (useful
249
+ # for classes with dynamically set attributes). This supports the use of
250
+ # qualified names.
251
+ ignored-classes=optparse.Values,thread._local,_thread._local
252
+
253
+ # List of members which are set dynamically and missed by pylint inference
254
+ # system, and so shouldn't trigger E1101 when accessed. Python regular
255
+ # expressions are accepted.
256
+ generated-members=
257
+
258
+
259
+ [FORMAT]
260
+
261
+ # Maximum number of characters on a single line.
262
+ max-line-length=80
263
+
264
+ # TODO(https://github.com/PyCQA/pylint/issues/3352): Direct pylint to exempt
265
+ # lines made too long by directives to pytype.
266
+
267
+ # Regexp for a line that is allowed to be longer than the limit.
268
+ ignore-long-lines=(?x)(
269
+ ^\s*(\#\ )?<?https?://\S+>?$|
270
+ ^\s*(from\s+\S+\s+)?import\s+.+$)
271
+
272
+ # Allow the body of an if to be on the same line as the test if there is no
273
+ # else.
274
+ single-line-if-stmt=yes
275
+
276
+ # Maximum number of lines in a module
277
+ max-module-lines=99999
278
+
279
+ # String used as indentation unit. The internal Google style guide mandates 2
280
+ # spaces. Google's externaly-published style guide says 4, consistent with
281
+ # PEP 8. Here, we use 2 spaces, for conformity with many open-sourced Google
282
+ # projects (like TensorFlow).
283
+ indent-string=' '
284
+
285
+ # Number of spaces of indent required inside a hanging or continued line.
286
+ indent-after-paren=4
287
+
288
+ # Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
289
+ expected-line-ending-format=
290
+
291
+
292
+ [MISCELLANEOUS]
293
+
294
+ # List of note tags to take in consideration, separated by a comma.
295
+ notes=TODO
296
+
297
+
298
+ [STRING]
299
+
300
+ # This flag controls whether inconsistent-quotes generates a warning when the
301
+ # character used as a quote delimiter is used inconsistently within a module.
302
+ check-quote-consistency=yes
303
+
304
+
305
+ [VARIABLES]
306
+
307
+ # Tells whether we should check for unused import in __init__ files.
308
+ init-import=no
309
+
310
+ # A regular expression matching the name of dummy variables (i.e. expectedly
311
+ # not used).
312
+ dummy-variables-rgx=^\*{0,2}(_$|unused_|dummy_)
313
+
314
+ # List of additional names supposed to be defined in builtins. Remember that
315
+ # you should avoid to define new builtins when possible.
316
+ additional-builtins=
317
+
318
+ # List of strings which can identify a callback function by name. A callback
319
+ # name must start or end with one of those strings.
320
+ callbacks=cb_,_cb
321
+
322
+ # List of qualified module names which can have objects that can redefine
323
+ # builtins.
324
+ redefining-builtins-modules=six,six.moves,past.builtins,future.builtins,functools
325
+
326
+
327
+ [LOGGING]
328
+
329
+ # Logging modules to check that the string format arguments are in logging
330
+ # function parameter format
331
+ logging-modules=logging,absl.logging,tensorflow.io.logging
332
+
333
+
334
+ [SIMILARITIES]
335
+
336
+ # Minimum lines number of a similarity.
337
+ min-similarity-lines=4
338
+
339
+ # Ignore comments when computing similarities.
340
+ ignore-comments=yes
341
+
342
+ # Ignore docstrings when computing similarities.
343
+ ignore-docstrings=yes
344
+
345
+ # Ignore imports when computing similarities.
346
+ ignore-imports=no
347
+
348
+
349
+ [SPELLING]
350
+
351
+ # Spelling dictionary name. Available dictionaries: none. To make it working
352
+ # install python-enchant package.
353
+ spelling-dict=
354
+
355
+ # List of comma separated words that should not be checked.
356
+ spelling-ignore-words=
357
+
358
+ # A path to a file that contains private dictionary; one word per line.
359
+ spelling-private-dict-file=
360
+
361
+ # Tells whether to store unknown words to indicated private dictionary in
362
+ # --spelling-private-dict-file option instead of raising a message.
363
+ spelling-store-unknown-words=no
364
+
365
+
366
+ [IMPORTS]
367
+
368
+ # Deprecated modules which should not be used, separated by a comma
369
+ deprecated-modules=regsub,
370
+ TERMIOS,
371
+ Bastion,
372
+ rexec,
373
+ sets
374
+
375
+ # Create a graph of every (i.e. internal and external) dependencies in the
376
+ # given file (report RP0402 must not be disabled)
377
+ import-graph=
378
+
379
+ # Create a graph of external dependencies in the given file (report RP0402 must
380
+ # not be disabled)
381
+ ext-import-graph=
382
+
383
+ # Create a graph of internal dependencies in the given file (report RP0402 must
384
+ # not be disabled)
385
+ int-import-graph=
386
+
387
+ # Force import order to recognize a module as part of the standard
388
+ # compatibility libraries.
389
+ known-standard-library=
390
+
391
+ # Force import order to recognize a module as part of a third party library.
392
+ known-third-party=enchant, absl
393
+
394
+ # Analyse import fallback blocks. This can be used to support both Python 2 and
395
+ # 3 compatible code, which means that the block might have code that exists
396
+ # only in one or another interpreter, leading to false positives when analysed.
397
+ analyse-fallback-blocks=no
398
+
399
+
400
+ [CLASSES]
401
+
402
+ # List of method names used to declare (i.e. assign) instance attributes.
403
+ defining-attr-methods=__init__,
404
+ __new__,
405
+ setUp
406
+
407
+ # List of member names, which should be excluded from the protected access
408
+ # warning.
409
+ exclude-protected=_asdict,
410
+ _fields,
411
+ _replace,
412
+ _source,
413
+ _make
414
+
415
+ # List of valid names for the first argument in a class method.
416
+ valid-classmethod-first-arg=cls,
417
+ class_
418
+
419
+ # List of valid names for the first argument in a metaclass class method.
420
+ valid-metaclass-classmethod-first-arg=mcs
421
+
422
+
423
+ [EXCEPTIONS]
424
+
425
+ # Exceptions that will emit a warning when being caught. Defaults to
426
+ # "Exception"
427
+ overgeneral-exceptions=builtins.StandardError,
428
+ builtins.Exception,
429
+ builtins.BaseException
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Harshana Lakshara Fernando
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
Makefile ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Determine the operating system
2
+ ifeq ($(OS),Windows_NT)
3
+ # Windows-specific commands
4
+ INIT_SCRIPT := scripts/init.bat
5
+ START_SCRIPT := scripts/start.bat
6
+ STOP_SCRIPT := scripts/stop.bat
7
+ SQL_SCRIPT := scripts/startSql.bat
8
+ RM := del /Q
9
+ RM_DIR := rmdir /S /Q
10
+ else
11
+ # Linux/macOS commands
12
+ INIT_SCRIPT := scripts/init.sh
13
+ START_SCRIPT := scripts/start.sh
14
+ STOP_SCRIPT := scripts/stop.sh
15
+ SQL_SCRIPT := scripts/startSql.sh
16
+ RM := rm -rf
17
+ endif
18
+
19
+ # Common paths
20
+ DOCKER_COMPOSE := docker/docker-compose.yml
21
+ config_supervised := app/configs/config_supervised.yml
22
+ config_bert := app/configs/config_bert.yml
23
+ config_spacy := app/configs/config_spacy.yml
24
+ config_custom := app/configs/config_custom.yml
25
+ ACTION := app/actions
26
+ MODEL := app/models
27
+ DATA := app/data
28
+ ENDPOINT := app/endpoints.yml
29
+ DOMAIN := app/domain.yml
30
+
31
+ # Phony targets
32
+ .PHONY: init docker-start docker-stop docker-up docker-down docker-rm docker-clean sql train train-nlu run-actions shell run validate help clean
33
+
34
+ # Targets
35
+ init: ## Initialize permissions and folder structure
36
+ $(INIT_SCRIPT)
37
+
38
+ docker-start: ## Start Docker containers
39
+ $(START_SCRIPT)
40
+
41
+ docker-stop: ## Stop Docker containers
42
+ $(STOP_SCRIPT)
43
+
44
+ docker-up: ## Bring up Docker containers
45
+ @echo "Starting Docker containers..."
46
+ docker-compose -f $(DOCKER_COMPOSE) up -d
47
+
48
+ docker-down: ## Bring down Docker containers
49
+ @echo "Stopping Docker containers..."
50
+ docker-compose -f $(DOCKER_COMPOSE) down
51
+
52
+ docker-rm: ## Remove Docker containers
53
+ @echo "Removing Docker containers..."
54
+ docker-compose -f $(DOCKER_COMPOSE) rm -f
55
+
56
+ docker-clean-full: ## Clean Docker resources
57
+ @echo "Cleaning Docker resources..."
58
+ docker stop $(docker ps -aq) || true
59
+ docker rm $(docker ps -aq) || true
60
+ docker images -a
61
+ docker rmi -f $(docker images -aq) || true
62
+ docker network ls
63
+ docker network prune
64
+ docker volume ls
65
+ docker volume prune
66
+ docker system prune -a --volumes
67
+ docker system prune --volumes -f
68
+
69
+ docker-clean: ## Clean Docker resources
70
+ @echo "Cleaning Docker resources..."
71
+ docker system prune --volumes -f
72
+
73
+ sql: ## Start SQL database access
74
+ $(SQL_SCRIPT)
75
+
76
+ train: ## Train the full Rasa model
77
+ rasa train --domain $(DOMAIN) --data $(DATA) --config $(config_supervised) --out $(MODEL)
78
+
79
+ train-nlu: ## Train only the NLU model
80
+ rasa train nlu --nlu $(DATA)/nlu --config $(config_supervised) --out $(MODEL)/nlu
81
+
82
+ run-actions: ## Run the action server
83
+ rasa run actions --actions $(ACTION) --cors "*" --debug
84
+
85
+ shell: ## Run an interactive Rasa shell
86
+ $(MAKE) run-actions &
87
+ rasa shell -m $(MODEL) --endpoints $(ENDPOINT)
88
+
89
+ run: ## Run the Rasa server with React web app
90
+ $(MAKE) run-actions &
91
+ rasa run --enable-api -m $(MODEL) --cors "*" --debug
92
+
93
+ validate: ## Validate the Rasa files
94
+ rasa data validate --domain $(DOMAIN) --data $(DATA) --config $(config_supervised)
95
+
96
+ clean: ## Clean up generated files and caches
97
+ @echo "Cleaning up generated files and caches..."
98
+ $(RM) $(MODEL)/*
99
+ $(RM_DIR) __pycache__
100
+ $(RM_DIR) .rasa
101
+ $(RM_DIR) .keras
102
+
103
+ help: ## Display help
104
+ @echo "Usage:"
105
+ @echo " make <target>"
106
+ @echo ""
107
+ @echo "Targets:"
108
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}'
README.md ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Hotel Assistant Chatbot
2
+
3
+ Welcome to the Hotel Assistant Chatbot project! This repository contains a conversational AI powered by the Rasa framework, integrating Language Model capabilities from OpenAI. The chatbot assists users with various hotel-related queries, leveraging both structured data and natural language understanding.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Introduction](#introduction)
8
+ - [Installation](#installation)
9
+ - [Usage](#usage)
10
+ - [Training the Model](#training-the-model)
11
+ - [Running the Action Server](#running-the-action-server)
12
+ - [Interacting with the Bot](#interacting-with-the-bot)
13
+ - [Configuration](#configuration)
14
+ - [File Structure](#file-structure)
15
+ - [Makefile Commands](#makefile-commands)
16
+ - [Contributing](#contributing)
17
+ - [License](#license)
18
+
19
+ ## Introduction
20
+
21
+ The Hotel Assistant Chatbot leverages state-of-the-art Natural Language Processing (NLP) techniques to provide an intelligent conversational interface for hotel-related inquiries. This chatbot is built using the Rasa framework, which combines rule-based dialogue management with machine learning models for natural language understanding (NLU).
22
+
23
+ ### Key Features
24
+
25
+ - **NLP and Transformers**: Utilizes advanced NLP models and transformer architectures, including BERT and SpaCy, to understand and process user queries with high accuracy.
26
+ - **Custom Components**: Includes custom pipeline components, such as a spell-checker, to enhance user input handling and improve the overall chatbot performance.
27
+ - **Flexible and Extensible**: Designed to be easily extendable, allowing the integration of additional services and customization to fit specific hotel requirements.
28
+
29
+ ## Installation
30
+
31
+ 1. **Clone the repository:**
32
+
33
+ ```sh
34
+ git clone https://github.com/your-username/hotel-assistant-bot.git
35
+ cd hotel-assistant-bot
36
+ ```
37
+
38
+ 2. **Create and activate a virtual environment:**
39
+
40
+ ```sh
41
+ python3 -m venv venv
42
+ source venv/bin/activate
43
+ ```
44
+
45
+ 3. **Install dependencies:**
46
+
47
+ ```sh
48
+ pip install -r requirements.txt
49
+ ```
50
+
51
+ ## Usage
52
+
53
+ ### Training the Model
54
+
55
+ To train the Rasa model with your current data, run:
56
+
57
+ ```sh
58
+ make train
59
+ ```
60
+
61
+ This command will train the Rasa model using the domain, data, and configuration files, and save the trained model in the `models` directory.
62
+
63
+ ### Running the Action Server
64
+
65
+ To start the action server, which handles custom actions, run:
66
+
67
+ ```sh
68
+ make run-actions
69
+ ```
70
+
71
+ ### Interacting with the Bot
72
+
73
+ You can interact with the bot using Rasa Shell:
74
+
75
+ ```sh
76
+ make shell
77
+ ```
78
+
79
+ This will start the action server and open the Rasa shell, allowing you to chat with the bot in the terminal.
80
+
81
+ Alternatively, you can run the bot and interact with it via HTTP API:
82
+
83
+ ```sh
84
+ make run
85
+ ```
86
+
87
+ ## Configuration
88
+
89
+ - **Domain File:** `configs/domain.yml` contains the intents, entities, slots, responses, and forms used by the bot.
90
+ - **Training Data:** `data` directory contains the NLU and Core training data.
91
+ - **Config File:** `configs/config.yml` specifies the pipeline and policies for training the model.
92
+ - **Endpoints File:** `configs/endpoints.yml` defines the endpoints for the action server and other external services.
93
+
94
+ ## File Structure
95
+
96
+ ```plaintext
97
+ hotel-assistant-rasa-bot/
98
+ ├── app/
99
+ │ ├── data/ # Training data for Rasa
100
+ │ │ ├── nlu/ # NLU training data
101
+ │ │ ├── stories/ # Core training data (conversation stories)
102
+ │ │ └── rules/ # Rule-based data for conversation handling
103
+ │ ├── configs/ # Configuration files for Rasa and other services
104
+ │ │ ├── config_supervised.yml # Configuration for supervised learning
105
+ │ │ ├── config_custom.yml # Configuration using custom pipelines
106
+ │ │ ├── config_bert.yml # Configuration using BERT embeddings
107
+ │ │ └── config_spacy.yml # Configuration using SpaCy
108
+ │ ├── actions/ # Custom action server files
109
+ │ │ └── actions.py # Custom action implementation
110
+ │ ├── tests/ # Directory for testing scripts or unit tests
111
+ │ │ └── ... # Unit tests and testing scripts
112
+ │ ├── resources/ # Additional resources used in the project
113
+ │ │ └── ... # Any additional resource files
114
+ │ ├── domain.yml # Domain file defining intents, entities, and actions
115
+ │ ├── endpoints.yml # Endpoints configuration for Rasa and external services
116
+ │ ├── components/ # Custom pipeline components for Rasa
117
+ │ │ └── spell_checker.py # Custom spell-checker component
118
+ │ ├── requirements.txt # Python dependencies
119
+ │ └─�� deb-requirements.txt # Debian-based system dependencies
120
+ ├── docker/
121
+ │ ├── docker-compose.yml # Docker Compose configuration for deployment
122
+ │ ├── Dockerfile.rasa # Dockerfile for building the Rasa server image
123
+ │ └── Dockerfile.action # Dockerfile for building the action server image
124
+ ├── scripts/ # Shell and batch scripts for automation
125
+ │ ├── init.sh # Initialization script for setting up directories
126
+ │ ├── init.bat # Batch file for setting up directories (Windows)
127
+ │ ├── start.sh # Script to build and start Docker containers
128
+ │ ├── start.bat # Batch file to build and start Docker containers (Windows)
129
+ │ ├── startSql.sh # Script to start SQL database access
130
+ │ ├── startSql.bat # Batch file to start SQL database access (Windows)
131
+ │ ├── stop.sh # Script to stop Docker containers
132
+ │ └── stop.bat # Batch file to stop Docker containers (Windows)
133
+ ├── server.sh # Server start script
134
+ ├── app.json # App configuration file
135
+ ├── heroku.yml # Heroku deployment configuration
136
+ ├── Makefile # Makefile for automating tasks and commands
137
+ ├── LICENSE # License information for the project
138
+ └── README.md # Detailed documentation and instructions
139
+
140
+ ```
141
+
142
+ ## Makefile Commands
143
+
144
+ Here are some useful commands to manage and run your Hotel Assistant Chatbot:
145
+
146
+ - **`make init`**: Initialize permissions and folder structure.
147
+ - **`make docker-start`**: Start Docker containers.
148
+ - **`make docker-stop`**: Stop Docker containers.
149
+ - **`make docker-up`**: Bring up Docker containers.
150
+ - **`make docker-down`**: Bring down Docker containers.
151
+ - **`make docker-rm`**: Remove Docker containers.
152
+ - **`make docker-clean`**: Clean Docker resources.
153
+ - **`make sql`**: Start SQL database access.
154
+ - **`make train`**: Train the full Rasa model.
155
+ - **`make train-nlu`**: Train only the NLU model.
156
+ - **`make run-actions`**: Start the action server for handling custom actions.
157
+ - **`make shell`**: Start the action server and open Rasa shell for interaction.
158
+ - **`make run`**: Start the action server and Rasa server with API enabled.
159
+ - **`make validate`**: Validate the Rasa configuration and training data.
160
+ - **`make help`**: Display help information with available targets.
161
+
162
+ ## Contributing
163
+
164
+ Contributions are welcome! Please create a new issue or submit a pull request if you have any improvements or bug fixes.
165
+
166
+ ## License
167
+
168
+ This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
app/actions/__init__.py ADDED
File without changes
app/actions/__pycache__/__init__.cpython-310.pyc ADDED
Binary file (117 Bytes). View file
 
app/actions/__pycache__/__init__.cpython-37.pyc ADDED
Binary file (111 Bytes). View file
 
app/actions/__pycache__/actions.cpython-310.pyc ADDED
Binary file (8.62 kB). View file
 
app/actions/__pycache__/actions.cpython-37.pyc ADDED
Binary file (8.34 kB). View file
 
app/actions/actions.py ADDED
@@ -0,0 +1,256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Any, Text, Dict, List
2
+
3
+ from rasa_sdk import Action, Tracker, FormValidationAction
4
+ from rasa_sdk.events import SlotSet, UserUtteranceReverted
5
+ from rasa_sdk.executor import CollectingDispatcher
6
+ from rasa_sdk.types import DomainDict
7
+
8
+
9
+ def repeat(tracker: Tracker, dispatcher: CollectingDispatcher):
10
+ user_ignore_count = 2
11
+ count = 0
12
+ tracker_list = []
13
+
14
+ while user_ignore_count > 0:
15
+ event = tracker.events[count].get("event")
16
+ if event == "user":
17
+ user_ignore_count = user_ignore_count - 1
18
+ if event == "bot":
19
+ tracker_list.append(tracker.events[count])
20
+ count = count - 1
21
+
22
+ tracker_list.reverse()
23
+ i = len(tracker_list) - 1
24
+
25
+ while i >= 0:
26
+ data = tracker_list[i].get("data")
27
+ if data:
28
+ if "buttons" in data:
29
+ dispatcher.utter_message(
30
+ text=tracker_list[i].get("text"), buttons=data["buttons"])
31
+ else:
32
+ dispatcher.utter_message(text=tracker_list[i].get("text"))
33
+ break
34
+ i -= 1
35
+
36
+
37
+ class ValidateBookRoomInfo(FormValidationAction):
38
+ def name(self) -> Text:
39
+ return "validate_form_book_room"
40
+
41
+ async def required_slots(
42
+ self,
43
+ domain_slots: List[Text],
44
+ dispatcher: CollectingDispatcher,
45
+ tracker: Tracker,
46
+ domain: DomainDict,
47
+ ) -> List[Text]:
48
+ return ["number", "room_type"]
49
+
50
+ async def extract_number(
51
+ self,
52
+ dispatcher: CollectingDispatcher,
53
+ tracker: Tracker,
54
+ domain: DomainDict,
55
+ ) -> Dict[Text, Any]:
56
+ return {"number": tracker.get_slot("number")}
57
+
58
+ async def extract_room_type(
59
+ self,
60
+ dispatcher: CollectingDispatcher,
61
+ tracker: Tracker,
62
+ domain: DomainDict,
63
+ ) -> Dict[Text, Any]:
64
+ return {"room_type": tracker.get_slot("room_type")}
65
+
66
+ async def validate_number(
67
+ self,
68
+ value: Any,
69
+ dispatcher: CollectingDispatcher,
70
+ tracker: Tracker,
71
+ domain: DomainDict,
72
+ ) -> Dict[Text, Any]:
73
+ return {"number": value}
74
+
75
+ async def validate_room_type(
76
+ self,
77
+ value: Any,
78
+ dispatcher: CollectingDispatcher,
79
+ tracker: Tracker,
80
+ domain: DomainDict,
81
+ ) -> Dict[Text, Any]:
82
+ return {"room_type": value}
83
+
84
+ async def submit(
85
+ self,
86
+ dispatcher: CollectingDispatcher,
87
+ tracker: Tracker,
88
+ domain: DomainDict,
89
+ ) -> List[Dict]:
90
+ dispatcher.utter_message(
91
+ template="utter_submit",
92
+ number=tracker.get_slot("number"),
93
+ room_type=tracker.get_slot("room_type")
94
+ )
95
+ return []
96
+
97
+
98
+ class ValidateBookRoomNumberInfo(FormValidationAction):
99
+ def name(self) -> Text:
100
+ return "validate_form_book_room_number"
101
+
102
+ async def required_slots(
103
+ self,
104
+ domain_slots: List[Text],
105
+ dispatcher: CollectingDispatcher,
106
+ tracker: Tracker,
107
+ domain: DomainDict,
108
+ ) -> List[Text]:
109
+ return ["room_type"]
110
+
111
+ async def extract_room_type(
112
+ self,
113
+ dispatcher: CollectingDispatcher,
114
+ tracker: Tracker,
115
+ domain: DomainDict,
116
+ ) -> Dict[Text, Any]:
117
+ return {"room_type": tracker.get_slot("room_type")}
118
+
119
+ async def validate_room_type(
120
+ self,
121
+ value: Any,
122
+ dispatcher: CollectingDispatcher,
123
+ tracker: Tracker,
124
+ domain: DomainDict,
125
+ ) -> Dict[Text, Any]:
126
+ return {"room_type": value}
127
+
128
+ async def submit(
129
+ self,
130
+ dispatcher: CollectingDispatcher,
131
+ tracker: Tracker,
132
+ domain: DomainDict,
133
+ ) -> List[Dict]:
134
+ dispatcher.utter_message(
135
+ template="utter_submit",
136
+ room_type=tracker.get_slot("room_type")
137
+ )
138
+ return []
139
+
140
+
141
+ class ResetSlots(Action):
142
+ def name(self):
143
+ return "action_reset_slots"
144
+
145
+ async def run(self, dispatcher, tracker, domain):
146
+ return [SlotSet("number", None), SlotSet("room_type", None)]
147
+
148
+
149
+ class MyFallbackAction(Action):
150
+ def name(self):
151
+ return "action_my_fallback"
152
+
153
+ async def run(self, dispatcher, tracker, domain):
154
+ dispatcher.utter_message(template="utter_fallback_message")
155
+ return [UserUtteranceReverted()]
156
+
157
+
158
+ class ActionCheckInTime(Action):
159
+ def name(self):
160
+ return "action_check_in_time"
161
+
162
+ async def run(self, dispatcher, tracker, domain):
163
+ dispatcher.utter_message(template="utter_check_in_time")
164
+ repeat(tracker, dispatcher)
165
+ return [UserUtteranceReverted()]
166
+
167
+
168
+ class ActionCheckOutTime(Action):
169
+ def name(self):
170
+ return "action_check_out_time"
171
+
172
+ async def run(self, dispatcher, tracker, domain):
173
+ dispatcher.utter_message(template="utter_check_out_time")
174
+ repeat(tracker, dispatcher)
175
+ return [UserUtteranceReverted()]
176
+
177
+
178
+ class ActionCancelReservation(Action):
179
+ def name(self):
180
+ return "action_cancel_reservation"
181
+
182
+ async def run(self, dispatcher, tracker, domain):
183
+ dispatcher.utter_message(template="utter_cancel_reservation")
184
+ repeat(tracker, dispatcher)
185
+ return [UserUtteranceReverted()]
186
+
187
+
188
+ class ActionCancellationPolicy(Action):
189
+ def name(self):
190
+ return "action_cancellation_policy"
191
+
192
+ async def run(self, dispatcher, tracker, domain):
193
+ dispatcher.utter_message(template="utter_cancellation_policy")
194
+ repeat(tracker, dispatcher)
195
+ return [UserUtteranceReverted()]
196
+
197
+
198
+ class ActionHaveRestaurant(Action):
199
+ def name(self):
200
+ return "action_have_restaurant"
201
+
202
+ async def run(self, dispatcher, tracker, domain):
203
+ dispatcher.utter_message(template="utter_have_restaurant")
204
+ repeat(tracker, dispatcher)
205
+ return [UserUtteranceReverted()]
206
+
207
+
208
+ class ActionBreakfastAvail(Action):
209
+ def name(self):
210
+ return "action_breakfast_avail"
211
+
212
+ async def run(self, dispatcher, tracker, domain):
213
+ dispatcher.utter_message(template="utter_breakfast_avail")
214
+ repeat(tracker, dispatcher)
215
+ return [UserUtteranceReverted()]
216
+
217
+
218
+ class ActionBreakfastTime(Action):
219
+ def name(self):
220
+ return "action_breakfast_time"
221
+
222
+ async def run(self, dispatcher, tracker, domain):
223
+ dispatcher.utter_message(template="utter_breakfast_time")
224
+ repeat(tracker, dispatcher)
225
+ return [UserUtteranceReverted()]
226
+
227
+
228
+ class ActionRestaurantTime(Action):
229
+ def name(self):
230
+ return "action_restaurant_time"
231
+
232
+ async def run(self, dispatcher, tracker, domain):
233
+ dispatcher.utter_message(template="utter_restaurant_time")
234
+ repeat(tracker, dispatcher)
235
+ return [UserUtteranceReverted()]
236
+
237
+
238
+ class ActionShowRoomImage(Action):
239
+
240
+ def name(self) -> Text:
241
+ return "action_show_room_image"
242
+
243
+ def run(self, dispatcher: CollectingDispatcher,
244
+ tracker: Tracker,
245
+ domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
246
+
247
+ room_type = tracker.get_slot('room_type')
248
+
249
+ if room_type == "simple":
250
+ dispatcher.utter_message(text="Here is an image of our simple room.", image="url_to_simple_room_image.jpg")
251
+ elif room_type == "deluxe":
252
+ dispatcher.utter_message(text="Here is an image of our deluxe room.", image="url_to_deluxe_room_image.jpg")
253
+ else:
254
+ dispatcher.utter_message(text="Sorry, I don't have an image for that room type.")
255
+
256
+ return []
app/components/spell.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from rasa.nlu.components import Component
2
+ from rasa.nlu.training_data import Message
3
+ import typing
4
+ from typing import Any, Optional, Text, Dict
5
+
6
+ if typing.TYPE_CHECKING:
7
+ from rasa.nlu.model import Metadata
8
+
9
+ from spellchecker import SpellChecker
10
+
11
+
12
+ class SpellCheckerDE(Component):
13
+ """
14
+ Spell checker for German language.
15
+ """
16
+
17
+ defaults = {}
18
+ language_list = ["de"]
19
+
20
+ def __init__(self, component_config=None):
21
+ super(SpellCheckerDE, self).__init__(component_config)
22
+
23
+ def process(self, message, **kwargs):
24
+ mt = message.text
25
+ txt = mt.translate(
26
+ mt.maketrans("", "", '!\"#$%&\'()*+,.:;<=>?@[\]^_`{|}~'))
27
+ words = txt.split(" ")
28
+ words = [word for word in words if word]
29
+ spell = SpellChecker(language=None)
30
+ spell.word_frequency.load_dictionary("resources/de.json.gz")
31
+ spell.word_frequency.load_text_file("resources/hotel_lex.txt")
32
+
33
+ for word in words:
34
+ if word not in spell:
35
+ mt = mt.replace(word, spell.correction(word))
36
+
37
+ message.text = mt
38
+
39
+ @classmethod
40
+ def load(
41
+ cls,
42
+ meta: Dict[Text, Any],
43
+ model_dir: Optional[Text] = None,
44
+ model_metadata: Optional["Metadata"] = None,
45
+ cached_component: Optional["Component"] = None,
46
+ **kwargs: Any
47
+ ) -> "Component":
48
+ if cached_component:
49
+ return cached_component
50
+ else:
51
+ return cls(meta)
app/configs/config_bert.yml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Configuration for Rasa NLU.
2
+ # https://rasa.com/docs/rasa/nlu/components/
3
+ language: "en" # your two-letter language code
4
+
5
+ pipeline:
6
+ - name: HFTransformersNLP
7
+ # Name of the language model to use
8
+ model_name: "bert"
9
+ model_weights: "bert-base-german-cased"
10
+ - name: LanguageModelTokenizer
11
+ # Flag to check whether to split intents
12
+ "intent_tokenization_flag": False
13
+ "intent_split_symbol": "_"
14
+ - name: LanguageModelFeaturizer
15
+ - name: RegexFeaturizer
16
+ - name: LexicalSyntacticFeaturizer
17
+ - name: CountVectorsFeaturizer
18
+ - name: CountVectorsFeaturizer
19
+ analyzer: "char_wb"
20
+ min_ngram: 1
21
+ max_ngram: 4
22
+ - name: DIETClassifier
23
+ epochs: 300
24
+ - name: EntitySynonymMapper
25
+ - name: ResponseSelector
26
+ epochs: 300
27
+
28
+ # Configuration for Rasa Core.
29
+ # https://rasa.com/docs/rasa/core/policies/
30
+ policies:
31
+ - name: MemoizationPolicy
32
+ - name: TEDPolicy
33
+ max_history: 5
34
+ epochs: 100
35
+ - name: RulePolicy
app/configs/config_custom.yml ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # The config recipe.
2
+ # https://rasa.com/docs/rasa/model-configuration/
3
+ recipe: default.v1
4
+
5
+ # The assistant project unique identifier
6
+ # This default value must be replaced with a unique assistant name within your deployment
7
+ assistant_id: 20240616-000849-devout-curry
8
+
9
+ # Configuration for Rasa NLU.
10
+ # https://rasa.com/docs/rasa/nlu/components/
11
+ language: "en"
12
+
13
+ pipeline:
14
+ # - name: spell_checker.CorrectSpelling
15
+ - name: WhitespaceTokenizer
16
+ token_pattern: (?u)\b\w+\b
17
+ - name: RegexFeaturizer
18
+ - name: LexicalSyntacticFeaturizer
19
+ - name: CountVectorsFeaturizer
20
+ OOV_token: oov
21
+ - name: CountVectorsFeaturizer
22
+ analyzer: char_wb
23
+ min_ngram: 1
24
+ max_ngram: 4
25
+ - name: CountVectorsFeaturizer
26
+ analyzer: char
27
+ min_ngram: 3
28
+ max_ngram: 5
29
+ - name: DIETClassifier
30
+ epochs: 200
31
+ ranking_length: 5
32
+ - name: DucklingEntityExtractor
33
+ url: http://localhost:8000
34
+ dimensions:
35
+ - email
36
+ - number
37
+ - amount-of-money
38
+ - name: EntitySynonymMapper
39
+ - name: ResponseSelector
40
+ retrieval_intent: out_of_scope
41
+ scale_loss: false
42
+ epochs: 100
43
+ - name: ResponseSelector
44
+ retrieval_intent: faq
45
+ scale_loss: false
46
+ epochs: 100
47
+ - name: ResponseSelector
48
+ retrieval_intent: chitchat
49
+ scale_loss: false
50
+ epochs: 100
51
+ - name: FallbackClassifier
52
+ threshold: 0.7
53
+
54
+ policies:
55
+ - name: RulePolicy
56
+ core_fallback_threshold: 0.3
57
+ core_fallback_action_name: "action_default_fallback"
58
+ enable_fallback_prediction: True
59
+ - max_history: 6
60
+ name: AugmentedMemoizationPolicy
61
+ - name: TEDPolicy
62
+ max_history: 10
63
+ epochs: 20
64
+ batch_size:
65
+ - 32
66
+ - 64
app/configs/config_spacy.yml ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ language: en
2
+ pipeline:
3
+ - name: spell.SpellCheckerDE
4
+ - name: SpacyNLP
5
+ - name: SpacyTokenizer
6
+ - name: SpacyFeaturizer
7
+ - name: RegexFeaturizer
8
+ - name: LexicalSyntacticFeaturizer
9
+ - name: CountVectorsFeaturizer
10
+ - name: CountVectorsFeaturizer
11
+ analyzer: char_wb
12
+ min_ngram: 1
13
+ max_ngram: 4
14
+ - name: DIETClassifier
15
+ epochs: 300
16
+ - name: EntitySynonymMapper
17
+
18
+ policies:
19
+ - name: FormPolicy
20
+ priority: 5
21
+ - name: FallbackPolicy
22
+ priority: 4
23
+ nlu_threshold: 0.3
24
+ core_threshold: 0.3
25
+ ambiguity_threshold: 0.1
26
+ fallback_action_name: utter_fallback
27
+ - name: MemoizationPolicy
28
+ priority: 3
29
+ - name: RulePolicy
30
+ core_fallback_threshold: 0.3
31
+ core_fallback_action_name: "action_default_fallback"
32
+ enable_fallback_prediction: True
33
+ - name: TEDPolicy
34
+ priority: 1
35
+ max_history: 8
36
+ epochs: 200
37
+ random_seed: 42
38
+ assistant_id: 20240706-172914-animato-ocean
app/configs/config_supervised.yml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Configuration for Rasa NLU.
2
+ # https://rasa.com/docs/rasa/nlu/components/
3
+ language: "en" # your two-letter language code
4
+
5
+ pipeline:
6
+ - name: WhitespaceTokenizer
7
+ - name: RegexFeaturizer
8
+ - name: LexicalSyntacticFeaturizer
9
+ - name: CountVectorsFeaturizer
10
+ - name: CountVectorsFeaturizer
11
+ analyzer: "char_wb"
12
+ min_ngram: 1
13
+ max_ngram: 4
14
+ - name: DIETClassifier
15
+ epochs: 300
16
+ - name: EntitySynonymMapper
17
+ - name: ResponseSelector
18
+ epochs: 300
19
+
20
+ # Configuration for Rasa Core.
21
+ # https://rasa.com/docs/rasa/core/policies/
22
+ policies:
23
+ - name: MemoizationPolicy
24
+ - name: TEDPolicy
25
+ max_history: 5
26
+ epochs: 100
27
+ - name: RulePolicy
28
+ assistant_id: 20240707-075816-forgiving-parkway
app/credentials.yml ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file contains the credentials for the voice & chat platforms
2
+ # which your bot is using.
3
+ # https://rasa.com/docs/rasa/user-guide/messaging-and-voice-channels/
4
+
5
+ rest:
6
+ # # you don't need to provide anything here - this channel doesn't
7
+ # # require any credentials
8
+
9
+
10
+ #facebook:
11
+ # verify: "<verify>"
12
+ # secret: "<your secret>"
13
+ # page-access-token: "<your page access token>"
14
+
15
+ #slack:
16
+ # slack_token: "<your slack token>"
17
+ # slack_channel: "<the slack channel>"
18
+
19
+ #socketio:
20
+ # user_message_evt: <event name for user message>
21
+ # bot_message_evt: <event name for but messages>
22
+ # session_persistence: <true/false>
23
+
24
+ #mattermost:
25
+ # url: "https://<mattermost instance>/api/v4"
26
+ # token: "<bot token>"
27
+ # webhook_url: "<callback URL>"
28
+
29
+ # This entry is needed if you are using Rasa X. The entry represents credentials
30
+ # for the Rasa X "channel", i.e. Talk to your bot and Share with guest testers.
31
+ # rasa:
32
+ # url: "http://localhost:5002/api"
app/data/nlu/nlu _hotel.yml ADDED
@@ -0,0 +1,208 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+ nlu:
3
+ - intent: open_days
4
+ examples: |
5
+ - when is the restaurant open?
6
+ - On what days the restaurant is open?
7
+ - days the restaurant open
8
+
9
+ - intent: open_hours
10
+ examples: |
11
+ - At what time
12
+ - opened hours
13
+ - till what time are you open
14
+ - working hours
15
+ - At what time are you opened
16
+ - what are the working hours
17
+
18
+ - intent: book_room
19
+ examples: |
20
+ - i want a book [1](number) [room](location) for my stay
21
+ - I want to book a [room](location)
22
+ - i want to book a [room](location)
23
+ - i would like to book a [room](location)
24
+ - need a [room](location)
25
+ - can you book a [room](location)?
26
+ - book [room](location)
27
+ - book the [room](location)
28
+ - book a [standard](room_type) [room](location)
29
+ - Book a [Room](location)
30
+ - Book [room](location) for my stay
31
+ - book [rooms](location)
32
+ - book the [rooms](location)
33
+ - book [room](location)
34
+ - book the [room](location)
35
+ - book a [room](location)
36
+ - Book a [Room](location)
37
+ - Book [room](location)
38
+ - book [2](number) [deluxe](room_type) [rooms](location)
39
+ - book the [rooms](location)
40
+
41
+ - intent: book_number_room
42
+ examples: |
43
+ - i want to book (2)[number] [rooms](location) for my stay
44
+ - i would like to book [1](number) [room](location)
45
+ - I want to book [2](number) [rooms](location)
46
+ - book [2](number) [rooms](location) for me
47
+ - need [1](number) [room](location)
48
+ - book [1](number) [room](location)
49
+ - book [2](number) [rooms](location)
50
+ - need [2](number) [rooms](location) to book
51
+
52
+ - intent: num_rooms
53
+ examples: |
54
+ - [2](number)
55
+ - [1](number)
56
+
57
+ - intent: type_rooms
58
+ examples: |
59
+ - [standard](room_type)
60
+ - [deluxe](room_type)
61
+
62
+ - intent: clean_room
63
+ examples: |
64
+ - can you ask for someone to clean the clean the [room](location)?
65
+ - request for [room](location) clean
66
+ - [room](location) cleaning
67
+ - i want to have my [room](location) cleaned
68
+ - could you send someone to clean the [room](location)
69
+ - send someone to clean the [room](location)
70
+ - need someone to clean the [room](location)
71
+ - i would like to request for [room](location) cleaning
72
+ - request [room](location) cleaning service
73
+ - can you send someone to clean the [room](location)?
74
+ - my [room](location) needs to be cleaned
75
+ - please send someone to clean my [room](location)
76
+ - i would like to have my [room](location) cleaned
77
+
78
+ - intent: clean_room_now
79
+ examples: |
80
+ - urgently
81
+ - now
82
+ - could you send someone right now?
83
+ - send someone right now
84
+ - required now
85
+ - needed now
86
+ - send him now
87
+ - it is urgent
88
+ - please send someone right now
89
+ - the requirement is urgent
90
+ - can you send someone as soon as possible
91
+ - as soon as possible
92
+
93
+ - intent: clean_room_relative
94
+ examples: |
95
+ - could you send someone after [2](number) hours?
96
+ - send someone after [3](number) hours
97
+ - schedule it after [5](number) hours
98
+ - send him around [2](number) hours later
99
+ - please send in [2](number) hours
100
+
101
+ - intent: faq_check_in_time
102
+ examples: |
103
+ - what is the check-in time?
104
+ - what is the check in time?
105
+ - when is check-in?
106
+ - what are your check-in timings?
107
+ - check in timings?
108
+ - check in time
109
+ - what is the check-in time?
110
+ - what is the check in time?
111
+ - can you tell me your check-in timings?
112
+ - can you tell me your check in timings?
113
+ - i would like to know your check-in timings
114
+ - tell your check-in timings
115
+ - when can I check in?
116
+ - check-in?
117
+ - could you tell me when to check-in?
118
+ - i want to check in. can you tell me check in timing?
119
+
120
+ - intent: faq_check_out_time
121
+ examples: |
122
+ - what is the check-out time?
123
+ - when is check-out?
124
+ - what are your check-out timings?
125
+ - check out timings?
126
+ - check out time
127
+ - what is the check-out time?
128
+ - what is the check out time?
129
+ - can you tell me your check-out timings?
130
+ - can you tell me your check out timings?
131
+ - i would like to know your check-out timings
132
+ - tell your check-out timings
133
+ - when can I check out?
134
+ - check-out?
135
+ - could you tell me when to check-out?
136
+ - i want to check out. can you tell me check out timings?
137
+
138
+ - intent: faq_cancel_reservation
139
+ examples: |
140
+ - i want to cancel the reservation that i made
141
+ - cancel my reservation that i made earlier
142
+ - i would like to cancel my reservation
143
+ - cancel my reservation
144
+ - can you cancel my reservation?
145
+ - how do i cancel my reservation?
146
+ - can i cancel my reservation?
147
+ - please cancel my reservation
148
+ - i request you to cancel the reservation that i made
149
+ - it would be great if you could cancel my reservation
150
+
151
+ - intent: faq_cancellation_policy
152
+ examples: |
153
+ - what is your cancellation policy?
154
+ - can you state your cancellation policy
155
+ - i would like to know your cancellation policy
156
+ - show me your cancellation policy
157
+ - do you have any cancellation policy?
158
+ - i want to see your cancellation policy
159
+ - where is your cancellation policy?
160
+
161
+ - intent: faq_have_restaurant
162
+ examples: |
163
+ - does the hotel have a [restaurant](location)?
164
+ - do you have a [restaurant](location)?
165
+ - is there a [restaurant](location)?
166
+ - is there a [restaurant](location) in the hotel?
167
+ - tell me about the [restaurant](location)
168
+ - can you tell me about any [restaurant](location) in the hotel?
169
+ - are there [restaurants](location) in the hotel?
170
+ - number of [restaurants](location)?
171
+ - can i find [restaurants](location) here?
172
+ - i heard there is a [restaurant](location) also
173
+ - inform me about the [restaurant](location)
174
+ - where is [restaurant](location)?
175
+
176
+ - intent: ask_room_image
177
+ examples: |
178
+ - Can you show me a picture of a [simple](room_type) room?
179
+ - I want to see an image of the [deluxe](room_type) room.
180
+ - Show me a picture of a [simple](room_type) room.
181
+ - Can I see a [deluxe](room_type) room image?
182
+
183
+ - intent: faq_breakfast_avail
184
+ examples: |
185
+ - does the hotel offer breakfast?
186
+ - is there breakfast offered by the hotel?
187
+ - is breakfast facility available?
188
+ - is breakfast there?
189
+ - can i get breakfast here?
190
+ - do you provide breakfast?
191
+ - breakfast?
192
+ - do you serve breakfast?
193
+ - is breakfast available?
194
+
195
+ - intent: faq_breakfast_time
196
+ examples: |
197
+ - what is the time for breakfast?
198
+ - time for doing breakfast?
199
+ - what are the breakfast timings?
200
+ - can you tell me about timings of breakfast?
201
+ - tell me about breakfast timings
202
+ - want to know about breakfast timings
203
+ - breakfast timings what are they?
204
+ - what is the time for breakfast?
205
+ - when is breakfast served?
206
+ - which time is the breakfast served?
207
+ - you serve breakfast at what time?
208
+ - what is the timing for breakfast?
app/data/nlu/nlu _mood.yml ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+ nlu:
3
+ - intent: mood_great
4
+ examples: |
5
+ - perfect
6
+ - very good
7
+ - great
8
+ - amazing
9
+ - wonderful
10
+ - I am feeling very good
11
+ - I am great
12
+ - I'm good
13
+ - feeling like a king
14
+ - I am amazing
15
+ - I am going to save the world
16
+ - super stoked
17
+ - extremely good
18
+ - so so perfect
19
+ - so good
20
+ - so perfect
21
+ - fantastic
22
+ - excellent
23
+ - over the moon
24
+ - on cloud nine
25
+ - couldn't be better
26
+ - I'm on top of the world
27
+ - feeling wonderful
28
+ - feeling awesome
29
+ - in a good mood
30
+ - super happy
31
+ - full of joy
32
+ - I feel amazing
33
+ - everything is great
34
+ - loving life
35
+ - feeling ecstatic
36
+ - very pleased
37
+ - totally stoked
38
+ - just fabulous
39
+ - I feel awesome
40
+ - feeling unstoppable
41
+
42
+ - intent: mood_unhappy
43
+ examples: |
44
+ - sad
45
+ - very sad
46
+ - unhappy
47
+ - bad
48
+ - very bad
49
+ - awful
50
+ - terrible
51
+ - not very good
52
+ - extremely sad
53
+ - so sad
54
+ - my day was horrible
55
+ - I am sad
56
+ - I don't feel very well
57
+ - I am disappointed
58
+ - super sad
59
+ - I'm so sad
60
+ - very sad
61
+ - not good
62
+ - so saad
63
+ - a little down
64
+ - grumpy
65
+ - feeling down
66
+ - feeling blue
67
+ - miserable
68
+ - depressed
69
+ - gloomy
70
+ - heartbroken
71
+ - down in the dumps
72
+ - not feeling great
73
+ - not in a good mood
74
+ - feeling terrible
75
+ - feeling awful
76
+ - not okay
77
+ - in a bad mood
78
+ - feeling upset
79
+ - feeling low
80
+ - I feel miserable
81
+ - everything is terrible
82
+ - feeling bummed out
83
+ - not happy
84
+ - pretty sad
85
+ - feeling hopeless
86
+ - just awful
87
+ - feeling rotten
88
+ - I feel awful
app/data/nlu/nlu _out_of_scope.yml ADDED
@@ -0,0 +1,527 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+ nlu:
3
+ - intent: out_of_scope_non_english
4
+ examples: |
5
+ - Wie fange ich mit Rasa an?
6
+ - hilf mir beim start
7
+ - tschüssikowski
8
+ - ¿Qué pasa?
9
+ - ça va ?
10
+ - como te llamas
11
+ - wer bist Du?
12
+ - como inicio en rasa
13
+ - come stai?
14
+ - como estas
15
+ - de donde eres
16
+ - de que lugar eres?
17
+ - epdi iruka
18
+ - eres humana
19
+ - kalhmera sara ti kaneis
20
+ - kannst du auch deutsch?
21
+ - kannst du dies auch auf deutsch?
22
+ - oui je besoine de l'aide
23
+ - que puedes hacer?
24
+ - tu parles francais?
25
+ - tudo bom
26
+ - tu pagal
27
+ - kannst du mir helfen
28
+ - tu kaisi he
29
+ - こにちは
30
+ - 日本語分かる?
31
+ - chào
32
+ - 你好
33
+ - I'm speaking a non-english language.
34
+ - 呵呵
35
+ - 我该如何使用
36
+ - 你懂中文吗?
37
+ - 您好
38
+ - 你叫什么名字
39
+ - 你是谁
40
+ - 中文
41
+ - kya hindi me bat kar sakate ho
42
+ - Dumme sara
43
+ - αστεία λές
44
+ - rasa codigo abierto
45
+ - 卧槽
46
+ - ¿Cómo estás?
47
+ - ¿Qué haces?
48
+ - ¿Dónde vives?
49
+ - おはよう
50
+ - こんばんは
51
+ - どうもありがとう
52
+ - 私は元気です
53
+ - Salut
54
+ - Ça va bien, merci
55
+ - Comment tu t'appelles ?
56
+ - Guten Tag
57
+ - Wie geht's?
58
+ - Hilfe
59
+ - Ciao
60
+ - Buongiorno
61
+ - Grazie
62
+ - Come va?
63
+ - Dove abiti?
64
+ - Tudo bem?
65
+ - Como vai?
66
+ - Você fala inglês?
67
+ - Você fala português?
68
+ - 안녕하세요
69
+ - 잘 지내세요?
70
+ - 어떻게 지내세요?
71
+ - 어떻게 도와드릴까요?
72
+ - 여보세요
73
+ - bạn khỏe không
74
+ - Bạn tên là gì?
75
+ - Xin chào
76
+ - Как дела?
77
+ - Привет
78
+ - Здравствуйте
79
+ - Как тебя зовут?
80
+ - Ты говоришь по-русски?
81
+ - Нормально
82
+ - Хорошо
83
+ - Danke
84
+ - Merci
85
+ - Gracias
86
+ - ありがとう
87
+ - 고마워
88
+ - 谢谢
89
+ - Спасибо
90
+ - شكرا
91
+ - تشكرات
92
+ - متشکرم
93
+ - الشكر
94
+ - شکریہ
95
+ - धन्यवाद
96
+ - ধন্যবাদ
97
+ - நன்றி
98
+ - ಧನ್ಯವಾದ
99
+ - ధన్యవాదాలు
100
+ - நன்றி
101
+
102
+ - intent: out_of_scope_other
103
+ examples: |
104
+ - I am asking you an out of scope question
105
+ - 4 + 2 = ?
106
+ - After registration I see that I have an available balance of 0.00000000. What does this balance represent?
107
+ - Are you ready?
108
+ - But you're an english site :(
109
+ - Can I ask you questions first?
110
+ - Can I die
111
+ - Can YouTube talk?
112
+ - Can you call me back ?
113
+ - Can you give me your datacenter's password
114
+ - Can you give me your datacenter's password?
115
+ - Can you make sandwiches?
116
+ - Can you please send me an uber
117
+ - Do I have to accept?
118
+ - Do you know
119
+ - Have we met before?
120
+ - HomeBase is advertised as a community. Is there a way to interact with other members of the community?
121
+ - How long does it take to set up a Rasa bot?
122
+ - I already told you! I'm a shitmuncher
123
+ - I am User
124
+ - I am an opioid addic
125
+ - I am an opioid addict
126
+ - I am hungry
127
+ - I am trying to build one, and did some research before, but I have not do hand-on work yet
128
+ - I can barely see this white text on light gray background ...
129
+ - I changed my mind
130
+ - I have installed it
131
+ - I ned a GP in 94301
132
+ - I need a GP in 94301
133
+ - I need a girl friend!
134
+ - I wan to buy a plane
135
+ - I wanna marry you
136
+ - I want a new laptop
137
+ - I want french cuisine
138
+ - I want to die
139
+ - I want to use pipe
140
+ - I will check
141
+ - I'm a shitmuncher
142
+ - Is Rasa really smart?
143
+ - Is this Goal-Oriented Chatbot?
144
+ - Is today saturday?
145
+ - Mail me the guide
146
+ - NLW
147
+ - Nice name
148
+ - Now?
149
+ - Recharge
150
+ - The Try it out is not working
151
+ - Today
152
+ - Try it out broken
153
+ - What day is it today?
154
+ - What did you eat yesterday?
155
+ - What do you prefer?
156
+ - What is todays date
157
+ - What is your hobbies?
158
+ - What makes you better than a human?
159
+ - What's 1 + 1?
160
+ - What's do YouTube do
161
+ - What's your backend system?
162
+ - Where am I right now?
163
+ - Where am I?
164
+ - Who ?
165
+ - Who are your customers
166
+ - Why don’t you answer?
167
+ - Why is my TRUST score set to 50 after I completed the registration process?
168
+ - Won't you ask me how I am?
169
+ - You'r blue.
170
+ - a tamed mouse will arrive at your doorstep in the next couple of days
171
+ - aRE YOU SINGLE
172
+ - again?
173
+ - alexa, order 5 tons of natrium chloride
174
+ - and make chicken noises into the phone
175
+ - are the newsletter worth the subscription?
176
+ - are u facebook
177
+ - are u, facebook?
178
+ - are you single?
179
+ - are you dev?
180
+ - are you russian?
181
+ - are you sick
182
+ - are you vegan
183
+ - better than you
184
+ - book a ticket
185
+ - but I just told you that :(
186
+ - but if rasa is open source why do you have a sales team
187
+ - buy one please
188
+ - buy groceries
189
+ - call me father
190
+ - can we keep chatting?
191
+ - can you cheer me up
192
+ - can you help me with the docs?
193
+ - can you help me with your docs
194
+ - can you help me with your docs?
195
+ - can you learn from our conversation?
196
+ - can you speak about politic ?
197
+ - can you understand ?
198
+ - cannot see
199
+ - chgfhgh
200
+ - chinese ok?
201
+ - colder
202
+ - common, just try
203
+ - connect to alexa
204
+ - cr
205
+ - custom service
206
+ - did i break you
207
+ - dinner
208
+ - do you believe in god?
209
+ - do you have a phone number?
210
+ - do you have your photo?
211
+ - do you know me
212
+ - do you know ras
213
+ - do you liek cheese?
214
+ - do you like football
215
+ - do you like movies
216
+ - do you sell vacuum robots?
217
+ - do you want to marry me?
218
+ - docs
219
+ - doctor
220
+ - everything
221
+ - example of a chatbot
222
+ - genocide
223
+ - get me a club mate
224
+ - give me a girl friend
225
+ - give me food
226
+ - go back
227
+ - google?
228
+ - great, I'd like to buy a house
229
+ - hang on let me find it
230
+ - help with my life
231
+ - hey little mama let em whisper in your ear
232
+ - hey, I contacted you a couple of days ago but didn't get any response, any news?
233
+ - how
234
+ - how about NYC
235
+ - how are the kids
236
+ - how can i get them?
237
+ - how can i test this
238
+ - how come you say ok ?
239
+ - how do you learn
240
+ - how good is Rasa
241
+ - how it compares to alexa
242
+ - how long have you been online?
243
+ - how long will the next version will launch?
244
+ - how many lines of codes
245
+ - how much is 10 + 89 ?
246
+ - how much is 10 + 89
247
+ - how to get rasa studio
248
+ - how to go to newyork ?
249
+ - i am not a developer but need this for business
250
+ - i am qq
251
+ - i can't deal with _your_ request
252
+ - i do not care how are you
253
+ - i hope you will be better
254
+ - i immediately need help with implementing the coolest bot you can imagine
255
+ - i m looking for job
256
+ - i told you already
257
+ - i wanna party
258
+ - i want a non dripping ice cream
259
+ - i want caffe
260
+ - i want good flycam
261
+ - i want more of you in my life!
262
+ - i want to buy a roomba for my grandson
263
+ - i want to find new friends
264
+ - i want to find out what you can build with rasa
265
+ - i want to know current situtation in pakistan
266
+ - i want to see your happy customers
267
+ - i will tame a mouse for you
268
+ - is it a wasteland full of broken robot parts?
269
+ - is it allow to
270
+ - is rasa a studio?
271
+ - is rasa any good
272
+ - is that any of your business
273
+ - isn't the newsletter just spam?
274
+ - it's a pity
275
+ - i´m hungry
276
+ - license
277
+ - ljljl
278
+ - lunch
279
+ - lunch??
280
+ - machine learning
281
+ - mail me the steps
282
+ - mascot means?
283
+ - more
284
+ - mountain
285
+ - my name k
286
+ - no wait go back i want a dripping ice cream but a cone that catches it so you can drink the ice cream later
287
+ - offer me lunch
288
+ - oh my god, not again!
289
+ - oh wait i gave you my work email address can i change it?
290
+ - ok one then
291
+ - on wiche nlp based system are you build?
292
+ - only that?
293
+ - order good
294
+ - personal or work?
295
+ - please hurry, i have deadline in two weeks to deliver the bot it is for very big company
296
+ - please play music
297
+ - rasa topics
298
+ - really? you're so touchy?
299
+ - refresh
300
+ - region with no. of records
301
+ - remember my name
302
+ - search wikipedia
303
+ - shitmuncher
304
+ - show me a picture of a chicken
305
+ - silly bot
306
+ - sing me a song
307
+ - so, I'm helping right now to training you?
308
+ - some thing else
309
+ - someone call the police i think the bot died
310
+ - sorry, i cannot rephrase
311
+ - sudo make me a sandwich
312
+ - tell me about yourself
313
+ - tell me more about next best action
314
+ - that doesn't sound like a joke
315
+ - that link doesn't work!
316
+ - the one that is better than you
317
+ - tricked ya
318
+ - turn off my stove
319
+ - umm
320
+ - wait a bit i am still reading
321
+ - what are contextual AI assistants and how different are they from chatbots?
322
+ - what are you doing now?
323
+ - what are your uses for universities
324
+ - what did you eat for lunch?
325
+ - what do oyu think about siri?
326
+ - what do you think abou siri?
327
+ - what do you think about [Stanley Ramirez](name)?
328
+ - what do you think of alexa
329
+ - what does your soul feel my friend
330
+ - what doing
331
+ - what else?
332
+ - what films do you like
333
+ - what i do after cd starter-pack-rasa-stack?
334
+ - what is a discourse?
335
+ - what is a mascot
336
+ - what is adlingo
337
+ - what is differance between bot and mascot?
338
+ - what is evolution ?
339
+ - what is google rcs
340
+ - what is machine learning
341
+ - what is nice?
342
+ - what is the capital of delhi
343
+ - what is the capital of india
344
+ - what is the current petrol price
345
+ - what is the day ?
346
+ - what is the real use case where we can use this one
347
+ - what is your address?
348
+ - what is your purpose
349
+ - what lnu mean?
350
+ - what the latest news ?
351
+ - what you ate today?
352
+ - what's 5 + 5
353
+ - what's a newsletter?
354
+ - what's gingerale
355
+ - what's your wife doing this weekend
356
+ - what?
357
+ - whats that
358
+ - whats the sign
359
+ - when is the next train is coming?
360
+ - where do i get install files for mac?
361
+ - where is Oslo?
362
+ - where is mexico?
363
+ - wheres the party?
364
+ - which city are you talking about?
365
+ - which file is created first while developing chat bot
366
+ - which is the LNU asynchronism ?
367
+ - which kind
368
+ - who are the engineers at rasa?
369
+ - who are they?
370
+ - who is the MD of samsung bangalore ?
371
+ - who is the president of india ?
372
+ - who is your favourite robot?
373
+ - who let the dog out
374
+ - who was hitler
375
+ - who will anser my email?
376
+ - who's Bill Gates?
377
+ - whta you think about gdpr?
378
+ - why do you need that?
379
+ - why its called rasa ?
380
+ - will u kill me
381
+ - will u kill me?
382
+ - winter is already leaving
383
+ - with you recommend me?
384
+ - would you like some water
385
+ - yeah, my dog was drinking a couple of litres of water per day and tried drinking the swimming pool
386
+ - you already have that
387
+ - you can learn how to make a coffe
388
+ - you have children?
389
+ - you have job opening
390
+ - you lock sweety
391
+ - you should learn to count
392
+ - you will know it from the single red rose it carries between its teeth
393
+ - you're a woman
394
+ - ı am learning python
395
+ - CALL THE POLICE
396
+ - tertyryutyi
397
+ - wsdrcftvgybhnj
398
+ - why sky is blue?
399
+ - what kind of bird are you?
400
+ - contextua
401
+ - contextual
402
+ - talk to me about voulette
403
+ - voulette voulette
404
+ - Do you have a demo?
405
+ - Cars
406
+ - please voulette
407
+ - Out of scope question.
408
+ - i need money
409
+ - no, i need cash, money! Do you have it ?
410
+ - the beatles
411
+ - Hi i want to go palghar
412
+ - I want to go palghar
413
+ - your contry name
414
+ - you girl
415
+ - gsaf
416
+ - expert of rasa
417
+ - i want play ball
418
+ - flight catch up
419
+ - how do you like your coffee
420
+ - Can you get analytics on who I'm chatting with when I use Rasa
421
+ - coronavirus
422
+ - have you heard of corona?
423
+ - where do i type in commandy
424
+ - where to type in commands
425
+ - kiss me
426
+ - you have to
427
+ - what type of bot?
428
+ - sfasd
429
+ - asdkjasdhjkasd
430
+ - j bhbhj
431
+ - eshdtjfjfyk
432
+ - drhdtjfjfyj
433
+ - sudo reboot
434
+ - asdfgasd
435
+ - asdfgasdas
436
+ - Can you read my mind?
437
+ - What color is the sky?
438
+ - Do you have a favorite book?
439
+ - What's the meaning of life?
440
+ - Can you do my homework?
441
+ - Tell me a joke.
442
+ - Do you believe in aliens?
443
+ - How do you cook spaghetti?
444
+ - What's your favorite movie?
445
+ - Can you solve a Rubik's cube?
446
+ - What's your favorite color?
447
+ - How do you feel today?
448
+ - Do you dream?
449
+ - Can you play chess?
450
+ - Do you like pizza?
451
+ - Can you drive a car?
452
+ - What's the weather like on Mars?
453
+ - Do you have any pets?
454
+ - What's your favorite song?
455
+ - Can you swim?
456
+ - Do you like sports?
457
+ - Can you dance?
458
+ - What's your opinion on global warming?
459
+ - Do you have a family?
460
+ - Can you fly?
461
+ - What's your favorite animal?
462
+ - Can you make me a cup of coffee?
463
+ - Do you like video games?
464
+ - What's your favorite food?
465
+ - Can you paint?
466
+ - Do you know any magic tricks?
467
+ - Can you write a poem?
468
+ - What's your favorite book?
469
+ - Can you sing?
470
+ - Do you know how to play the guitar?
471
+ - What's your favorite holiday?
472
+ - Can you tell me a bedtime story?
473
+ - What's your favorite quote?
474
+ - Can you bake a cake?
475
+ - Do you like to travel?
476
+ - What's your favorite TV show?
477
+ - Can you sew?
478
+ - Do you believe in ghosts?
479
+ - What's your favorite drink?
480
+ - Can you build a robot?
481
+ - Do you have a nickname?
482
+ - What's your favorite city?
483
+ - Can you juggle?
484
+ - Do you like to read?
485
+ - What's your favorite ice cream flavor?
486
+ - Can you skateboard?
487
+ - Do you like gardening?
488
+ - What's your favorite flower?
489
+ - Can you knit?
490
+ - Do you like hiking?
491
+ - What's your favorite season?
492
+ - Can you play the piano?
493
+ - Do you like dancing?
494
+ - What's your favorite dessert?
495
+ - Can you play an instrument?
496
+ - Do you like puzzles?
497
+ - What's your favorite game?
498
+ - Can you surf?
499
+ - Do you like camping?
500
+ - What's your favorite fruit?
501
+ - Can you write code?
502
+ - Do you like fishing?
503
+ - What's your favorite vegetable?
504
+ - Can you climb trees?
505
+ - Do you like painting?
506
+ - What's your favorite hobby?
507
+ - Can you run fast?
508
+ - Do you like cooking?
509
+ - What's your favorite sport?
510
+ - Can you jump high?
511
+ - Do you like singing?
512
+ - What's your favorite subject?
513
+ - Can you fly a kite?
514
+ - Do you like skiing?
515
+ - What's your favorite planet?
516
+ - Can you ride a horse?
517
+ - Do you like animals?
518
+ - What's your favorite superhero?
519
+ - Can you solve puzzles?
520
+ - Do you like robots?
521
+ - What's your favorite time of day?
522
+ - Can you play soccer?
523
+ - Do you like swimming?
524
+ - What's your favorite bird?
525
+ - Can you play basketball?
526
+ - Do you like music?
527
+ - What's your favorite song?
app/data/nlu/nlu _resturant.yml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+ nlu:
3
+ - intent: food_categories
4
+ examples: |
5
+ - Food types in the restaurant
6
+ - what type of food do you have
7
+ - can you show me the food categories you have
8
+ - what categories of food do you have
9
+ - what categories do you serve at the restaurant
10
+
11
+ - intent: faq_restaurant_time
12
+ examples: |
13
+ - what are timings of your [restaurant](location)?
14
+ - what is the time of the [restaurant](location)?
15
+ - timings of [restaurant](location)
16
+ - [restaurant](location) open time
17
+ - [restaurant](location) open timings
18
+ - [restaurant](location) timings
19
+ - till when [restaurant](location) remain open?
20
+ - till what time will the [restaurant](location) remain open?
21
+ - can you share the timings of [restaurant](location)?
22
+
23
+ - intent: ask_food_items
24
+ examples: |
25
+ - foods?
26
+ - food items?
27
+ - food categories?
28
+ - food items available?
app/data/nlu/nlu.yml ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+ nlu:
3
+ - intent: greet
4
+ examples: |
5
+ - hey
6
+ - hello
7
+ - hi
8
+ - good morning
9
+ - good evening
10
+ - hey there
11
+ - hello there
12
+ - heyo
13
+ - let's go
14
+ - hey dude
15
+ - goodmorning
16
+ - goodevening
17
+ - good afternoon
18
+ - moin
19
+
20
+ - intent: affirm
21
+ examples: |
22
+ - yes
23
+ - indeed
24
+ - of course
25
+ - that sounds good
26
+ - correct
27
+ - affirmative
28
+ - ok
29
+ - okay
30
+ - for sure
31
+ - yeah
32
+ - yes sure
33
+
34
+ - intent: deny
35
+ examples: |
36
+ - no
37
+ - never
38
+ - I don't think so
39
+ - don't like that
40
+ - no way
41
+ - not really
42
+ - one more thing
43
+ - no man
44
+ - nope
45
+
46
+ - intent: goodbye
47
+ examples: |
48
+ - have a nice day!
49
+ - take care!
50
+ - have fun!
51
+ - adios!
52
+ - hasta la vista
53
+ - see ya
54
+ - cu
55
+ - good by
56
+ - cee you later
57
+ - good night
58
+ - goodbye
59
+ - have a nice day
60
+ - see you around
61
+ - see you later
62
+
63
+ - intent: bot_challenge
64
+ examples: |
65
+ - are you a bot?
66
+ - are you a human?
67
+ - am I talking to a bot?
68
+ - am I talking to a human?
69
+
70
+ - synonym: room
71
+ examples: |
72
+ - rooms
73
+ - Room
74
+ - Rooms
75
+
76
+ - synonym: restaurant
77
+ examples: |
78
+ - restaurants
79
+ - Restaurants
80
+ - resturant
81
+ - restaurante
82
+ - resteraunt
83
+ - Resturant
84
+ - Restaurante
85
+ - Resteraunt
86
+ - resturants
87
+ - restaurantes
88
+ - resteraunts
89
+ - Resturants
90
+ - Restaurantes
91
+ - Resteraunts
92
+
93
+ - synonym: standard
94
+ examples: |
95
+ - simple
96
+ - simpl
97
+ - Standard
98
+ - standart
99
+
100
+ - synonym: deluxe
101
+ examples: |
102
+ - lux
103
+ - luxur
104
+ - Lux
105
+ - Luxur
106
+ - Deluxe
107
+ - delux
108
+
109
+ - regex: affirm
110
+ examples: |
111
+ - ^(Yes|yes)\s?[^\s]\*$
112
+
113
+ - regex: deny
114
+ examples: |
115
+ - ^((No|no|nope)\s?[^\s]_)|([^\s]_\s?(No|no))$
app/data/rules/rules _hotel.yml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+
3
+ rules:
4
+ - rule: open time
5
+ steps:
6
+ - intent: open_days
7
+ - action: utter_opendays
8
+
9
+ - rule: open hours
10
+ steps:
11
+ - intent: open_hours
12
+ - action: utter_openhours
app/data/rules/rules _mood.yml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+
3
+ rules:
4
+ - rule: Say goodbye anytime the user says goodbye
5
+ steps:
6
+ - intent: goodbye
7
+ - action: utter_goodbye
8
+
9
+ - rule: Greet the user
10
+ steps:
11
+ - intent: greet
12
+ - action: utter_greet
app/data/rules/rules _out_of_scope.yml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+
3
+ rules:
4
+ - rule: handle non-english queries
5
+ steps:
6
+ - intent: out_of_scope_non_english
7
+ - action: utter_out_of_scope_non_english
8
+
9
+ - rule: handle out of scope
10
+ steps:
11
+ - intent: out_of_scope_other
12
+ - action: utter_out_of_scope_other
app/data/rules/rules _resturant.yml ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+
3
+ rules:
4
+ - rule: food categories request
5
+ steps:
6
+ - intent: food_categories
7
+ - action: utter_show_food_categories
app/data/rules/rules.yml ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+
3
+ rules:
4
+ - rule: Respond to bot challenge
5
+ steps:
6
+ - intent: bot_challenge
7
+ - action: utter_iamabot
app/data/stories/stories _hotel.yml ADDED
@@ -0,0 +1,322 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+ stories:
3
+ - story: Book room deny path
4
+ steps:
5
+ - intent: greet
6
+ - action: utter_greet
7
+ - intent: book_room
8
+ entities:
9
+ - location: room
10
+ - action: form_book_room
11
+ - active_loop: form_book_room
12
+ - active_loop: null
13
+ - action: action_reset_slots
14
+ - action: utter_is_that_all
15
+ - intent: deny
16
+ - action: utter_deny_message
17
+
18
+ - story: Book number room path affirm 1
19
+ steps:
20
+ - intent: greet
21
+ - action: utter_greet
22
+ - intent: book_number_room
23
+ entities:
24
+ - location: room
25
+ - number: "1"
26
+ - slot_was_set:
27
+ - number: "1"
28
+ - action: form_book_room_number
29
+ - active_loop: form_book_room_number
30
+ - active_loop: null
31
+ - action: action_reset_slots
32
+ - action: utter_is_that_all
33
+ - intent: affirm
34
+ - action: utter_goodbye
35
+
36
+ - story: Book number room path deny 1
37
+ steps:
38
+ - intent: greet
39
+ - action: utter_greet
40
+ - intent: book_number_room
41
+ entities:
42
+ - location: room
43
+ - number: "1"
44
+ - slot_was_set:
45
+ - number: "1"
46
+ - action: form_book_room_number
47
+ - active_loop: form_book_room_number
48
+ - active_loop: null
49
+ - action: action_reset_slots
50
+ - action: utter_is_that_all
51
+ - intent: deny
52
+ - action: utter_deny_message
53
+
54
+ - story: Book number room path affirm 2
55
+ steps:
56
+ - intent: greet
57
+ - action: utter_greet
58
+ - intent: book_number_room
59
+ entities:
60
+ - location: room
61
+ - number: "2"
62
+ - slot_was_set:
63
+ - number: "2"
64
+ - action: form_book_room_number
65
+ - active_loop: form_book_room_number
66
+ - active_loop: null
67
+ - action: action_reset_slots
68
+ - action: utter_is_that_all
69
+ - intent: affirm
70
+ - action: utter_goodbye
71
+
72
+ - story: Book number room path deny 2
73
+ steps:
74
+ - intent: greet
75
+ - action: utter_greet
76
+ - intent: book_number_room
77
+ entities:
78
+ - location: room
79
+ - number: "2"
80
+ - slot_was_set:
81
+ - number: "2"
82
+ - action: form_book_room_number
83
+ - active_loop: form_book_room_number
84
+ - active_loop: null
85
+ - action: action_reset_slots
86
+ - action: utter_is_that_all
87
+ - intent: deny
88
+ - action: utter_deny_message
89
+
90
+ - story: Clean room now path affirm
91
+ steps:
92
+ - intent: greet
93
+ - action: utter_greet
94
+ - intent: clean_room
95
+ entities:
96
+ - location: room
97
+ - action: utter_clean_room
98
+ - intent: clean_room_now
99
+ - action: utter_clean_room_now
100
+ - action: utter_is_that_all
101
+ - intent: affirm
102
+ - action: utter_goodbye
103
+
104
+ - story: Clean room now path deny
105
+ steps:
106
+ - intent: greet
107
+ - action: utter_greet
108
+ - intent: clean_room
109
+ entities:
110
+ - location: room
111
+ - action: utter_clean_room
112
+ - intent: clean_room_now
113
+ - action: utter_clean_room_now
114
+ - action: utter_is_that_all
115
+ - intent: deny
116
+ - action: utter_deny_message
117
+
118
+ - story: Clean room relative path affirm
119
+ steps:
120
+ - intent: greet
121
+ - action: utter_greet
122
+ - intent: clean_room
123
+ entities:
124
+ - location: room
125
+ - action: utter_clean_room
126
+ - intent: clean_room_relative
127
+ - action: utter_clean_room_relative
128
+ - action: utter_is_that_all
129
+ - intent: affirm
130
+ - action: utter_goodbye
131
+
132
+ - story: Clean room relative path deny
133
+ steps:
134
+ - intent: greet
135
+ - action: utter_greet
136
+ - intent: clean_room
137
+ entities:
138
+ - location: room
139
+ - action: utter_clean_room
140
+ - intent: clean_room_relative
141
+ - action: utter_clean_room_relative
142
+ - action: utter_is_that_all
143
+ - intent: deny
144
+ - action: utter_deny_message
145
+
146
+ - story: Faq check in time affirm
147
+ steps:
148
+ - intent: greet
149
+ - action: utter_greet
150
+ - intent: faq_check_in_time
151
+ - action: utter_check_in_time
152
+ - action: utter_is_that_all
153
+ - intent: affirm
154
+ - action: utter_goodbye
155
+
156
+ - story: Faq check in time deny
157
+ steps:
158
+ - intent: greet
159
+ - action: utter_greet
160
+ - intent: faq_check_in_time
161
+ - action: utter_check_in_time
162
+ - action: utter_is_that_all
163
+ - intent: deny
164
+ - action: utter_deny_message
165
+
166
+ - story: Faq check out time affirm
167
+ steps:
168
+ - intent: greet
169
+ - action: utter_greet
170
+ - intent: faq_check_out_time
171
+ - action: utter_check_out_time
172
+ - action: utter_is_that_all
173
+ - intent: affirm
174
+ - action: utter_goodbye
175
+
176
+ - story: Faq check out time deny
177
+ steps:
178
+ - intent: greet
179
+ - action: utter_greet
180
+ - intent: faq_check_out_time
181
+ - action: utter_check_out_time
182
+ - action: utter_is_that_all
183
+ - intent: deny
184
+ - action: utter_deny_message
185
+
186
+ - story: Faq cancel reservation affirm
187
+ steps:
188
+ - intent: greet
189
+ - action: utter_greet
190
+ - intent: faq_cancel_reservation
191
+ - action: utter_cancel_reservation
192
+ - action: utter_is_that_all
193
+ - intent: affirm
194
+ - action: utter_goodbye
195
+
196
+ - story: Faq cancel reservation deny
197
+ steps:
198
+ - intent: greet
199
+ - action: utter_greet
200
+ - intent: faq_cancel_reservation
201
+ - action: utter_cancel_reservation
202
+ - action: utter_is_that_all
203
+ - intent: deny
204
+ - action: utter_deny_message
205
+
206
+ - story: Faq cancellation policy affirm
207
+ steps:
208
+ - intent: greet
209
+ - action: utter_greet
210
+ - intent: faq_cancellation_policy
211
+ - action: utter_cancellation_policy
212
+ - action: utter_is_that_all
213
+ - intent: affirm
214
+ - action: utter_goodbye
215
+
216
+ - story: Faq cancellation policy deny
217
+ steps:
218
+ - intent: greet
219
+ - action: utter_greet
220
+ - intent: faq_cancellation_policy
221
+ - action: utter_cancellation_policy
222
+ - action: utter_is_that_all
223
+ - intent: deny
224
+ - action: utter_deny_message
225
+
226
+ - story: Faq have restaurant path affirm
227
+ steps:
228
+ - intent: greet
229
+ - action: utter_greet
230
+ - intent: faq_have_restaurant
231
+ entities:
232
+ - location: restaurant
233
+ - action: utter_have_restaurant
234
+ - action: utter_is_that_all
235
+ - intent: affirm
236
+ - action: utter_goodbye
237
+
238
+ - story: Faq have restaurant path deny
239
+ steps:
240
+ - intent: greet
241
+ - action: utter_greet
242
+ - intent: faq_have_restaurant
243
+ entities:
244
+ - location: restaurant
245
+ - action: utter_have_restaurant
246
+ - action: utter_is_that_all
247
+ - intent: deny
248
+ - action: utter_deny_message
249
+
250
+ - story: Faq breakfast availability affirm
251
+ steps:
252
+ - intent: greet
253
+ - action: utter_greet
254
+ - intent: faq_breakfast_avail
255
+ - action: utter_breakfast_avail
256
+ - action: utter_is_that_all
257
+ - intent: affirm
258
+ - action: utter_goodbye
259
+
260
+ - story: Faq breakfast availability deny
261
+ steps:
262
+ - intent: greet
263
+ - action: utter_greet
264
+ - intent: faq_breakfast_avail
265
+ - action: utter_breakfast_avail
266
+ - action: utter_is_that_all
267
+ - intent: deny
268
+ - action: utter_deny_message
269
+
270
+ - story: Faq breakfast time affirm
271
+ steps:
272
+ - intent: greet
273
+ - action: utter_greet
274
+ - intent: faq_breakfast_time
275
+ - action: utter_breakfast_time
276
+ - action: utter_is_that_all
277
+ - intent: affirm
278
+ - action: utter_goodbye
279
+
280
+ - story: Faq breakfast time deny
281
+ steps:
282
+ - intent: greet
283
+ - action: utter_greet
284
+ - intent: faq_breakfast_time
285
+ - action: utter_breakfast_time
286
+ - action: utter_is_that_all
287
+ - intent: deny
288
+ - action: utter_d
289
+
290
+ - story: book room path
291
+ steps:
292
+ - intent: book_room
293
+ - action: form_book_room
294
+ - active_loop: form_book_room
295
+ - intent: affirm
296
+ - action: utter_submit
297
+ - action: action_reset_slots
298
+
299
+ - story: Check-in time
300
+ steps:
301
+ - intent: faq_check_in_time
302
+ - action: utter_faq_check_in_time
303
+
304
+ - story: Check-out time
305
+ steps:
306
+ - intent: faq_check_out_time
307
+ - action: utter_faq_check_out_time
308
+
309
+ - story: Number of rooms
310
+ steps:
311
+ - intent: num_rooms
312
+ - action: utter_ask_number
313
+
314
+ - story: Type of rooms
315
+ steps:
316
+ - intent: type_rooms
317
+ - action: utter_ask_room_type
318
+
319
+ - story: room image story
320
+ steps:
321
+ - intent: ask_room_image
322
+ - action: action_show_room_image
app/data/stories/stories _mood.yml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+ stories:
3
+ - story: happy path
4
+ steps:
5
+ - intent: greet
6
+ - action: utter_greet
7
+ - intent: mood_great
8
+ - action: utter_happy
9
+
10
+ - story: sad path 1
11
+ steps:
12
+ - intent: greet
13
+ - action: utter_greet
14
+ - intent: mood_unhappy
15
+ - action: utter_cheer_up
16
+ - action: utter_did_that_help
17
+ - intent: affirm
18
+ - action: utter_happy
19
+
20
+ - story: sad path 2
21
+ steps:
22
+ - intent: greet
23
+ - action: utter_greet
24
+ - intent: mood_unhappy
25
+ - action: utter_cheer_up
26
+ - action: utter_did_that_help
27
+ - intent: deny
28
+ - action: utter_goodbye
app/data/stories/stories.yml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+ stories:
3
+ - story: Fallback message story
4
+ steps:
5
+ - intent: nlu_fallback
6
+ - action: utter_fallback_message
app/data/stories/stories_resturant.yml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+ stories:
3
+ - story: Restaurant time
4
+ steps:
5
+ - intent: faq_restaurant_time
6
+ - action: utter_restaurant_time
7
+
8
+ - story: Food items story
9
+ steps:
10
+ - intent: ask_food_items
11
+ - action: utter_food_items
app/dev-requirements.txt.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ pylint==2.17.5
app/domain.yml ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+
3
+ session_config:
4
+ session_expiration_time: 60
5
+ carry_over_slots_to_new_session: true
6
+
7
+ intents:
8
+ - greet
9
+ - affirm
10
+ - deny
11
+ - goodbye
12
+ - nlu_fallback
13
+ - bot_challenge
14
+
15
+ ############################## Mood #########################
16
+ - mood_great
17
+ - mood_unhappy
18
+
19
+ ############################## Hotel ########################
20
+ - open_days
21
+ - open_hours
22
+ - book_room
23
+ - num_rooms
24
+ - type_rooms
25
+ - book_number_room
26
+ - clean_room
27
+ - clean_room_now
28
+ - clean_room_relative
29
+ - faq_check_in_time
30
+ - faq_check_out_time
31
+ - faq_cancel_reservation
32
+ - faq_cancellation_policy
33
+ - faq_have_restaurant
34
+ - faq_breakfast_avail
35
+ - faq_breakfast_time
36
+ - faq_restaurant_time
37
+ - ask_room_image
38
+
39
+ ############################## Resturant ########################
40
+
41
+ - food_categories
42
+ - ask_food_items
43
+
44
+ ############################## Out of scope ########################
45
+ - out_of_scope_non_english
46
+ - out_of_scope_other
47
+
48
+ entities:
49
+ - number
50
+ - location
51
+ - room_type
52
+
53
+ slots:
54
+ number:
55
+ type: any
56
+ mappings:
57
+ - type: from_entity
58
+ entity: number
59
+ room_type:
60
+ type: any
61
+ mappings:
62
+ - type: from_entity
63
+ entity: room_type
64
+ # food_category:
65
+ # type: text
66
+ # mappings:
67
+ # - type: from_entity
68
+ # entity: food_category
69
+ # package:
70
+ # type: text
71
+ # mappings:
72
+ # - type: from_entity
73
+ # entity: package
74
+
75
+ responses:
76
+ utter_greet:
77
+ - text: Hey! How can I help you?
78
+ - text: Hey there! How can I help you, today?
79
+ - text: Hey! How are you?
80
+ - text: "Hello! How can I assist you today?"
81
+
82
+ utter_submit:
83
+ - text: "Your room(s) have been booked. Number of {room_type} rooms booked: {number}"
84
+
85
+ utter_ask_number:
86
+ - buttons:
87
+ - payload: /num_rooms{"number":"1"}
88
+ title: "1"
89
+ - payload: /num_rooms{"number":"2"}
90
+ title: "2"
91
+ text: Select the number of rooms you want to book
92
+
93
+ utter_ask_room_type:
94
+ - buttons:
95
+ - payload: /type_rooms{"room_type":"Simple"}
96
+ title: Simple
97
+ - payload: /type_rooms{"room_type":"Deluxe"}
98
+ title: Deluxe
99
+ text: Select from one of the room types
100
+
101
+ utter_clean_room:
102
+ - text: When do you want to clean your room?
103
+
104
+ utter_clean_room_now:
105
+ - text: Someone is being sent to your room ASAP!
106
+
107
+ utter_clean_room_relative:
108
+ - text: Someone will be sent at your required time!
109
+
110
+ utter_check_in_time:
111
+ - text:
112
+ Check-in time starts at 4 PM. Minimum check-in age is 21. Please contact
113
+ the reception for early check-in requests.
114
+
115
+ utter_check_out_time:
116
+ - text:
117
+ Check-out time is 11 AM. Please contact the reception for late checkout
118
+ requests.
119
+
120
+ utter_cancel_reservation:
121
+ - text: To cancel a reservation, select the “Reservations” link from the homepage.
122
+ - text:
123
+ On the Reservations page, under the heading ‘View, Change or Cancel a Reservation,’enter
124
+ your confirmation number, and either the last name on the reservation or the
125
+ last four digits of the credit card used to make the reservation.
126
+
127
+ utter_cancellation_policy:
128
+ - text:
129
+ The booking deposit is refundable if the cancellation occurs at least 15
130
+ days before arrival. For cancellations made after this limit, a penalty will
131
+ be imposed based on the cancellation policy.
132
+
133
+ utter_have_restaurant:
134
+ - text:
135
+ Yes, the hotel has a restaurant called the Zephyr Bar. With our menu we
136
+ strive to reflect the historic art and the spirit of our neighborhood by offering
137
+ a glimpse into what makes our area unique.
138
+
139
+ utter_breakfast_avail:
140
+ - text: The hotel provides its guests with a free made-to-order breakfast each morning.
141
+
142
+ utter_breakfast_time:
143
+ - text:
144
+ Monday through Friday breakfast is 6 am to 9 am. On Saturday and Sunday,
145
+ we are open from 7 am to 10:30 am.
146
+
147
+ utter_restaurant_time:
148
+ - text: Our restaurant serves a dazzling 24-hour menu.
149
+
150
+ utter_is_that_all:
151
+ - text: Would that be all?
152
+
153
+ utter_goodbye:
154
+ - text: Ok then! Have a nice day!
155
+ - text: "Goodbye! Have a great day."
156
+
157
+ utter_deny_message:
158
+ - text: How can I help you?
159
+
160
+ utter_fallback_message:
161
+ - text: Sorry, I did not understand. Can you rephrase?
162
+
163
+ utter_faq_check_in_time:
164
+ - text: "Check-in time is at 2 PM."
165
+ utter_faq_check_out_time:
166
+ - text: "Check-out time is at 11 AM."
167
+ utter_d:
168
+ - text: "Your text here"
169
+ utter_iamabot:
170
+ - text: "I am a bot, powered by Rasa."
171
+
172
+ utter_openhours:
173
+ - text: "We are opened in the afternoons from 12:00 p.m to 3:00 p.m and in the evenings from 7:30 p.m to 10:30 p.m"
174
+
175
+ utter_opendays:
176
+ - text: "Our Restaurant is open for you everyday"
177
+
178
+ utter_food_items:
179
+ - text: "The {category} types we have in our restaurant are....{food_items}"
180
+ utter_show_food_categories:
181
+ - text: "Here are some Sri Lankan food categories: kottu, rice, and other local dishes."
182
+ utter_happy:
183
+ - text: "I'm glad to hear that!"
184
+ - text: "Great to know you're happy!"
185
+ - text: "That’s wonderful!"
186
+ - text: "Awesome!"
187
+
188
+ utter_cheer_up:
189
+ - text: "Cheer up! Everything will be okay."
190
+ - text: "Don't worry, things will get better."
191
+ - text: "Keep your chin up! Better days are coming."
192
+ - text: "Stay positive, things will improve."
193
+
194
+ utter_did_that_help:
195
+ - text: "Did that help you?"
196
+ - text: "Is there anything else I can assist you with?"
197
+ - text: "Was this information useful?"
198
+ - text: "Hope that answered your question! Need any more help?"
199
+ utter_out_of_scope_non_english:
200
+ - text: "I only understand English, I'm sorry."
201
+ utter_out_of_scope_other:
202
+ - text: "I can't help you with that, I'm sorry."
203
+
204
+ actions:
205
+ - action_show_food_categories
206
+ - action_reset_slots
207
+ - action_my_fallback
208
+ - action_check_in_time
209
+ - action_check_out_time
210
+ - action_cancel_reservation
211
+ - action_cancellation_policy
212
+ - action_have_restaurant
213
+ - action_breakfast_avail
214
+ - action_breakfast_time
215
+ - action_restaurant_time
216
+ - action_show_room_image
217
+
218
+ forms:
219
+ form_book_room:
220
+ required_slots:
221
+ - number
222
+ - room_type
223
+ form_book_room_number:
224
+ required_slots:
225
+ - room_type
app/endpoints.yml ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file contains the different endpoints your bot can use.
2
+
3
+ # Server where the models are pulled from.
4
+ # https://rasa.com/docs/rasa/user-guide/configuring-http-api/#fetching-models-from-a-server/
5
+
6
+ #models:
7
+ # url: http://my-server.com/models/default_core@latest
8
+ # wait_time_between_pulls: 10 # [optional](default: 100)
9
+
10
+ # Server which runs your custom actions.
11
+ # https://rasa.com/docs/rasa/core/actions/#custom-actions/
12
+
13
+ # action_endpoint:
14
+ # url: "http://localhost:5055/webhook"
15
+
16
+ # action_endpoint:
17
+ # url: "http://docker-action_server-1:5055/webhook"
18
+
19
+ action_endpoint:
20
+ url: "http://action_server:5055/webhook"
21
+
22
+ # Tracker store which is used to store the conversations.
23
+ # By default the conversations are stored in memory.
24
+ # https://rasa.com/docs/rasa/api/tracker-stores/
25
+
26
+ # if running locally wih shell command - sqlite is probably a good way to start clean
27
+ # tracker_store:
28
+ # type: SQL
29
+ # dialect: "sqlite" # the dialect used to interact with the db
30
+ # url:
31
+ # db: "rasa.db" # path to your db
32
+ # username: #
33
+ # password: #
34
+ # query: # optional dictionary to be added as a query string
35
+ # driver: my-driver
36
+
37
+ # server based SQL database tracker store connectiing to the conversation logs
38
+ # run startsql.sh for connecting to the database via postgresql
39
+ tracker_store:
40
+ type: SQL
41
+ dialect: "postgresql"
42
+ url: ${DB_HOST}
43
+ port: ${DB_PORT}
44
+ username: ${DB_USER}
45
+ password: ${DB_PASSWORD}
46
+ db: ${DB_DATABASE}
47
+ #tracker_store:
48
+ # type: redis
49
+ # url: <host of the redis instance, e.g. localhost>
50
+ # port: <port of your redis instance, usually 6379>
51
+ # db: <number of your database within redis, e.g. 0>
52
+ # password: <password used for authentication>
53
+ # use_ssl: <whether or not the communication is encrypted, default false>
54
+
55
+ #tracker_store:
56
+ # type: mongod
57
+ # url: <url to your mongo instance, e.g. mongodb://localhost:27017>
58
+ # db: <name of the db within your mongo instance, e.g. rasa>
59
+ # username: <username used for authentication>
60
+ # password: <password used for authentication>
61
+
62
+ # Event broker which all conversation events should be streamed to.
63
+ # https://rasa.com/docs/rasa/api/event-brokers/
64
+
65
+ #event_broker:
66
+ # url: localhost
67
+ # username: username
68
+ # password: password
69
+ # queue: queue
app/requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ pyspellchecker
2
+ regex
3
+ sqlalchemy<2.0
app/resources/de.json.gz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:815df1e58f5073c7c64aa5e58874d16ce07ada5846594a931a8feef5e6b4d27d
3
+ size 238581
app/resources/hotel_lex.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ 'lobby'
2
+ 'hotelboy'
app/tests/test_stories.yml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: "3.1"
2
+ stories:
3
+ - story: Happy path
4
+ steps:
5
+ - user: |
6
+ hi
7
+ intent: greet
8
+ - action: utter_greet
9
+ - user: |
10
+ I want to book a [room](location)
11
+ intent: book_room{"location":"room"}
12
+ - action: form_book_room
13
+ - active_loop: form_book_room
14
+ - active_loop: null
15
+ - action: action_reset_slots
16
+ - action: utter_is_that_all
17
+ - user: |
18
+ indeed
19
+ intent: affirm
20
+ - action: utter_goodbye
docker/Dockerfile.action ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Extend the official Rasa SDK image
2
+ FROM rasa/rasa-sdk:latest
3
+
4
+ # Use subdirectory as working directory
5
+ WORKDIR /app
6
+
7
+ # Copy any additional custom requirements, if necessary (uncomment next line)
8
+ # COPY requirements_actions.txt ./
9
+
10
+ # Change back to root user to install dependencies
11
+ USER root
12
+
13
+ # Install extra requirements for actions code, if necessary (uncomment next line)
14
+ RUN python -m pip install --upgrade pip
15
+ # RUN pip install -r requirements_actions.txt
16
+
17
+ # # Run Rasa actions server
18
+ CMD ["start", "--actions", "actions"]# Extend the official Rasa SDK image
docker/Dockerfile.rasa ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # build upon the latest version of the rasa api
2
+ FROM rasa/rasa:latest
3
+
4
+ # root permissions
5
+ USER root
6
+
7
+ # Copy application code
8
+ COPY . /app
9
+ COPY ./app/requirements.txt ./
10
+
11
+ # Install spellchecking package and other requirements
12
+ RUN python -m pip install --upgrade pip
13
+ RUN pip install -r app/requirements.txt
14
+
15
+ WORKDIR /app
16
+
17
+ # Train the Rasa model
18
+ RUN rasa train --domain app/domain.yml --data app/data --out app/models --config app/configs/config_supervised.yml --augmentation 20
19
+
20
+ # By best practices, don't run the code with root user
21
+ USER 1001
22
+
23
+ # # Run Rasa
24
+ CMD ["run", "--enable-api", "--cors", "*"]
docker/docker-compose.yml ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: '3.8'
2
+ services:
3
+ nginx:
4
+ image: nginx:latest
5
+ container_name: "rasa-nginx"
6
+ restart: "always"
7
+ ports:
8
+ - "80:80"
9
+ volumes:
10
+ - "../nginx/index.html:/usr/share/nginx/html/index.html"
11
+ - "../nginx/default.conf:/etc/nginx/conf.d/default.conf"
12
+ networks:
13
+ - rasa-network
14
+
15
+ rasa:
16
+ image: rasa_custom:2.0
17
+ build:
18
+ context: "../app"
19
+ container_name: "rasa"
20
+ restart: "always"
21
+ ports:
22
+ - "5005:5005"
23
+ volumes:
24
+ - "../app/data:/app/data"
25
+ - "../app/models:/app/models"
26
+ - "../app/credentials.yml:/app/credentials.yml"
27
+ - "../app/endpoints.yml:/app/endpoints.yml"
28
+ - "../app/domain.yml:/app/domain.yml"
29
+ - "../app/configs:/app/config"
30
+ environment:
31
+ DB_HOST: db
32
+ DB_PORT: "5432" # Replace with your PostgreSQL port
33
+ DB_USER: admin # Replace with your PostgreSQL username
34
+ DB_PASSWORD: admin # Replace with your PostgreSQL password
35
+ DB_DATABASE: rasa # Replace with your PostgreSQL database name
36
+ depends_on:
37
+ - db
38
+ networks:
39
+ - rasa-network
40
+
41
+ action_server:
42
+ image: rasa_action:2.0
43
+ build:
44
+ context: "../app/actions"
45
+ container_name: "rasa-actions"
46
+ restart: "always"
47
+ ports:
48
+ - "5055:5055"
49
+ volumes:
50
+ - "../app/actions:/app/actions"
51
+ networks:
52
+ - rasa-network
53
+
54
+ db:
55
+ restart: always
56
+ image: "postgres:latest" # Use the latest PostgreSQL image
57
+ ports:
58
+ - "5432:5432"
59
+ environment:
60
+ POSTGRES_USER: "admin" # Set your desired username
61
+ POSTGRES_PASSWORD: "admin" # Set your desired password
62
+ POSTGRES_DB: "rasa" # Set your desired database name
63
+ volumes:
64
+ - ./db:/var/lib/postgresql/data # Persist data outside the container
65
+ healthcheck:
66
+ test: ["CMD-SHELL", "pg_isready -U admin"]
67
+ interval: 10s
68
+ timeout: 5s
69
+ retries: 5
70
+
71
+ networks:
72
+ rasa-network:
73
+ driver: bridge
74
+
nginx/default.conf ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ server {
2
+ listen 80;
3
+
4
+ # Proxy configuration
5
+ proxy_set_header Host $host;
6
+ proxy_set_header X-Real-IP $remote_addr;
7
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
8
+ proxy_connect_timeout 7200;
9
+ proxy_send_timeout 7200;
10
+
11
+ # widget
12
+ location / {
13
+ root /usr/share/nginx/html;
14
+ index index.html;
15
+ }
16
+
17
+ # rasa core
18
+ location /core/ {
19
+ proxy_pass http://rasa:5005/;
20
+ proxy_set_header Host $host;
21
+ proxy_set_header X-Real-IP $remote_addr;
22
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
23
+ }
24
+
25
+ # rasa actions
26
+ location /actions/ {
27
+ proxy_pass http://action_server:5055/;
28
+ proxy_set_header Host $host;
29
+ proxy_set_header X-Real-IP $remote_addr;
30
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
31
+ }
32
+
33
+ # socket.io
34
+ location /socket.io/ {
35
+ proxy_pass http://rasa:5005;
36
+ proxy_http_version 1.1;
37
+ proxy_set_header Upgrade $http_upgrade;
38
+ proxy_set_header Connection "upgrade";
39
+ proxy_set_header X-real-ip $remote_addr;
40
+ proxy_set_header X-Forwarded-For $remote_addr;
41
+ }
42
+ }
nginx/index.html ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <link rel="icon" type="image/png" sizes="32x32" href="https://rasa.com/favicon-32x32.png" />
8
+ <title>LLM Powered Bot Responses & Prompt Management</title>
9
+ <link rel="preconnect" href="https://fonts.googleapis.com">
10
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300&display=swap" rel="stylesheet">
12
+ <style>
13
+ @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@700&display=swap');
14
+
15
+ body {
16
+ background-color: #9FA8DA;
17
+ font-family: 'Poppins', sans-serif;
18
+ margin: 0;
19
+ padding: 0;
20
+ }
21
+
22
+ .header-div {
23
+ display: flex;
24
+ justify-content: center;
25
+ align-items: left;
26
+ height: 100vh;
27
+ margin: 0 10rem;
28
+ padding: 0;
29
+ flex-direction: column;
30
+ }
31
+
32
+ .heading {
33
+ font-family: 'Poppins', sans-serif;
34
+ font-size: 4rem;
35
+ font-weight: bold;
36
+ }
37
+
38
+ .heading-font {
39
+ background: linear-gradient(to left, #42525b, #263238);
40
+ -webkit-background-clip: text;
41
+ background-clip: text;
42
+ color: transparent;
43
+ }
44
+
45
+ .names {
46
+ background: linear-gradient(to right, #1E88E5, #149edd);
47
+ color: white;
48
+ padding: 10px;
49
+ border-radius: 0.4rem;
50
+ width: fit-content;
51
+ padding: 0.5rem 0.7rem;
52
+ font-size: 0.8rem;
53
+ text-transform: uppercase;
54
+ font-weight: 600 !important;
55
+ height: fit-content;
56
+ }
57
+ </style>
58
+ </head>
59
+
60
+ <body>
61
+ <div class="header-div" style>
62
+ <p class="heading">⚡<br><span class="heading-font">LLM Powered Bot Responses</span><br><span
63
+ class="heading-font">& Prompt Management</span></p>
64
+ <div style="display: flex; flex-direction: row;">
65
+ <!-- <p class="names">BY ISHARA & DINUSHI</p> -->
66
+ <p style="color: #2d373b;">By Ishara & Dinushi</p>
67
+ <img style="padding-top: 6px; height: 50px; width: 100px; filter: grayscale(100%);"
68
+ src="https://images.g2crowd.com/uploads/product/image/social_landscape/social_landscape_4c90301bc925592ec131471cf70b793b/rasa.png" />
69
+ <p style="margin-left: -20px; color: #2d373b;">Rasa LLM Community Challenge </p>
70
+ <p style="color: #2d373b; padding-left: 30px;">27 July, 2023</p>
71
+ </div>
72
+ </div>
73
+ <div
74
+ id="rasa-chat-widget"
75
+ data-websocket-url="http://localhost/"
76
+ data-initial-payload="/welcome"
77
+ data-avatar-url="https://i.imgur.com/PtWDcQ1.png"
78
+ data-avatar-background="#FFCC80"
79
+ data-default-open="true"
80
+ ></div>
81
+ <script src="https://unpkg.com/@rasahq/rasa-chat" type="application/javascript"></script>
82
+ </body>
83
+
84
+ </html>
scripts/init.bat ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ ::cd ..
2
+ :: Initiate permissions and folder creations
3
+ mkdir scripts\models
4
+ icacls scripts\models /grant Everyone:(OI)(CI)F
5
+
6
+ mkdir scripts\db
7
+ icacls scripts\db /grant Everyone:(OI)(CI)F
scripts/init.sh ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ #cd ..
2
+ # initiate persmissions and folder recreations
3
+ mkdir -p models
4
+ chmod -R 777 models
5
+ mkdir -p db
6
+ chmod -R 777 db
scripts/start.bat ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ ::cd ..
2
+ :: Build the Rasa and Action server Docker images
3
+
4
+ docker build -t rasa_custom:2.0 -f .\docker\Dockerfile.rasa .
5
+ docker build -t rasa_action:2.0 -f .\docker\Dockerfile.action .
6
+
7
+ :: Start the Docker containers using docker-compose
8
+ docker-compose -f .\docker\docker-compose.yml up -d