Spaces:
Runtime error
Runtime error
Greg Thompson
commited on
Commit
•
b5b1714
1
Parent(s):
b1bbf8f
Update keyword matching to work with phrases
Browse files- mathtext_fastapi/nlu.py +19 -9
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
|
@@ -118,10 +121,10 @@ def run_intent_classification(message_text):
|
|
118 |
>>> run_intent_classification("hardier")
|
119 |
{'type': 'intent', 'data': 'harder', 'confidence': 0.92}
|
120 |
"""
|
121 |
-
label = ''
|
122 |
ratio = 0
|
123 |
nlu_response = {'type': 'intent', 'data': label, 'confidence': ratio}
|
124 |
-
|
125 |
'easier',
|
126 |
'exit',
|
127 |
'harder',
|
@@ -141,15 +144,22 @@ def run_intent_classification(message_text):
|
|
141 |
'skip',
|
142 |
'menu'
|
143 |
]
|
144 |
-
|
145 |
-
|
|
|
|
|
|
|
|
|
|
|
146 |
try:
|
147 |
-
|
148 |
except:
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
|
|
|
|
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
|
|
|
121 |
>>> run_intent_classification("hardier")
|
122 |
{'type': 'intent', 'data': 'harder', 'confidence': 0.92}
|
123 |
"""
|
124 |
+
label = 'no_match'
|
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 |
+
print(f"TOK: {tok}, SCORE: {score}")
|
161 |
+
nlu_response['data'] = keyword
|
162 |
+
nlu_response['confidence'] = score
|
163 |
|
164 |
return nlu_response
|
165 |
|