Greg Thompson commited on
Commit
261580b
2 Parent(s): e76c7a4 5efc5bc

Merge branch 'staging' into production

Browse files
Files changed (2) hide show
  1. mathtext_fastapi/nlu.py +17 -8
  2. scripts/make_request.py +4 -1
mathtext_fastapi/nlu.py CHANGED
@@ -1,9 +1,12 @@
 
 
1
  from collections.abc import Mapping
2
  from logging import getLogger
3
  import datetime as dt
4
  from dateutil.parser import isoparse
5
 
6
  from fuzzywuzzy import fuzz
 
7
  from mathtext_fastapi.intent_classification import predict_message_intent
8
  from mathtext_fastapi.logging import prepare_message_data_for_logging
9
  from mathtext.sentiment import sentiment
@@ -121,7 +124,7 @@ def run_intent_classification(message_text):
121
  label = ''
122
  ratio = 0
123
  nlu_response = {'type': 'intent', 'data': label, 'confidence': ratio}
124
- commands = [
125
  'easier',
126
  'exit',
127
  'harder',
@@ -141,15 +144,21 @@ def run_intent_classification(message_text):
141
  'skip',
142
  'menu'
143
  ]
144
-
145
- for command in commands:
 
 
 
 
 
146
  try:
147
- ratio = fuzz.ratio(command, message_text.lower())
148
  except:
149
- ratio = 0
150
- if ratio > 80:
151
- nlu_response['data'] = command
152
- nlu_response['confidence'] = ratio / 100
 
153
 
154
  return nlu_response
155
 
 
1
+ import re
2
+
3
  from collections.abc import Mapping
4
  from logging import getLogger
5
  import datetime as dt
6
  from dateutil.parser import isoparse
7
 
8
  from fuzzywuzzy import fuzz
9
+ from fuzzywuzzy import process
10
  from mathtext_fastapi.intent_classification import predict_message_intent
11
  from mathtext_fastapi.logging import prepare_message_data_for_logging
12
  from mathtext.sentiment import sentiment
 
124
  label = ''
125
  ratio = 0
126
  nlu_response = {'type': 'intent', 'data': label, 'confidence': ratio}
127
+ keywords = [
128
  'easier',
129
  'exit',
130
  'harder',
 
144
  'skip',
145
  'menu'
146
  ]
147
+
148
+ try:
149
+ tokens = re.findall(r"[-a-zA-Z'_]+", message_text.lower())
150
+ except AttributeError:
151
+ tokens = ''
152
+
153
+ for keyword in keywords:
154
  try:
155
+ tok, score = process.extractOne(keyword, tokens, scorer=fuzz.ratio)
156
  except:
157
+ score = 0
158
+
159
+ if score > 80:
160
+ nlu_response['data'] = keyword
161
+ nlu_response['confidence'] = score
162
 
163
  return nlu_response
164
 
scripts/make_request.py CHANGED
@@ -77,11 +77,14 @@ def run_full_nlu_endpoint_payload_test(sample_payload):
77
  # # Case: Correct payload
78
  # run_full_nlu_endpoint_payload_test(b'{"message_data": {"author_id": "57787919091", "author_type": "OWNER", "contact_uuid": "df78gsdf78df", "message_body": "8", "message_direction": "inbound", "message_id": "dfgha789789ag9ga", "message_inserted_at": "2023-01-10T02:37:28.487319Z", "message_updated_at": "2023-01-10T02:37:28.487319Z"}}')
79
 
 
 
 
80
  # # Case: Incorrect payload values
81
  # run_full_nlu_endpoint_payload_test(b'{"message_data": {"author_id": "@event.message._vnd.v1.chat.owner", "author_type": "@event.message._vnd.v1.author.type", "contact_uuid": "@event.message._vnd.v1.chat.contact_uuid", "message_body": "@event.message.text.body", "message_direction": "@event.message._vnd.v1.direction", "message_id": "@event.message.id", "message_inserted_at": "@event.message._vnd.v1.chat.inserted_at", "message_updated_at": "@event.message._vnd.v1.chat.updated_at"}}')
82
 
83
  # Case: Wrong payload object
84
- run_full_nlu_endpoint_payload_test(b'{"message_data": {"_vnd": {"v1": {"author": {"id": 54327547257, "name": "Jin", "type": "OWNER"}, "card_uuid": None, "chat": {"assigned_to": None, "contact_uuid": "f7889-f78dfgb798-f786ah89g7-f78f9a", "inserted_at": "2023-03-28T13:21:47.581221Z", "owner": "+43789789146", "permalink": "", "state": "OPEN", "state_reason": "Re-opened by inbound message.", "unread_count": 97, "updated_at": "2023-04-07T21:05:27.389948Z", "uuid": "dfg9a78-d76a786dghas-78d9fga789g-a78d69a9"}, "direction": "inbound", "faq_uuid": None, "in_reply_to": None, "inserted_at": "2023-04-07T21:05:27.368580Z", "labels": [], "last_status": None, "last_status_timestamp": None, "on_fallback_channel": False, "rendered_content": None, "uuid": "hf78s7s89b-789fb68d9fg-789fb789dfb-f79sfb789"}}, "from": 5475248689, "id": "SBDE4zgAAy7887sfdT35SHFS", "text": {"body": 1000}, "timestamp": 1680901527, "type": "text"}, "type": "message"}')
85
 
86
 
87
  # run_simulated_request('intent-classification', 'exit')
 
77
  # # Case: Correct payload
78
  # run_full_nlu_endpoint_payload_test(b'{"message_data": {"author_id": "57787919091", "author_type": "OWNER", "contact_uuid": "df78gsdf78df", "message_body": "8", "message_direction": "inbound", "message_id": "dfgha789789ag9ga", "message_inserted_at": "2023-01-10T02:37:28.487319Z", "message_updated_at": "2023-01-10T02:37:28.487319Z"}}')
79
 
80
+ # Case: Correct payload + extra fields
81
+ run_full_nlu_endpoint_payload_test(b'{"message_data": {"author_id": "57787919091", "author_type": "OWNER", "contact_uuid": "df78gsdf78df", "message_body": "8", "message_direction": "inbound", "message_id": "dfgha789789ag9ga", "message_inserted_at": "2023-01-10T02:37:28.487319Z", "message_updated_at": "2023-01-10T02:37:28.487319Z", "question": "What is next - 2, 6, 8?", "expected_answer": 8}}')
82
+
83
  # # Case: Incorrect payload values
84
  # run_full_nlu_endpoint_payload_test(b'{"message_data": {"author_id": "@event.message._vnd.v1.chat.owner", "author_type": "@event.message._vnd.v1.author.type", "contact_uuid": "@event.message._vnd.v1.chat.contact_uuid", "message_body": "@event.message.text.body", "message_direction": "@event.message._vnd.v1.direction", "message_id": "@event.message.id", "message_inserted_at": "@event.message._vnd.v1.chat.inserted_at", "message_updated_at": "@event.message._vnd.v1.chat.updated_at"}}')
85
 
86
  # Case: Wrong payload object
87
+ # run_full_nlu_endpoint_payload_test(b'{"message_data": {"_vnd": {"v1": {"author": {"id": 54327547257, "name": "Jin", "type": "OWNER"}, "card_uuid": None, "chat": {"assigned_to": None, "contact_uuid": "f7889-f78dfgb798-f786ah89g7-f78f9a", "inserted_at": "2023-03-28T13:21:47.581221Z", "owner": "+43789789146", "permalink": "", "state": "OPEN", "state_reason": "Re-opened by inbound message.", "unread_count": 97, "updated_at": "2023-04-07T21:05:27.389948Z", "uuid": "dfg9a78-d76a786dghas-78d9fga789g-a78d69a9"}, "direction": "inbound", "faq_uuid": None, "in_reply_to": None, "inserted_at": "2023-04-07T21:05:27.368580Z", "labels": [], "last_status": None, "last_status_timestamp": None, "on_fallback_channel": False, "rendered_content": None, "uuid": "hf78s7s89b-789fb68d9fg-789fb789dfb-f79sfb789"}}, "from": 5475248689, "id": "SBDE4zgAAy7887sfdT35SHFS", "text": {"body": 1000}, "timestamp": 1680901527, "type": "text"}, "type": "message"}')
88
 
89
 
90
  # run_simulated_request('intent-classification', 'exit')