class TestAnalyticsEngineEnglish(TestCase): def setUp(self): self.ae = AnalyticsEngine(lang=LANG.EN) def test_analyze_utterance_1(self): utterance = u'Peter is the father of Tom.' result = self.ae.analyze_utterance(utterance, persist=True) assert result == [('peter', 'father-of', 'tom')] def test_analyze_utterance_2(self): utterance = u'My daughter Lisa is moving to London next month.' result = self.ae.analyze_utterance(utterance) assert result == [('lisa', 'daughter-of', 'USER')] # TODO fix def test_analyze_utterance_3(self): utterance = u'''Tom's sister Lisa lives in London now.''' result = self.ae.analyze_utterance(utterance) assert result == [('lisa', 'sister-of', 'tom')] def test_analyze_utterance_4(self): utterance = u'''Peter, Tom's father, will pick us up.''' result = self.ae.analyze_utterance(utterance) assert result == [('peter', 'father-of', 'tom')] def test_analyze_utterance_5(self): utterance = u'''my sister , madonna , does too .''' result = self.ae.analyze_utterance(utterance) assert result == [('madonna', 'sister-of', 'USER')]
def run(self, dispatcher, tracker, domain): utterance = tracker.latest_message() ae = AnalyticsEngine(lang=LANG.DE) result, response_mesage = ae.analyze_utterance(utterance, persist=True) if response_mesage: dispatcher.utter_message(response_mesage)
def validate(in_file, out_file): """ Experimental evaluation on 1000 utterances of 'Persona-Chat corpus' and 'Friends TV Corpus' """ ae = AnalyticsEngine(LANG.EN) with open( in_file, 'r', encoding='utf-8') as f: for line in f.readlines(): ae.analyze_utterance(line, persist=False, validate=True, out_val_file=out_file)
class TestAnalyticsEngineGerman(TestCase): def setUp(self): self.ae = AnalyticsEngine(lang=LANG.DE) def test_analyze_utterance_1(self): result = self.ae.analyze_utterance(u'Hans und sein Sohn Hubert.') assert result == [('hubert', 'son-of', 'hans')]
class SocialRelationExtractor(Component): name = "relationextractor" provides = ["entities"] #requires = [""] defaults = {} language_list = ["de_core_news_sm"] def __init__(self, component_config=None): super(SocialRelationExtractor, self).__init__(component_config) self.re = RelationExtractor(LANG.DE) self.ae = AnalyticsEngine(LANG.DE) self.rt = RelationTypes() def process(self, message, **kwargs): print(f'Processing Message {message.text}') extracted_relations, response_message = self.ae.analyze_utterance( message.text, persist=True) print(f'Extracted relations: {extracted_relations}') if extracted_relations: if len(extracted_relations[0]) == 3: entity_value = extracted_relations[0][2] else: entity_value = self.rt.get_relation_from_relation_type_DE( extracted_relations[0][1]) entities = [{ "value": entity_value, "confidence": 1, "entity": "relativename", "extractor": "relationextractor" }, { "value": True, "confidence": 1, "entity": "relationextracted", "extractor": "relationextractor" }] message.set("entities", entities, add_to_output=True)
def run(self, dispatcher, tracker, domain): kg = NetworkGraph() contact_name = tracker.get_slot('firstname') relation_ship = tracker.get_slot('relationship') me_name = tracker.get_slot('me_name') utterance = tracker.latest_message() ae = AnalyticsEngine(lang=LANG.DE) # search relationship by contact name if me_name and contact_name: relationship = kg.search_relationship_by_contactname( me_name, contact_name) if relationship: SlotSet("relationship", relationship) dispatcher.utter_message("Deine(n) " + relationship + " " + str(contact_name).title() + "?") else: ae.analyze_utterance(utterance, persist=True) # search contact name by given relationship elif me_name and relation_ship: contact = kg.search_contactname_by_relationship( me_name, relation_ship) if contact: # contact already exists in network SlotSet("contactname", contact) dispatcher.utter_message("Meinst du " + contact + "?") else: ae.analyze_utterance(utterance, persist=True) elif me_name: dispatcher.utter_message( "Leider hab ich dich nicht ganz verstanden. Wen willst du mitnehmen?" ) else: dispatcher.utter_message("Leider kenne ich dich noch nicht. " "Willst du mir sagen wie du heißt?")
def __init__(self, component_config=None): super(SocialRelationExtractor, self).__init__(component_config) self.re = RelationExtractor(LANG.DE) self.ae = AnalyticsEngine(LANG.DE) self.rt = RelationTypes()
def setUp(self): self.ae = AnalyticsEngine(lang=LANG.DE)