Hello @dakshvar22
Of course! Current action file looks like this:
from typing import Any, Text, Dict, List
from farm.infer import Inferencer
from rasa_sdk import Action, Tracker
from rasa_sdk.events import SlotSet
from rasa_sdk.executor import CollectingDispatcher
class ActionGiveFeedback(Action):
def __init__(self):
self.model = Inferencer.load("C:\\Users\\tobia\\OneDrive\\Desktop\\arguebot_test\\Model")
def name(self) -> Text:
return "action_give_feedback"
def predict_components(text: str):
text_to_analyze = [{'text': '{}'.format(text)}]
result = self.model.inference_from_dicts(dicts=text_to_analyze)
annotated_text = [[i['label'], i['start'], i['end']] for i in result[0]['predictions'] if i['probability'] > 0.75]
count = 0
count_claim = 0
count_premise = 0
elements = []
for ann in annotated_text:
if ann[0] != 'O':
elements.append({
'id': count,
'label': ann[0].lower(),
'start': ann[1],
'end': ann[2]
})
if ann[0].lower() == 'claim':
count_claim += 1
else:
count_premise += 1
else:
continue
count += 1
return elements, count_claim, count_premise
def prepare_feedback(text: str, elements: tuple):
feedback_text = "Hier kommt das Feedback zu Deiner Argumentation, " \
"Claims werden *fett* und Premises _kursiv_ dargestellt:\n\n\n"
before = 0
for e in elements[0]:
start = e['start']
end = e['end']
marker = '*' if e['label'] == 'claim' else '_'
feedback_text += text[before:start]
feedback_text += marker
feedback_text += text[start:end]
feedback_text += marker
before = end
if before == 0:
feedback_text += text
if elements[1] > elements[2] or elements[1] < 2:
if elements[1] < 2:
feedback_text += "\n\nIch würde dir empfehlen, deinen Text noch argumentativer zu gestalten. " \
"Versuche mindestens zwei Claims mit relevanten Premises zu stützen\n"
else:
feedback_text += "\n\nIch würde dir empfehlen, deinen Text noch argumentativer zu gestalten. " \
"Versuche Deine Claims besser mit relevanten Premises zu stützen\n"
else:
feedback_text += "\n\nIch empfinde Deine Argumentation als gelungen! " \
"Du hast mehrere Aussagen gemacht und diese mit relevanten Premises gestützt. Weiter so!\n"
return feedback_text
def run(self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
elements = predict_components(Text)
feedback = prepare_feedback(Text, elements)
dispatcher.utter_message("{}".format(feedback))
return []
The current error occurs when I try to load the BERT-Model:
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\runpy.py”, line 193, in run_module_as_main
“main”, mod_spec)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\runpy.py”, line 85, in run_code
exec(code, run_globals)
File "C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\rasa_sdk_main.py", line 33, in
main()
File "C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\rasa_sdk_main.py", line 29, in main
main_from_args(cmdline_args)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\rasa_sdk_main_.py”, line 20, in main_from_args
args.ssl_password,
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\rasa_sdk\endpoint.py”, line 116, in run
app = create_app(action_package_name, cors_origins=cors_origins)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\rasa_sdk\endpoint.py”, line 68, in create_app
executor.register_package(action_package_name)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\rasa_sdk\executor.py”, line 222, in register_package
self.register_action(action)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\rasa_sdk\executor.py”, line 157, in register_action
action = action()
File “C:\Users\tobia\OneDrive\Desktop\arguebot_test\actions.py”, line 15, in init
self.model = Inferencer.load(“C:\Users\tobia\OneDrive\Desktop\arguebot_test\Model”)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\farm\infer.py”, line 133, in load
model = AdaptiveModel.load(model_name_or_path, device, strict=strict)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\farm\modeling\adaptive_model.py”, line 125, in load
language_model = LanguageModel.load(load_dir)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\farm\modeling\language_model.py”, line 108, in load
language_model = cls.subclasses[config[“name”]].load(pretrained_model_name_or_path)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\farm\modeling\language_model.py”, line 323, in load
bert.model = BertModel.from_pretrained(farm_lm_model, config=bert_config, **kwargs)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\transformers\modeling_utils.py”, line 414, in from_pretrained
elif os.path.isfile(pretrained_model_name_or_path) or is_remote_url(pretrained_model_name_or_path):
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\site-packages\transformers\file_utils.py”, line 143, in is_remote_url
parsed = urlparse(url_or_filename)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\urllib\parse.py”, line 367, in urlparse
url, scheme, _coerce_result = _coerce_args(url, scheme)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\urllib\parse.py”, line 123, in _coerce_args
return _decode_args(args) + (_encode_result,)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\urllib\parse.py”, line 107, in _decode_args
return tuple(x.decode(encoding, errors) if x else ‘’ for x in args)
File “C:\Users\tobia\AppData\Local\Programs\Python\Python36\lib\urllib\parse.py”, line 107, in
return tuple(x.decode(encoding, errors) if x else ‘’ for x in args)
AttributeError: ‘WindowsPath’ object has no attribute ‘decode’
Pretty stuck with this error for a while now…