Esempio n. 1
0
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')]
Esempio n. 2
0
    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)
Esempio n. 3
0
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)
Esempio n. 4
0
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')]
Esempio n. 5
0
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)
Esempio n. 6
0
    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?")
Esempio n. 7
0
 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()
Esempio n. 8
0
 def setUp(self):
     self.ae = AnalyticsEngine(lang=LANG.DE)