rasa-pro 3.9.18__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rasa-pro might be problematic. Click here for more details.
- README.md +415 -0
- rasa/__init__.py +10 -0
- rasa/__main__.py +156 -0
- rasa/anonymization/__init__.py +2 -0
- rasa/anonymization/anonymisation_rule_yaml_reader.py +91 -0
- rasa/anonymization/anonymization_pipeline.py +286 -0
- rasa/anonymization/anonymization_rule_executor.py +260 -0
- rasa/anonymization/anonymization_rule_orchestrator.py +120 -0
- rasa/anonymization/schemas/config.yml +47 -0
- rasa/anonymization/utils.py +118 -0
- rasa/api.py +146 -0
- rasa/cli/__init__.py +5 -0
- rasa/cli/arguments/__init__.py +0 -0
- rasa/cli/arguments/data.py +81 -0
- rasa/cli/arguments/default_arguments.py +165 -0
- rasa/cli/arguments/evaluate.py +65 -0
- rasa/cli/arguments/export.py +51 -0
- rasa/cli/arguments/interactive.py +74 -0
- rasa/cli/arguments/run.py +204 -0
- rasa/cli/arguments/shell.py +13 -0
- rasa/cli/arguments/test.py +211 -0
- rasa/cli/arguments/train.py +263 -0
- rasa/cli/arguments/visualize.py +34 -0
- rasa/cli/arguments/x.py +30 -0
- rasa/cli/data.py +292 -0
- rasa/cli/e2e_test.py +586 -0
- rasa/cli/evaluate.py +222 -0
- rasa/cli/export.py +250 -0
- rasa/cli/inspect.py +63 -0
- rasa/cli/interactive.py +164 -0
- rasa/cli/license.py +65 -0
- rasa/cli/markers.py +78 -0
- rasa/cli/project_templates/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/action_template.py +27 -0
- rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
- rasa/cli/project_templates/calm/actions/db.py +57 -0
- rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
- rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
- rasa/cli/project_templates/calm/config.yml +12 -0
- rasa/cli/project_templates/calm/credentials.yml +33 -0
- rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
- rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
- rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
- rasa/cli/project_templates/calm/db/contacts.json +10 -0
- rasa/cli/project_templates/calm/domain/add_contact.yml +39 -0
- rasa/cli/project_templates/calm/domain/list_contacts.yml +17 -0
- rasa/cli/project_templates/calm/domain/remove_contact.yml +38 -0
- rasa/cli/project_templates/calm/domain/shared.yml +10 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
- rasa/cli/project_templates/calm/endpoints.yml +45 -0
- rasa/cli/project_templates/default/actions/__init__.py +0 -0
- rasa/cli/project_templates/default/actions/actions.py +27 -0
- rasa/cli/project_templates/default/config.yml +44 -0
- rasa/cli/project_templates/default/credentials.yml +33 -0
- rasa/cli/project_templates/default/data/nlu.yml +91 -0
- rasa/cli/project_templates/default/data/rules.yml +13 -0
- rasa/cli/project_templates/default/data/stories.yml +30 -0
- rasa/cli/project_templates/default/domain.yml +34 -0
- rasa/cli/project_templates/default/endpoints.yml +42 -0
- rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
- rasa/cli/project_templates/tutorial/actions.py +22 -0
- rasa/cli/project_templates/tutorial/config.yml +11 -0
- rasa/cli/project_templates/tutorial/credentials.yml +33 -0
- rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
- rasa/cli/project_templates/tutorial/data/patterns.yml +6 -0
- rasa/cli/project_templates/tutorial/domain.yml +21 -0
- rasa/cli/project_templates/tutorial/endpoints.yml +45 -0
- rasa/cli/run.py +135 -0
- rasa/cli/scaffold.py +269 -0
- rasa/cli/shell.py +141 -0
- rasa/cli/studio/__init__.py +0 -0
- rasa/cli/studio/download.py +62 -0
- rasa/cli/studio/studio.py +266 -0
- rasa/cli/studio/train.py +59 -0
- rasa/cli/studio/upload.py +77 -0
- rasa/cli/telemetry.py +102 -0
- rasa/cli/test.py +280 -0
- rasa/cli/train.py +260 -0
- rasa/cli/utils.py +464 -0
- rasa/cli/visualize.py +40 -0
- rasa/cli/x.py +206 -0
- rasa/constants.py +37 -0
- rasa/core/__init__.py +17 -0
- rasa/core/actions/__init__.py +0 -0
- rasa/core/actions/action.py +1225 -0
- rasa/core/actions/action_clean_stack.py +59 -0
- rasa/core/actions/action_exceptions.py +24 -0
- rasa/core/actions/action_run_slot_rejections.py +207 -0
- rasa/core/actions/action_trigger_chitchat.py +31 -0
- rasa/core/actions/action_trigger_flow.py +109 -0
- rasa/core/actions/action_trigger_search.py +31 -0
- rasa/core/actions/constants.py +5 -0
- rasa/core/actions/custom_action_executor.py +188 -0
- rasa/core/actions/forms.py +741 -0
- rasa/core/actions/grpc_custom_action_executor.py +251 -0
- rasa/core/actions/http_custom_action_executor.py +140 -0
- rasa/core/actions/loops.py +114 -0
- rasa/core/actions/two_stage_fallback.py +186 -0
- rasa/core/agent.py +555 -0
- rasa/core/auth_retry_tracker_store.py +122 -0
- rasa/core/brokers/__init__.py +0 -0
- rasa/core/brokers/broker.py +126 -0
- rasa/core/brokers/file.py +58 -0
- rasa/core/brokers/kafka.py +322 -0
- rasa/core/brokers/pika.py +386 -0
- rasa/core/brokers/sql.py +86 -0
- rasa/core/channels/__init__.py +55 -0
- rasa/core/channels/audiocodes.py +463 -0
- rasa/core/channels/botframework.py +338 -0
- rasa/core/channels/callback.py +84 -0
- rasa/core/channels/channel.py +419 -0
- rasa/core/channels/console.py +241 -0
- rasa/core/channels/development_inspector.py +93 -0
- rasa/core/channels/facebook.py +419 -0
- rasa/core/channels/hangouts.py +329 -0
- rasa/core/channels/inspector/.eslintrc.cjs +25 -0
- rasa/core/channels/inspector/.gitignore +23 -0
- rasa/core/channels/inspector/README.md +54 -0
- rasa/core/channels/inspector/assets/favicon.ico +0 -0
- rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
- rasa/core/channels/inspector/custom.d.ts +3 -0
- rasa/core/channels/inspector/dist/assets/arc-b6e548fe.js +1 -0
- rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
- rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-fa03ac9e.js +10 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-ee67392a.js +2 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-9b283fae.js +2 -0
- rasa/core/channels/inspector/dist/assets/createText-62fc7601-8b6fcc2a.js +7 -0
- rasa/core/channels/inspector/dist/assets/edges-f2ad444c-22e77f4f.js +4 -0
- rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-60ffc87f.js +51 -0
- rasa/core/channels/inspector/dist/assets/flowDb-1972c806-9dd802e4.js +6 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-5fa1912f.js +4 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-1844e5a5.js +1 -0
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-622a1fd2.js +139 -0
- rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-e285a63a.js +266 -0
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-f237bdca.js +70 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-4b03d70e.js +1 -0
- rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
- rasa/core/channels/inspector/dist/assets/index-a5d3e69d.js +1040 -0
- rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-72a0fa5f.js +7 -0
- rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
- rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-82218c41.js +139 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
- rasa/core/channels/inspector/dist/assets/layout-78cff630.js +1 -0
- rasa/core/channels/inspector/dist/assets/line-5038b469.js +1 -0
- rasa/core/channels/inspector/dist/assets/linear-c4fc4098.js +1 -0
- rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-c33c8ea6.js +109 -0
- rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
- rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
- rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-a8d03059.js +35 -0
- rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-6a0e56b2.js +7 -0
- rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-2dc7c7bd.js +52 -0
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-2360fe39.js +8 -0
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-41b9f9ad.js +122 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-0aad326f.js +1 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-9847d984.js +1 -0
- rasa/core/channels/inspector/dist/assets/styles-080da4f6-564d890e.js +110 -0
- rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-38957613.js +159 -0
- rasa/core/channels/inspector/dist/assets/styles-9c745c82-f0fc6921.js +207 -0
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-ef3c5a77.js +1 -0
- rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-bf3e91c1.js +61 -0
- rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-4d4026c0.js +7 -0
- rasa/core/channels/inspector/dist/index.html +41 -0
- rasa/core/channels/inspector/index.html +39 -0
- rasa/core/channels/inspector/jest.config.ts +13 -0
- rasa/core/channels/inspector/package.json +48 -0
- rasa/core/channels/inspector/setupTests.ts +2 -0
- rasa/core/channels/inspector/src/App.tsx +170 -0
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +107 -0
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +151 -0
- rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
- rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
- rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +19 -0
- rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
- rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
- rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
- rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
- rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +382 -0
- rasa/core/channels/inspector/src/helpers/formatters.ts +240 -0
- rasa/core/channels/inspector/src/helpers/utils.ts +42 -0
- rasa/core/channels/inspector/src/main.tsx +13 -0
- rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
- rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
- rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
- rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
- rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
- rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
- rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
- rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
- rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
- rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
- rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
- rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
- rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
- rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
- rasa/core/channels/inspector/src/theme/index.ts +101 -0
- rasa/core/channels/inspector/src/types.ts +64 -0
- rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
- rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
- rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
- rasa/core/channels/inspector/tsconfig.json +26 -0
- rasa/core/channels/inspector/tsconfig.node.json +10 -0
- rasa/core/channels/inspector/vite.config.ts +8 -0
- rasa/core/channels/inspector/yarn.lock +6156 -0
- rasa/core/channels/mattermost.py +229 -0
- rasa/core/channels/rasa_chat.py +126 -0
- rasa/core/channels/rest.py +225 -0
- rasa/core/channels/rocketchat.py +174 -0
- rasa/core/channels/slack.py +620 -0
- rasa/core/channels/socketio.py +274 -0
- rasa/core/channels/telegram.py +298 -0
- rasa/core/channels/twilio.py +169 -0
- rasa/core/channels/twilio_voice.py +367 -0
- rasa/core/channels/vier_cvg.py +374 -0
- rasa/core/channels/webexteams.py +134 -0
- rasa/core/concurrent_lock_store.py +210 -0
- rasa/core/constants.py +107 -0
- rasa/core/evaluation/__init__.py +0 -0
- rasa/core/evaluation/marker.py +267 -0
- rasa/core/evaluation/marker_base.py +923 -0
- rasa/core/evaluation/marker_stats.py +293 -0
- rasa/core/evaluation/marker_tracker_loader.py +103 -0
- rasa/core/exceptions.py +29 -0
- rasa/core/exporter.py +284 -0
- rasa/core/featurizers/__init__.py +0 -0
- rasa/core/featurizers/precomputation.py +410 -0
- rasa/core/featurizers/single_state_featurizer.py +421 -0
- rasa/core/featurizers/tracker_featurizers.py +1262 -0
- rasa/core/http_interpreter.py +89 -0
- rasa/core/information_retrieval/__init__.py +7 -0
- rasa/core/information_retrieval/faiss.py +121 -0
- rasa/core/information_retrieval/information_retrieval.py +129 -0
- rasa/core/information_retrieval/milvus.py +52 -0
- rasa/core/information_retrieval/qdrant.py +95 -0
- rasa/core/jobs.py +63 -0
- rasa/core/lock.py +139 -0
- rasa/core/lock_store.py +343 -0
- rasa/core/migrate.py +403 -0
- rasa/core/nlg/__init__.py +3 -0
- rasa/core/nlg/callback.py +146 -0
- rasa/core/nlg/contextual_response_rephraser.py +270 -0
- rasa/core/nlg/generator.py +230 -0
- rasa/core/nlg/interpolator.py +143 -0
- rasa/core/nlg/response.py +155 -0
- rasa/core/nlg/summarize.py +69 -0
- rasa/core/policies/__init__.py +0 -0
- rasa/core/policies/ensemble.py +329 -0
- rasa/core/policies/enterprise_search_policy.py +781 -0
- rasa/core/policies/enterprise_search_prompt_template.jinja2 +25 -0
- rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
- rasa/core/policies/flow_policy.py +205 -0
- rasa/core/policies/flows/__init__.py +0 -0
- rasa/core/policies/flows/flow_exceptions.py +44 -0
- rasa/core/policies/flows/flow_executor.py +705 -0
- rasa/core/policies/flows/flow_step_result.py +43 -0
- rasa/core/policies/intentless_policy.py +922 -0
- rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
- rasa/core/policies/memoization.py +538 -0
- rasa/core/policies/policy.py +725 -0
- rasa/core/policies/rule_policy.py +1273 -0
- rasa/core/policies/ted_policy.py +2169 -0
- rasa/core/policies/unexpected_intent_policy.py +1022 -0
- rasa/core/processor.py +1422 -0
- rasa/core/run.py +331 -0
- rasa/core/secrets_manager/__init__.py +0 -0
- rasa/core/secrets_manager/constants.py +32 -0
- rasa/core/secrets_manager/endpoints.py +391 -0
- rasa/core/secrets_manager/factory.py +233 -0
- rasa/core/secrets_manager/secret_manager.py +262 -0
- rasa/core/secrets_manager/vault.py +574 -0
- rasa/core/test.py +1335 -0
- rasa/core/tracker_store.py +1699 -0
- rasa/core/train.py +105 -0
- rasa/core/training/__init__.py +89 -0
- rasa/core/training/converters/__init__.py +0 -0
- rasa/core/training/converters/responses_prefix_converter.py +119 -0
- rasa/core/training/interactive.py +1745 -0
- rasa/core/training/story_conflict.py +381 -0
- rasa/core/training/training.py +93 -0
- rasa/core/utils.py +339 -0
- rasa/core/visualize.py +70 -0
- rasa/dialogue_understanding/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/constants.py +4 -0
- rasa/dialogue_understanding/coexistence/intent_based_router.py +196 -0
- rasa/dialogue_understanding/coexistence/llm_based_router.py +260 -0
- rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
- rasa/dialogue_understanding/commands/__init__.py +49 -0
- rasa/dialogue_understanding/commands/can_not_handle_command.py +70 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +125 -0
- rasa/dialogue_understanding/commands/change_flow_command.py +44 -0
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/clarify_command.py +86 -0
- rasa/dialogue_understanding/commands/command.py +85 -0
- rasa/dialogue_understanding/commands/correct_slots_command.py +297 -0
- rasa/dialogue_understanding/commands/error_command.py +79 -0
- rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
- rasa/dialogue_understanding/commands/handle_code_change_command.py +73 -0
- rasa/dialogue_understanding/commands/human_handoff_command.py +66 -0
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/noop_command.py +54 -0
- rasa/dialogue_understanding/commands/set_slot_command.py +160 -0
- rasa/dialogue_understanding/commands/skip_question_command.py +75 -0
- rasa/dialogue_understanding/commands/start_flow_command.py +107 -0
- rasa/dialogue_understanding/generator/__init__.py +21 -0
- rasa/dialogue_understanding/generator/command_generator.py +343 -0
- rasa/dialogue_understanding/generator/constants.py +18 -0
- rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +412 -0
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +467 -0
- rasa/dialogue_understanding/generator/llm_command_generator.py +67 -0
- rasa/dialogue_understanding/generator/multi_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2 +62 -0
- rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2 +38 -0
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +827 -0
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +218 -0
- rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +57 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +345 -0
- rasa/dialogue_understanding/patterns/__init__.py +0 -0
- rasa/dialogue_understanding/patterns/cancel.py +111 -0
- rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
- rasa/dialogue_understanding/patterns/chitchat.py +37 -0
- rasa/dialogue_understanding/patterns/clarify.py +97 -0
- rasa/dialogue_understanding/patterns/code_change.py +41 -0
- rasa/dialogue_understanding/patterns/collect_information.py +90 -0
- rasa/dialogue_understanding/patterns/completed.py +40 -0
- rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
- rasa/dialogue_understanding/patterns/correction.py +278 -0
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +248 -0
- rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
- rasa/dialogue_understanding/patterns/internal_error.py +47 -0
- rasa/dialogue_understanding/patterns/search.py +37 -0
- rasa/dialogue_understanding/patterns/skip_question.py +38 -0
- rasa/dialogue_understanding/processor/__init__.py +0 -0
- rasa/dialogue_understanding/processor/command_processor.py +687 -0
- rasa/dialogue_understanding/processor/command_processor_component.py +39 -0
- rasa/dialogue_understanding/stack/__init__.py +0 -0
- rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
- rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
- rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
- rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
- rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
- rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
- rasa/dialogue_understanding/stack/utils.py +211 -0
- rasa/e2e_test/__init__.py +0 -0
- rasa/e2e_test/constants.py +11 -0
- rasa/e2e_test/e2e_test_case.py +366 -0
- rasa/e2e_test/e2e_test_result.py +34 -0
- rasa/e2e_test/e2e_test_runner.py +768 -0
- rasa/e2e_test/e2e_test_schema.yml +85 -0
- rasa/engine/__init__.py +0 -0
- rasa/engine/caching.py +463 -0
- rasa/engine/constants.py +17 -0
- rasa/engine/exceptions.py +14 -0
- rasa/engine/graph.py +637 -0
- rasa/engine/loader.py +36 -0
- rasa/engine/recipes/__init__.py +0 -0
- rasa/engine/recipes/config_files/default_config.yml +44 -0
- rasa/engine/recipes/default_components.py +99 -0
- rasa/engine/recipes/default_recipe.py +1251 -0
- rasa/engine/recipes/graph_recipe.py +79 -0
- rasa/engine/recipes/recipe.py +93 -0
- rasa/engine/runner/__init__.py +0 -0
- rasa/engine/runner/dask.py +250 -0
- rasa/engine/runner/interface.py +49 -0
- rasa/engine/storage/__init__.py +0 -0
- rasa/engine/storage/local_model_storage.py +246 -0
- rasa/engine/storage/resource.py +110 -0
- rasa/engine/storage/storage.py +203 -0
- rasa/engine/training/__init__.py +0 -0
- rasa/engine/training/components.py +176 -0
- rasa/engine/training/fingerprinting.py +64 -0
- rasa/engine/training/graph_trainer.py +256 -0
- rasa/engine/training/hooks.py +164 -0
- rasa/engine/validation.py +873 -0
- rasa/env.py +5 -0
- rasa/exceptions.py +69 -0
- rasa/graph_components/__init__.py +0 -0
- rasa/graph_components/converters/__init__.py +0 -0
- rasa/graph_components/converters/nlu_message_converter.py +48 -0
- rasa/graph_components/providers/__init__.py +0 -0
- rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
- rasa/graph_components/providers/domain_provider.py +71 -0
- rasa/graph_components/providers/flows_provider.py +74 -0
- rasa/graph_components/providers/forms_provider.py +44 -0
- rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
- rasa/graph_components/providers/responses_provider.py +44 -0
- rasa/graph_components/providers/rule_only_provider.py +49 -0
- rasa/graph_components/providers/story_graph_provider.py +43 -0
- rasa/graph_components/providers/training_tracker_provider.py +55 -0
- rasa/graph_components/validators/__init__.py +0 -0
- rasa/graph_components/validators/default_recipe_validator.py +550 -0
- rasa/graph_components/validators/finetuning_validator.py +302 -0
- rasa/hooks.py +112 -0
- rasa/jupyter.py +63 -0
- rasa/markers/__init__.py +0 -0
- rasa/markers/marker.py +269 -0
- rasa/markers/marker_base.py +828 -0
- rasa/markers/upload.py +74 -0
- rasa/markers/validate.py +21 -0
- rasa/model.py +118 -0
- rasa/model_testing.py +457 -0
- rasa/model_training.py +536 -0
- rasa/nlu/__init__.py +7 -0
- rasa/nlu/classifiers/__init__.py +3 -0
- rasa/nlu/classifiers/classifier.py +5 -0
- rasa/nlu/classifiers/diet_classifier.py +1881 -0
- rasa/nlu/classifiers/fallback_classifier.py +192 -0
- rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
- rasa/nlu/classifiers/llm_intent_classifier.py +519 -0
- rasa/nlu/classifiers/logistic_regression_classifier.py +253 -0
- rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
- rasa/nlu/classifiers/regex_message_handler.py +56 -0
- rasa/nlu/classifiers/sklearn_intent_classifier.py +330 -0
- rasa/nlu/constants.py +77 -0
- rasa/nlu/convert.py +40 -0
- rasa/nlu/emulators/__init__.py +0 -0
- rasa/nlu/emulators/dialogflow.py +55 -0
- rasa/nlu/emulators/emulator.py +49 -0
- rasa/nlu/emulators/luis.py +86 -0
- rasa/nlu/emulators/no_emulator.py +10 -0
- rasa/nlu/emulators/wit.py +56 -0
- rasa/nlu/extractors/__init__.py +0 -0
- rasa/nlu/extractors/crf_entity_extractor.py +715 -0
- rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
- rasa/nlu/extractors/entity_synonyms.py +178 -0
- rasa/nlu/extractors/extractor.py +470 -0
- rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
- rasa/nlu/extractors/regex_entity_extractor.py +220 -0
- rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
- rasa/nlu/featurizers/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +445 -0
- rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +768 -0
- rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
- rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
- rasa/nlu/featurizers/featurizer.py +89 -0
- rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +867 -0
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +571 -0
- rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +271 -0
- rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
- rasa/nlu/model.py +24 -0
- rasa/nlu/persistor.py +282 -0
- rasa/nlu/run.py +27 -0
- rasa/nlu/selectors/__init__.py +0 -0
- rasa/nlu/selectors/response_selector.py +987 -0
- rasa/nlu/test.py +1940 -0
- rasa/nlu/tokenizers/__init__.py +0 -0
- rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
- rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
- rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
- rasa/nlu/tokenizers/tokenizer.py +239 -0
- rasa/nlu/tokenizers/whitespace_tokenizer.py +106 -0
- rasa/nlu/utils/__init__.py +35 -0
- rasa/nlu/utils/bilou_utils.py +462 -0
- rasa/nlu/utils/hugging_face/__init__.py +0 -0
- rasa/nlu/utils/hugging_face/registry.py +108 -0
- rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
- rasa/nlu/utils/mitie_utils.py +113 -0
- rasa/nlu/utils/pattern_utils.py +168 -0
- rasa/nlu/utils/spacy_utils.py +310 -0
- rasa/plugin.py +90 -0
- rasa/server.py +1551 -0
- rasa/shared/__init__.py +0 -0
- rasa/shared/constants.py +192 -0
- rasa/shared/core/__init__.py +0 -0
- rasa/shared/core/command_payload_reader.py +109 -0
- rasa/shared/core/constants.py +167 -0
- rasa/shared/core/conversation.py +46 -0
- rasa/shared/core/domain.py +2107 -0
- rasa/shared/core/events.py +2504 -0
- rasa/shared/core/flows/__init__.py +7 -0
- rasa/shared/core/flows/flow.py +362 -0
- rasa/shared/core/flows/flow_step.py +146 -0
- rasa/shared/core/flows/flow_step_links.py +319 -0
- rasa/shared/core/flows/flow_step_sequence.py +70 -0
- rasa/shared/core/flows/flows_list.py +223 -0
- rasa/shared/core/flows/flows_yaml_schema.json +217 -0
- rasa/shared/core/flows/nlu_trigger.py +117 -0
- rasa/shared/core/flows/steps/__init__.py +24 -0
- rasa/shared/core/flows/steps/action.py +56 -0
- rasa/shared/core/flows/steps/call.py +64 -0
- rasa/shared/core/flows/steps/collect.py +112 -0
- rasa/shared/core/flows/steps/constants.py +5 -0
- rasa/shared/core/flows/steps/continuation.py +36 -0
- rasa/shared/core/flows/steps/end.py +22 -0
- rasa/shared/core/flows/steps/internal.py +44 -0
- rasa/shared/core/flows/steps/link.py +51 -0
- rasa/shared/core/flows/steps/no_operation.py +48 -0
- rasa/shared/core/flows/steps/set_slots.py +50 -0
- rasa/shared/core/flows/steps/start.py +30 -0
- rasa/shared/core/flows/validation.py +527 -0
- rasa/shared/core/flows/yaml_flows_io.py +278 -0
- rasa/shared/core/generator.py +908 -0
- rasa/shared/core/slot_mappings.py +526 -0
- rasa/shared/core/slots.py +649 -0
- rasa/shared/core/trackers.py +1177 -0
- rasa/shared/core/training_data/__init__.py +0 -0
- rasa/shared/core/training_data/loading.py +89 -0
- rasa/shared/core/training_data/story_reader/__init__.py +0 -0
- rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
- rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
- rasa/shared/core/training_data/story_writer/__init__.py +0 -0
- rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
- rasa/shared/core/training_data/story_writer/yaml_story_writer.py +444 -0
- rasa/shared/core/training_data/structures.py +838 -0
- rasa/shared/core/training_data/visualization.html +146 -0
- rasa/shared/core/training_data/visualization.py +603 -0
- rasa/shared/data.py +249 -0
- rasa/shared/engine/__init__.py +0 -0
- rasa/shared/engine/caching.py +26 -0
- rasa/shared/exceptions.py +163 -0
- rasa/shared/importers/__init__.py +0 -0
- rasa/shared/importers/importer.py +704 -0
- rasa/shared/importers/multi_project.py +203 -0
- rasa/shared/importers/rasa.py +99 -0
- rasa/shared/importers/utils.py +34 -0
- rasa/shared/nlu/__init__.py +0 -0
- rasa/shared/nlu/constants.py +47 -0
- rasa/shared/nlu/interpreter.py +10 -0
- rasa/shared/nlu/training_data/__init__.py +0 -0
- rasa/shared/nlu/training_data/entities_parser.py +208 -0
- rasa/shared/nlu/training_data/features.py +492 -0
- rasa/shared/nlu/training_data/formats/__init__.py +10 -0
- rasa/shared/nlu/training_data/formats/dialogflow.py +163 -0
- rasa/shared/nlu/training_data/formats/luis.py +87 -0
- rasa/shared/nlu/training_data/formats/rasa.py +135 -0
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +603 -0
- rasa/shared/nlu/training_data/formats/readerwriter.py +244 -0
- rasa/shared/nlu/training_data/formats/wit.py +52 -0
- rasa/shared/nlu/training_data/loading.py +137 -0
- rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
- rasa/shared/nlu/training_data/message.py +490 -0
- rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
- rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
- rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
- rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
- rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
- rasa/shared/nlu/training_data/training_data.py +730 -0
- rasa/shared/nlu/training_data/util.py +223 -0
- rasa/shared/providers/__init__.py +0 -0
- rasa/shared/providers/openai/__init__.py +0 -0
- rasa/shared/providers/openai/clients.py +43 -0
- rasa/shared/providers/openai/session_handler.py +110 -0
- rasa/shared/utils/__init__.py +0 -0
- rasa/shared/utils/cli.py +72 -0
- rasa/shared/utils/common.py +308 -0
- rasa/shared/utils/constants.py +4 -0
- rasa/shared/utils/io.py +415 -0
- rasa/shared/utils/llm.py +404 -0
- rasa/shared/utils/pykwalify_extensions.py +27 -0
- rasa/shared/utils/schemas/__init__.py +0 -0
- rasa/shared/utils/schemas/config.yml +2 -0
- rasa/shared/utils/schemas/domain.yml +145 -0
- rasa/shared/utils/schemas/events.py +212 -0
- rasa/shared/utils/schemas/model_config.yml +46 -0
- rasa/shared/utils/schemas/stories.yml +173 -0
- rasa/shared/utils/yaml.py +786 -0
- rasa/studio/__init__.py +0 -0
- rasa/studio/auth.py +268 -0
- rasa/studio/config.py +127 -0
- rasa/studio/constants.py +18 -0
- rasa/studio/data_handler.py +359 -0
- rasa/studio/download.py +483 -0
- rasa/studio/results_logger.py +137 -0
- rasa/studio/train.py +135 -0
- rasa/studio/upload.py +433 -0
- rasa/telemetry.py +1737 -0
- rasa/tracing/__init__.py +0 -0
- rasa/tracing/config.py +353 -0
- rasa/tracing/constants.py +62 -0
- rasa/tracing/instrumentation/__init__.py +0 -0
- rasa/tracing/instrumentation/attribute_extractors.py +672 -0
- rasa/tracing/instrumentation/instrumentation.py +1185 -0
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +144 -0
- rasa/tracing/instrumentation/metrics.py +294 -0
- rasa/tracing/metric_instrument_provider.py +205 -0
- rasa/utils/__init__.py +0 -0
- rasa/utils/beta.py +83 -0
- rasa/utils/cli.py +28 -0
- rasa/utils/common.py +635 -0
- rasa/utils/converter.py +53 -0
- rasa/utils/endpoints.py +302 -0
- rasa/utils/io.py +260 -0
- rasa/utils/licensing.py +534 -0
- rasa/utils/log_utils.py +174 -0
- rasa/utils/mapper.py +210 -0
- rasa/utils/ml_utils.py +145 -0
- rasa/utils/plotting.py +362 -0
- rasa/utils/singleton.py +23 -0
- rasa/utils/tensorflow/__init__.py +0 -0
- rasa/utils/tensorflow/callback.py +112 -0
- rasa/utils/tensorflow/constants.py +116 -0
- rasa/utils/tensorflow/crf.py +492 -0
- rasa/utils/tensorflow/data_generator.py +440 -0
- rasa/utils/tensorflow/environment.py +161 -0
- rasa/utils/tensorflow/exceptions.py +5 -0
- rasa/utils/tensorflow/feature_array.py +366 -0
- rasa/utils/tensorflow/layers.py +1565 -0
- rasa/utils/tensorflow/layers_utils.py +113 -0
- rasa/utils/tensorflow/metrics.py +281 -0
- rasa/utils/tensorflow/model_data.py +798 -0
- rasa/utils/tensorflow/model_data_utils.py +499 -0
- rasa/utils/tensorflow/models.py +935 -0
- rasa/utils/tensorflow/rasa_layers.py +1094 -0
- rasa/utils/tensorflow/transformer.py +640 -0
- rasa/utils/tensorflow/types.py +6 -0
- rasa/utils/train_utils.py +572 -0
- rasa/utils/url_tools.py +53 -0
- rasa/utils/yaml.py +54 -0
- rasa/validator.py +1337 -0
- rasa/version.py +3 -0
- rasa_pro-3.9.18.dist-info/METADATA +563 -0
- rasa_pro-3.9.18.dist-info/NOTICE +5 -0
- rasa_pro-3.9.18.dist-info/RECORD +662 -0
- rasa_pro-3.9.18.dist-info/WHEEL +4 -0
- rasa_pro-3.9.18.dist-info/entry_points.txt +3 -0
rasa/utils/plotting.py
ADDED
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import itertools
|
|
3
|
+
import os
|
|
4
|
+
from functools import wraps
|
|
5
|
+
|
|
6
|
+
import numpy as np
|
|
7
|
+
from typing import Any, Callable, List, Optional, Text, TypeVar, Union, Tuple
|
|
8
|
+
import matplotlib
|
|
9
|
+
from matplotlib.ticker import FormatStrFormatter
|
|
10
|
+
|
|
11
|
+
import rasa.shared.utils.io
|
|
12
|
+
from rasa.constants import RESULTS_FILE
|
|
13
|
+
|
|
14
|
+
logger = logging.getLogger(__name__)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _fix_matplotlib_backend() -> None:
|
|
18
|
+
"""Tries to fix a broken matplotlib backend."""
|
|
19
|
+
try:
|
|
20
|
+
backend = matplotlib.get_backend()
|
|
21
|
+
except Exception: # skipcq:PYL-W0703
|
|
22
|
+
logger.error(
|
|
23
|
+
"Cannot retrieve Matplotlib backend, likely due to a compatibility "
|
|
24
|
+
"issue with system dependencies. Please refer to the documentation: "
|
|
25
|
+
"https://matplotlib.org/stable/tutorials/introductory/usage.html#backends"
|
|
26
|
+
)
|
|
27
|
+
raise
|
|
28
|
+
|
|
29
|
+
# At first, matplotlib will be initialized with default OS-specific
|
|
30
|
+
# available backend
|
|
31
|
+
if backend == "TkAgg":
|
|
32
|
+
try:
|
|
33
|
+
# on OSX sometimes the tkinter package is broken and can't be imported.
|
|
34
|
+
# we'll try to import it and if it fails we will use a different backend
|
|
35
|
+
import tkinter
|
|
36
|
+
except (ImportError, ModuleNotFoundError):
|
|
37
|
+
logger.debug("Setting matplotlib backend to 'agg'")
|
|
38
|
+
matplotlib.use("agg")
|
|
39
|
+
|
|
40
|
+
# if no backend is set by default, we'll try to set it up manually
|
|
41
|
+
elif backend is None: # pragma: no cover
|
|
42
|
+
try:
|
|
43
|
+
# If the `tkinter` package is available, we can use the `TkAgg` backend
|
|
44
|
+
import tkinter # noqa: F401
|
|
45
|
+
|
|
46
|
+
logger.debug("Setting matplotlib backend to 'TkAgg'")
|
|
47
|
+
matplotlib.use("TkAgg")
|
|
48
|
+
except (ImportError, ModuleNotFoundError):
|
|
49
|
+
logger.debug("Setting matplotlib backend to 'agg'")
|
|
50
|
+
matplotlib.use("agg")
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
ReturnType = TypeVar("ReturnType")
|
|
54
|
+
FuncType = Callable[..., ReturnType]
|
|
55
|
+
_MATPLOTLIB_BACKEND_FIXED = False
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _needs_matplotlib_backend(func: FuncType) -> FuncType:
|
|
59
|
+
"""Decorator to fix matplotlib backend before calling a function."""
|
|
60
|
+
|
|
61
|
+
@wraps(func)
|
|
62
|
+
def inner(*args: Any, **kwargs: Any) -> ReturnType: # type: ignore
|
|
63
|
+
"""Replacement function that fixes matplotlib backend."""
|
|
64
|
+
global _MATPLOTLIB_BACKEND_FIXED
|
|
65
|
+
if not _MATPLOTLIB_BACKEND_FIXED:
|
|
66
|
+
_fix_matplotlib_backend()
|
|
67
|
+
_MATPLOTLIB_BACKEND_FIXED = True
|
|
68
|
+
return func(*args, **kwargs)
|
|
69
|
+
|
|
70
|
+
return inner
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@_needs_matplotlib_backend
|
|
74
|
+
def plot_confusion_matrix(
|
|
75
|
+
confusion_matrix: np.ndarray,
|
|
76
|
+
classes: Union[np.ndarray, List[Text]],
|
|
77
|
+
normalize: bool = False,
|
|
78
|
+
title: Text = "Confusion matrix",
|
|
79
|
+
color_map: Any = None,
|
|
80
|
+
zmin: int = 1,
|
|
81
|
+
output_file: Optional[Text] = None,
|
|
82
|
+
) -> None:
|
|
83
|
+
"""Print and plot the provided confusion matrix.
|
|
84
|
+
Normalization can be applied by setting `normalize=True`.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
confusion_matrix: confusion matrix to plot
|
|
88
|
+
classes: class labels
|
|
89
|
+
normalize: If set to true, normalization will be applied.
|
|
90
|
+
title: title of the plot
|
|
91
|
+
color_map: color mapping
|
|
92
|
+
zmin:
|
|
93
|
+
output_file: output file to save plot to
|
|
94
|
+
|
|
95
|
+
"""
|
|
96
|
+
import matplotlib.pyplot as plt
|
|
97
|
+
from matplotlib.colors import LogNorm
|
|
98
|
+
|
|
99
|
+
zmax = confusion_matrix.max() if len(confusion_matrix) > 0 else 1
|
|
100
|
+
plt.clf()
|
|
101
|
+
if not color_map:
|
|
102
|
+
color_map = plt.cm.Blues
|
|
103
|
+
plt.imshow(
|
|
104
|
+
confusion_matrix,
|
|
105
|
+
interpolation="nearest",
|
|
106
|
+
cmap=color_map,
|
|
107
|
+
aspect="auto",
|
|
108
|
+
norm=LogNorm(vmin=zmin, vmax=zmax),
|
|
109
|
+
)
|
|
110
|
+
plt.title(title)
|
|
111
|
+
plt.colorbar()
|
|
112
|
+
tick_marks = np.arange(len(classes))
|
|
113
|
+
plt.xticks(tick_marks, classes, rotation=90)
|
|
114
|
+
plt.yticks(tick_marks, classes)
|
|
115
|
+
|
|
116
|
+
if normalize:
|
|
117
|
+
confusion_matrix = (
|
|
118
|
+
confusion_matrix.astype("float")
|
|
119
|
+
/ confusion_matrix.sum(axis=1)[:, np.newaxis]
|
|
120
|
+
)
|
|
121
|
+
logger.info(f"Normalized confusion matrix: \n{confusion_matrix}")
|
|
122
|
+
else:
|
|
123
|
+
logger.info(f"Confusion matrix, without normalization: \n{confusion_matrix}")
|
|
124
|
+
|
|
125
|
+
thresh = zmax / 2.0
|
|
126
|
+
for i, j in itertools.product(
|
|
127
|
+
range(confusion_matrix.shape[0]), range(confusion_matrix.shape[1])
|
|
128
|
+
):
|
|
129
|
+
plt.text(
|
|
130
|
+
j,
|
|
131
|
+
i,
|
|
132
|
+
confusion_matrix[i, j],
|
|
133
|
+
horizontalalignment="center",
|
|
134
|
+
color="white" if confusion_matrix[i, j] > thresh else "black",
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
plt.ylabel("True label")
|
|
138
|
+
plt.xlabel("Predicted label")
|
|
139
|
+
|
|
140
|
+
# save confusion matrix to file before showing it
|
|
141
|
+
if output_file:
|
|
142
|
+
fig = plt.gcf()
|
|
143
|
+
fig.set_size_inches(20, 20)
|
|
144
|
+
fig.savefig(output_file, bbox_inches="tight")
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def _extract_paired_histogram_specification(
|
|
148
|
+
histogram_data: List[List[float]],
|
|
149
|
+
num_bins: int,
|
|
150
|
+
density: bool,
|
|
151
|
+
x_pad_fraction: float,
|
|
152
|
+
y_pad_fraction: float,
|
|
153
|
+
) -> Tuple[List[float], List[List[float]], List[float], Tuple[float, float]]:
|
|
154
|
+
"""Extracts all information from the data needed to plot a paired histogram.
|
|
155
|
+
|
|
156
|
+
Args:
|
|
157
|
+
histogram_data: Two data vectors
|
|
158
|
+
num_bins: Number of bins to be used for the histogram
|
|
159
|
+
density: If true, generate information for a probability density histogram
|
|
160
|
+
x_pad_fraction: Percentage of extra space in the horizontal direction
|
|
161
|
+
y_pad_fraction: Percentage of extra space in the vertical direction
|
|
162
|
+
|
|
163
|
+
Returns:
|
|
164
|
+
The bins, values, ranges of either x-axis, and the range of the y-axis
|
|
165
|
+
|
|
166
|
+
Raises:
|
|
167
|
+
ValueError: If histogram_data does not contain values.
|
|
168
|
+
"""
|
|
169
|
+
if not histogram_data or not np.concatenate(histogram_data).size:
|
|
170
|
+
rasa.shared.utils.io.raise_warning("No data to plot paired histogram.")
|
|
171
|
+
raise ValueError("No data to plot paired histogram.")
|
|
172
|
+
min_data_value: float = np.min(np.concatenate(histogram_data))
|
|
173
|
+
max_data_value: float = np.max(np.concatenate(histogram_data))
|
|
174
|
+
bin_width = (max_data_value - min_data_value) / num_bins
|
|
175
|
+
bins = [
|
|
176
|
+
min_data_value + i * bin_width
|
|
177
|
+
# `bins` describes the _boundaries_ of the bins, so we need
|
|
178
|
+
# 2 extra - one at the beginning and one at the end
|
|
179
|
+
for i in range(num_bins + 2)
|
|
180
|
+
]
|
|
181
|
+
histograms = [
|
|
182
|
+
# A list of counts - how often a value in `data` falls into a particular bin
|
|
183
|
+
list(np.histogram(data, bins=bins, density=density)[0])
|
|
184
|
+
for data in histogram_data
|
|
185
|
+
]
|
|
186
|
+
|
|
187
|
+
y_padding = 0.5 * bin_width + y_pad_fraction * bin_width
|
|
188
|
+
|
|
189
|
+
if density:
|
|
190
|
+
# Get the maximum count across both histograms, and scale it
|
|
191
|
+
# with `x_pad_fraction`
|
|
192
|
+
v = max([(1.0 + x_pad_fraction) * max(histogram) for histogram in histograms])
|
|
193
|
+
# When we plot the PDF, let both x-axes run to the same value
|
|
194
|
+
# so it's easier to compare visually
|
|
195
|
+
x_ranges = [v, v]
|
|
196
|
+
else:
|
|
197
|
+
# For the left and right histograms, get the largest counts and scale them
|
|
198
|
+
# by `x_pad_fraction` to get the maximum x-values displayed
|
|
199
|
+
x_ranges = [(1.0 + x_pad_fraction) * max(histogram) for histogram in histograms]
|
|
200
|
+
|
|
201
|
+
try:
|
|
202
|
+
bin_of_first_non_zero_tally = min(
|
|
203
|
+
[[bool(v) for v in histogram].index(True) for histogram in histograms]
|
|
204
|
+
)
|
|
205
|
+
except ValueError:
|
|
206
|
+
bin_of_first_non_zero_tally = 0
|
|
207
|
+
|
|
208
|
+
y_range = (
|
|
209
|
+
# Start plotting where the data starts (ignore empty bins at the low end)
|
|
210
|
+
bins[bin_of_first_non_zero_tally] - y_padding,
|
|
211
|
+
# The y_padding adds half a bin width, as we want the bars to be
|
|
212
|
+
# _centered_ on the bins. We take the next-to-last element of `bins`,
|
|
213
|
+
# because that is the beginning of the last bin.
|
|
214
|
+
bins[-2] + y_padding,
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
return bins, histograms, x_ranges, y_range
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
@_needs_matplotlib_backend
|
|
221
|
+
def plot_paired_histogram(
|
|
222
|
+
histogram_data: List[List[float]],
|
|
223
|
+
title: Text,
|
|
224
|
+
output_file: Optional[Text] = None,
|
|
225
|
+
num_bins: int = 25,
|
|
226
|
+
colors: Tuple[Text, Text] = ("#009292", "#920000"), # (dark cyan, dark red)
|
|
227
|
+
axes_label: Tuple[Text, Text] = ("Correct", "Wrong"),
|
|
228
|
+
frame_label: Tuple[Text, Text] = ("Number of Samples", "Confidence"),
|
|
229
|
+
density: bool = False,
|
|
230
|
+
x_pad_fraction: float = 0.05,
|
|
231
|
+
y_pad_fraction: float = 0.10,
|
|
232
|
+
) -> None:
|
|
233
|
+
"""Plots a side-by-side comparative histogram of the confidence distribution.
|
|
234
|
+
|
|
235
|
+
Args:
|
|
236
|
+
histogram_data: Two data vectors
|
|
237
|
+
title: Title to be displayed above the plot
|
|
238
|
+
output_file: File to save the plot to
|
|
239
|
+
num_bins: Number of bins to be used for the histogram
|
|
240
|
+
colors: Left and right bar colors as hex color strings
|
|
241
|
+
axes_label: Labels shown above the left and right histogram,
|
|
242
|
+
respectively
|
|
243
|
+
frame_label: Labels shown below and on the left of the
|
|
244
|
+
histogram, respectively
|
|
245
|
+
density: If true, generate a probability density histogram
|
|
246
|
+
x_pad_fraction: Percentage of extra space in the horizontal direction
|
|
247
|
+
y_pad_fraction: Percentage of extra space in the vertical direction
|
|
248
|
+
"""
|
|
249
|
+
if num_bins <= 2:
|
|
250
|
+
rasa.shared.utils.io.raise_warning(
|
|
251
|
+
f"Number {num_bins} of paired histogram bins must be at least 3."
|
|
252
|
+
)
|
|
253
|
+
return
|
|
254
|
+
|
|
255
|
+
try:
|
|
256
|
+
bins, tallies, x_ranges, y_range = _extract_paired_histogram_specification(
|
|
257
|
+
histogram_data,
|
|
258
|
+
num_bins,
|
|
259
|
+
density=density,
|
|
260
|
+
x_pad_fraction=x_pad_fraction,
|
|
261
|
+
y_pad_fraction=y_pad_fraction,
|
|
262
|
+
)
|
|
263
|
+
except (ValueError, TypeError) as e:
|
|
264
|
+
rasa.shared.utils.io.raise_warning(
|
|
265
|
+
f"Unable to plot paired histogram '{title}': {e}"
|
|
266
|
+
)
|
|
267
|
+
return
|
|
268
|
+
yticks = [float(f"{x:.2f}") for x in bins]
|
|
269
|
+
|
|
270
|
+
import matplotlib.pyplot as plt
|
|
271
|
+
|
|
272
|
+
plt.gcf().clear()
|
|
273
|
+
|
|
274
|
+
fig, axes = plt.subplots(ncols=2, sharey=True)
|
|
275
|
+
for side in range(2):
|
|
276
|
+
axes[side].barh(
|
|
277
|
+
bins[:-1],
|
|
278
|
+
tallies[side],
|
|
279
|
+
height=np.diff(bins),
|
|
280
|
+
align="center",
|
|
281
|
+
color=colors[side],
|
|
282
|
+
linewidth=1,
|
|
283
|
+
edgecolor="white",
|
|
284
|
+
)
|
|
285
|
+
axes[side].set(title=axes_label[side])
|
|
286
|
+
axes[side].set(yticks=yticks, xlim=(0, x_ranges[side]), ylim=y_range)
|
|
287
|
+
|
|
288
|
+
axes[0].yaxis.set_major_formatter(FormatStrFormatter("%.2f"))
|
|
289
|
+
axes[0].yaxis.set_minor_formatter(FormatStrFormatter("%.2f"))
|
|
290
|
+
|
|
291
|
+
axes[0].invert_xaxis()
|
|
292
|
+
axes[0].yaxis.tick_right()
|
|
293
|
+
|
|
294
|
+
# Add the title
|
|
295
|
+
fig.suptitle(title, fontsize="x-large", fontweight="bold")
|
|
296
|
+
|
|
297
|
+
# Add hidden plot to correctly add x and y labels (frame_label)
|
|
298
|
+
fig.add_subplot(111, frameon=False)
|
|
299
|
+
|
|
300
|
+
# Hide tick and tick label of the unused axis
|
|
301
|
+
plt.tick_params(labelcolor="none", top=False, bottom=False, left=False, right=False)
|
|
302
|
+
plt.xlabel(frame_label[0])
|
|
303
|
+
plt.ylabel(frame_label[1])
|
|
304
|
+
|
|
305
|
+
if output_file:
|
|
306
|
+
fig = plt.gcf()
|
|
307
|
+
fig.set_size_inches(10, 10)
|
|
308
|
+
fig.tight_layout(w_pad=0)
|
|
309
|
+
fig.savefig(output_file, bbox_inches="tight")
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
@_needs_matplotlib_backend
|
|
313
|
+
def plot_curve(
|
|
314
|
+
output_directory: Text,
|
|
315
|
+
number_of_examples: List[int],
|
|
316
|
+
x_label_text: Text,
|
|
317
|
+
y_label_text: Text,
|
|
318
|
+
graph_path: Text,
|
|
319
|
+
) -> None:
|
|
320
|
+
"""Plot the results from a model comparison.
|
|
321
|
+
|
|
322
|
+
Args:
|
|
323
|
+
output_directory: Output directory to save resulting plots to
|
|
324
|
+
number_of_examples: Number of examples per run
|
|
325
|
+
x_label_text: text for the x axis
|
|
326
|
+
y_label_text: text for the y axis
|
|
327
|
+
graph_path: output path of the plot
|
|
328
|
+
"""
|
|
329
|
+
import matplotlib.pyplot as plt
|
|
330
|
+
|
|
331
|
+
plt.gcf().clear()
|
|
332
|
+
|
|
333
|
+
ax = plt.gca()
|
|
334
|
+
|
|
335
|
+
# load results from file
|
|
336
|
+
data = rasa.shared.utils.io.read_json_file(
|
|
337
|
+
os.path.join(output_directory, RESULTS_FILE)
|
|
338
|
+
)
|
|
339
|
+
x = number_of_examples
|
|
340
|
+
|
|
341
|
+
# compute mean of all the runs for different configs
|
|
342
|
+
for label in data.keys():
|
|
343
|
+
if len(data[label]) == 0:
|
|
344
|
+
continue
|
|
345
|
+
mean = np.mean(data[label], axis=0)
|
|
346
|
+
std = np.std(data[label], axis=0)
|
|
347
|
+
ax.plot(x, mean, label=label, marker=".")
|
|
348
|
+
ax.fill_between(
|
|
349
|
+
x,
|
|
350
|
+
[m - s for m, s in zip(mean, std)],
|
|
351
|
+
[m + s for m, s in zip(mean, std)],
|
|
352
|
+
color="#6b2def",
|
|
353
|
+
alpha=0.2,
|
|
354
|
+
)
|
|
355
|
+
ax.legend(loc=4)
|
|
356
|
+
|
|
357
|
+
ax.set_xlabel(x_label_text)
|
|
358
|
+
ax.set_ylabel(y_label_text)
|
|
359
|
+
|
|
360
|
+
plt.savefig(graph_path, format="pdf")
|
|
361
|
+
|
|
362
|
+
logger.info(f"Comparison graph saved to '{graph_path}'.")
|
rasa/utils/singleton.py
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from typing import Any, Dict
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Singleton(type):
|
|
5
|
+
"""Singleton metaclass."""
|
|
6
|
+
|
|
7
|
+
_instances: Dict[Any, Any] = {} # noqa: RUF012
|
|
8
|
+
|
|
9
|
+
def __call__(cls, *args: Any, **kwargs: Any) -> Any:
|
|
10
|
+
"""Call the class.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
*args: Arguments.
|
|
14
|
+
**kwargs: Keyword arguments.
|
|
15
|
+
"""
|
|
16
|
+
if cls not in cls._instances:
|
|
17
|
+
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
|
|
18
|
+
|
|
19
|
+
return cls._instances[cls]
|
|
20
|
+
|
|
21
|
+
def clear(cls) -> None:
|
|
22
|
+
"""Clear the class."""
|
|
23
|
+
cls._instances = {}
|
|
File without changes
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from typing import Dict, Text, Any, Optional
|
|
3
|
+
|
|
4
|
+
import logging
|
|
5
|
+
import tensorflow as tf
|
|
6
|
+
from tqdm import tqdm
|
|
7
|
+
|
|
8
|
+
import rasa.shared.utils.io
|
|
9
|
+
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class RasaTrainingLogger(tf.keras.callbacks.Callback):
|
|
14
|
+
"""Callback for logging the status of training."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, epochs: int, silent: bool) -> None:
|
|
17
|
+
"""Initializes the callback.
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
epochs: Total number of epochs.
|
|
21
|
+
silent: If 'True' the entire progressbar wrapper is disabled.
|
|
22
|
+
"""
|
|
23
|
+
super().__init__()
|
|
24
|
+
|
|
25
|
+
disable = silent or rasa.shared.utils.io.is_logging_disabled()
|
|
26
|
+
self.progress_bar = tqdm(range(epochs), desc="Epochs", disable=disable)
|
|
27
|
+
|
|
28
|
+
def on_epoch_end(self, epoch: int, logs: Optional[Dict[Text, Any]] = None) -> None:
|
|
29
|
+
"""Updates the logging output on every epoch end.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
epoch: The current epoch.
|
|
33
|
+
logs: The training metrics.
|
|
34
|
+
"""
|
|
35
|
+
self.progress_bar.update(1)
|
|
36
|
+
self.progress_bar.set_postfix(logs)
|
|
37
|
+
|
|
38
|
+
def on_train_end(self, logs: Optional[Dict[Text, Any]] = None) -> None:
|
|
39
|
+
"""Closes the progress bar after training.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
logs: The training metrics.
|
|
43
|
+
"""
|
|
44
|
+
self.progress_bar.close()
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class RasaModelCheckpoint(tf.keras.callbacks.Callback):
|
|
48
|
+
"""Callback for saving intermediate model checkpoints."""
|
|
49
|
+
|
|
50
|
+
def __init__(self, checkpoint_dir: Path) -> None:
|
|
51
|
+
"""Initializes the callback.
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
checkpoint_dir: Directory to store checkpoints to.
|
|
55
|
+
"""
|
|
56
|
+
super().__init__()
|
|
57
|
+
|
|
58
|
+
self.checkpoint_file = checkpoint_dir / "checkpoint.tf_model"
|
|
59
|
+
self.best_metrics_so_far: Dict[Text, Any] = {}
|
|
60
|
+
|
|
61
|
+
def on_epoch_end(self, epoch: int, logs: Optional[Dict[Text, Any]] = None) -> None:
|
|
62
|
+
"""Save the model on epoch end if the model has improved.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
epoch: The current epoch.
|
|
66
|
+
logs: The training metrics.
|
|
67
|
+
"""
|
|
68
|
+
if self._does_model_improve(logs):
|
|
69
|
+
logger.debug(f"Creating model checkpoint at epoch={epoch + 1} ...")
|
|
70
|
+
self.model.save_weights(
|
|
71
|
+
self.checkpoint_file, overwrite=True, save_format="tf"
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
def _does_model_improve(self, curr_results: Dict[Text, Any]) -> bool:
|
|
75
|
+
"""Checks whether the current results are better than the best so far.
|
|
76
|
+
|
|
77
|
+
Results are considered better if each metric is equal or better than the best so
|
|
78
|
+
far, and at least one is better.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
curr_results: The training metrics for this epoch.
|
|
82
|
+
"""
|
|
83
|
+
curr_metric_names = [
|
|
84
|
+
k
|
|
85
|
+
for k in curr_results.keys()
|
|
86
|
+
if k.startswith("val") and (k.endswith("_acc") or k.endswith("_f1"))
|
|
87
|
+
]
|
|
88
|
+
# the "val" prefix is prepended to metrics in fit if _should_eval returns true
|
|
89
|
+
# for this particular epoch
|
|
90
|
+
if len(curr_metric_names) == 0:
|
|
91
|
+
# the metrics are not validation metrics
|
|
92
|
+
return False
|
|
93
|
+
# initialize best_metrics_so_far with the first results
|
|
94
|
+
if not self.best_metrics_so_far:
|
|
95
|
+
for metric_name in curr_metric_names:
|
|
96
|
+
self.best_metrics_so_far[metric_name] = float(curr_results[metric_name])
|
|
97
|
+
return True
|
|
98
|
+
|
|
99
|
+
at_least_one_improved = False
|
|
100
|
+
improved_metrics = {}
|
|
101
|
+
for metric_name in self.best_metrics_so_far.keys():
|
|
102
|
+
if float(curr_results[metric_name]) < self.best_metrics_so_far[metric_name]:
|
|
103
|
+
# at least one of the values is worse
|
|
104
|
+
return False
|
|
105
|
+
if float(curr_results[metric_name]) > self.best_metrics_so_far[metric_name]:
|
|
106
|
+
at_least_one_improved = True
|
|
107
|
+
improved_metrics[metric_name] = float(curr_results[metric_name])
|
|
108
|
+
|
|
109
|
+
# all current values >= previous best and at least one is better
|
|
110
|
+
if at_least_one_improved:
|
|
111
|
+
self.best_metrics_so_far.update(improved_metrics)
|
|
112
|
+
return at_least_one_improved
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# constants for configuration parameters of our tensorflow models
|
|
2
|
+
|
|
3
|
+
LABEL = "label"
|
|
4
|
+
IDS = "ids"
|
|
5
|
+
# LABEL_PAD_ID is used to pad multi-label training examples.
|
|
6
|
+
# It should be < 0 to avoid index out of bounds errors by tf.one_hot.
|
|
7
|
+
LABEL_PAD_ID = -1
|
|
8
|
+
HIDDEN_LAYERS_SIZES = "hidden_layers_sizes"
|
|
9
|
+
SHARE_HIDDEN_LAYERS = "share_hidden_layers"
|
|
10
|
+
|
|
11
|
+
TRANSFORMER_SIZE = "transformer_size"
|
|
12
|
+
NUM_TRANSFORMER_LAYERS = "number_of_transformer_layers"
|
|
13
|
+
NUM_HEADS = "number_of_attention_heads"
|
|
14
|
+
UNIDIRECTIONAL_ENCODER = "unidirectional_encoder"
|
|
15
|
+
KEY_RELATIVE_ATTENTION = "use_key_relative_attention"
|
|
16
|
+
VALUE_RELATIVE_ATTENTION = "use_value_relative_attention"
|
|
17
|
+
MAX_RELATIVE_POSITION = "max_relative_position"
|
|
18
|
+
|
|
19
|
+
BATCH_SIZES = "batch_size"
|
|
20
|
+
BATCH_STRATEGY = "batch_strategy"
|
|
21
|
+
EPOCHS = "epochs"
|
|
22
|
+
RANDOM_SEED = "random_seed"
|
|
23
|
+
LEARNING_RATE = "learning_rate"
|
|
24
|
+
|
|
25
|
+
DENSE_DIMENSION = "dense_dimension"
|
|
26
|
+
CONCAT_DIMENSION = "concat_dimension"
|
|
27
|
+
EMBEDDING_DIMENSION = "embedding_dimension"
|
|
28
|
+
ENCODING_DIMENSION = "encoding_dimension"
|
|
29
|
+
|
|
30
|
+
SIMILARITY_TYPE = "similarity_type"
|
|
31
|
+
LOSS_TYPE = "loss_type"
|
|
32
|
+
NUM_NEG = "number_of_negative_examples"
|
|
33
|
+
MAX_POS_SIM = "maximum_positive_similarity"
|
|
34
|
+
MAX_NEG_SIM = "maximum_negative_similarity"
|
|
35
|
+
USE_MAX_NEG_SIM = "use_maximum_negative_similarity"
|
|
36
|
+
|
|
37
|
+
SCALE_LOSS = "scale_loss"
|
|
38
|
+
REGULARIZATION_CONSTANT = "regularization_constant"
|
|
39
|
+
NEGATIVE_MARGIN_SCALE = "negative_margin_scale"
|
|
40
|
+
DROP_RATE = "drop_rate"
|
|
41
|
+
DROP_RATE_ATTENTION = "drop_rate_attention"
|
|
42
|
+
DROP_RATE_DIALOGUE = "drop_rate_dialogue"
|
|
43
|
+
DROP_RATE_LABEL = "drop_rate_label"
|
|
44
|
+
CONSTRAIN_SIMILARITIES = "constrain_similarities"
|
|
45
|
+
|
|
46
|
+
CONNECTION_DENSITY = "connection_density"
|
|
47
|
+
|
|
48
|
+
EVAL_NUM_EPOCHS = "evaluate_every_number_of_epochs"
|
|
49
|
+
EVAL_NUM_EXAMPLES = "evaluate_on_number_of_examples"
|
|
50
|
+
|
|
51
|
+
INTENT_CLASSIFICATION = "intent_classification"
|
|
52
|
+
ENTITY_RECOGNITION = "entity_recognition"
|
|
53
|
+
MASKED_LM = "use_masked_language_model"
|
|
54
|
+
|
|
55
|
+
SPARSE_INPUT_DROPOUT = "use_sparse_input_dropout"
|
|
56
|
+
DENSE_INPUT_DROPOUT = "use_dense_input_dropout"
|
|
57
|
+
|
|
58
|
+
RANKING_LENGTH = "ranking_length"
|
|
59
|
+
RENORMALIZE_CONFIDENCES = "renormalize_confidences"
|
|
60
|
+
MODEL_CONFIDENCE = "model_confidence"
|
|
61
|
+
|
|
62
|
+
BILOU_FLAG = "BILOU_flag"
|
|
63
|
+
|
|
64
|
+
RETRIEVAL_INTENT = "retrieval_intent"
|
|
65
|
+
|
|
66
|
+
USE_TEXT_AS_LABEL = "use_text_as_label"
|
|
67
|
+
|
|
68
|
+
SOFTMAX = "softmax"
|
|
69
|
+
MARGIN = "margin"
|
|
70
|
+
AUTO = "auto"
|
|
71
|
+
INNER = "inner"
|
|
72
|
+
COSINE = "cosine"
|
|
73
|
+
CROSS_ENTROPY = "cross_entropy"
|
|
74
|
+
|
|
75
|
+
BALANCED = "balanced"
|
|
76
|
+
|
|
77
|
+
SEQUENCE = "sequence"
|
|
78
|
+
SEQUENCE_LENGTH = f"{SEQUENCE}_lengths"
|
|
79
|
+
SENTENCE = "sentence"
|
|
80
|
+
|
|
81
|
+
POOLING = "pooling"
|
|
82
|
+
MAX_POOLING = "max"
|
|
83
|
+
MEAN_POOLING = "mean"
|
|
84
|
+
|
|
85
|
+
TENSORBOARD_LOG_DIR = "tensorboard_log_directory"
|
|
86
|
+
TENSORBOARD_LOG_LEVEL = "tensorboard_log_level"
|
|
87
|
+
|
|
88
|
+
SEQUENCE_FEATURES = "sequence_features"
|
|
89
|
+
SENTENCE_FEATURES = "sentence_features"
|
|
90
|
+
|
|
91
|
+
FEATURIZERS = "featurizers"
|
|
92
|
+
CHECKPOINT_MODEL = "checkpoint_model"
|
|
93
|
+
|
|
94
|
+
MASK = "mask"
|
|
95
|
+
|
|
96
|
+
IGNORE_INTENTS_LIST = "ignore_intents_list"
|
|
97
|
+
|
|
98
|
+
TOLERANCE = "tolerance"
|
|
99
|
+
|
|
100
|
+
POSITIVE_SCORES_KEY = "positive_scores"
|
|
101
|
+
|
|
102
|
+
NEGATIVE_SCORES_KEY = "negative_scores"
|
|
103
|
+
|
|
104
|
+
RANKING_KEY = "label_ranking"
|
|
105
|
+
QUERY_INTENT_KEY = "query_intent"
|
|
106
|
+
SCORE_KEY = "score"
|
|
107
|
+
THRESHOLD_KEY = "threshold"
|
|
108
|
+
SEVERITY_KEY = "severity"
|
|
109
|
+
NAME = "name"
|
|
110
|
+
|
|
111
|
+
TF_DETERMINISTIC_OPS = "TF_DETERMINISTIC_OPS"
|
|
112
|
+
EPOCH_OVERRIDE = "epoch_override"
|
|
113
|
+
|
|
114
|
+
USE_GPU = "use_gpu"
|
|
115
|
+
RUN_EAGERLY = "run_eagerly"
|
|
116
|
+
DROP_SMALL_LAST_BATCH = "drop_small_last_batch"
|