Ejemplo n.º 1
0
    def test_single_mistake(self):
        target = Target({})
        actual = target.autocorrect_query(
            # 0123456789
            "citru",
            [
                {
                    'found_item': [
                        {
                            'display_name': 'citrus',
                            'key': 'citrus',
                            'match_type': 'spelling',
                            'source': 'content',
                            'type': 'color'
                        }
                    ],
                    'start': 0,
                    'end': 5,
                    'term': 'citru',
                    'tokens': ['citru']
                }
            ]
        )

        self.assertEqual(
            actual,
            "citrus"
        )
Ejemplo n.º 2
0
    def test_multiple_mistakes_with_same_entity_no_mistake(self):
        target = Target({})
        actual = target.autocorrect_query(
            # 012345678901234567890123456789
            "I want citru high hells citrus thanks",
            [
                {
                    'found_item': [
                        {
                            'display_name': 'citrus',
                            'key': 'citrus',
                            'match_type': 'spelling',
                            'source': 'content',
                            'type': 'color'
                        }
                    ],
                    'start': 7,
                    'end': 12,
                    'term': 'citru',
                    'tokens': ['citru']
                },
                {
                    'found_item': [
                        {
                            'display_name': 'high heels',
                            'key': 'high heels',
                            'match_type': 'spelling',
                            'source': 'content',
                            'type': 'color'
                        }
                    ],
                    'start': 13,
                    'end': 23,
                    'term': 'high hells',
                    'tokens': ['high', 'hells']
                },
                {
                    'found_item': [
                        {
                            'display_name': 'citrus',
                            'key': 'citrus',
                            'match_type': 'alias',
                            'source': 'content',
                            'type': 'color'
                        }
                    ],
                    'start': 24,
                    'end': 30,
                    'term': 'citrus',
                    'tokens': ['citrus']
                }
            ]
        )

        self.assertEqual(
            actual,
            "I want citrus high heels citrus thanks"
        )
Ejemplo n.º 3
0
    def test_multiple_mistakes_with_same_entity_no_mistake(self):
        target = Target({})
        actual = target.autocorrect_query(
            # 012345678901234567890123456789
            "I want citru high hells citrus thanks",
            [{
                'found_item': [{
                    'display_name': 'citrus',
                    'key': 'citrus',
                    'match_type': 'spelling',
                    'source': 'content',
                    'type': 'color'
                }],
                'start':
                7,
                'end':
                12,
                'term':
                'citru',
                'tokens': ['citru']
            }, {
                'found_item': [{
                    'display_name': 'high heels',
                    'key': 'high heels',
                    'match_type': 'spelling',
                    'source': 'content',
                    'type': 'color'
                }],
                'start':
                13,
                'end':
                23,
                'term':
                'high hells',
                'tokens': ['high', 'hells']
            }, {
                'found_item': [{
                    'display_name': 'citrus',
                    'key': 'citrus',
                    'match_type': 'alias',
                    'source': 'content',
                    'type': 'color'
                }],
                'start':
                24,
                'end':
                30,
                'term':
                'citrus',
                'tokens': ['citrus']
            }])

        self.assertEqual(actual, "I want citrus high heels citrus thanks")
Ejemplo n.º 4
0
    def test_no_autocorrection(self):
        target = Target({})
        target.find_matches = Mock()
        target.find_matches.return_value = {
            "found": "find_matches_found",
            "can_not_match": "find_matches_can_not_match"
        }
        target.autocorrect_query = Mock()
        target.autocorrect_query.return_value = None
        target.key_matches = Mock(return_value="key_matches:return_value")
        target.unique_non_detections = Mock()
        target.unique_non_detections.return_value = "unique_non_detections:return_value"
        target.format_found_entities = Mock()
        target.format_found_entities.return_value = "formated_found_entities"

        actual = target.detect_entities(
            "vocab",
            {
                "tokens": "preperation_result:tokens",
                "used_query": "preperation_result:used_query"
            }
        )
        self.assertEqual(1, target.find_matches.call_count)
        self.assertEqual(3, target.find_matches.call_args_list[0][0][0])
        self.assertEqual("preperation_result:tokens", target.find_matches.call_args_list[0][0][1])
        self.assertEqual(
            target.find_matches.call_args_list[0][0][2],
            'vocab'
        )

        self.assertEqual(1, target.autocorrect_query.call_count)
        self.assertEqual('preperation_result:used_query', target.autocorrect_query.call_args_list[0][0][0])
        self.assertEqual('formated_found_entities', target.autocorrect_query.call_args_list[0][0][1])

        self.assertEqual(1, target.key_matches.call_count)

        self.assertEqual('formated_found_entities', target.key_matches.call_args_list[0][0][0])

        self.assertEqual(1, target.unique_non_detections.call_count)
        self.assertEqual('find_matches_can_not_match', target.unique_non_detections.call_args_list[0][0][0])

        self.assertDictEqual(
            {
                'detections': 'key_matches:return_value',
                'non_detections': 'unique_non_detections:return_value'
            },
            actual
        )
Ejemplo n.º 5
0
    def test_autocorrection(self):
        target = Target({})
        target.find_matches = Mock()
        target.find_matches.return_value = {
            "found": "find_matches_found",
            "can_not_match": "find_matches_can_not_match"
        }
        target.autocorrect_query = Mock()
        target.autocorrect_query.return_value = "autocorrected_query_new_value"
        target.key_matches = Mock(return_value="key_matches:return_value")
        target.unique_non_detections = Mock()
        target.unique_non_detections.return_value = "unique_non_detections:return_value"
        target.format_found_entities = Mock()
        target.format_found_entities.return_value = "formated_found_entities"

        actual = target.detect_entities(
            "vocab", {
                "tokens": "preperation_result:tokens",
                "used_query": "preperation_result:used_query"
            })
        self.assertEqual(1, target.find_matches.call_count)
        self.assertEqual(3, target.find_matches.call_args_list[0][0][0])
        self.assertEqual("preperation_result:tokens",
                         target.find_matches.call_args_list[0][0][1])
        self.assertEqual('vocab', target.find_matches.call_args_list[0][0][2])

        self.assertEqual(target.autocorrect_query.call_count, 1)
        self.assertEqual(target.autocorrect_query.call_args_list[0][0][0],
                         'preperation_result:used_query')
        self.assertEqual(target.autocorrect_query.call_args_list[0][0][1],
                         'formated_found_entities')

        self.assertEqual(target.key_matches.call_count, 1)

        self.assertEqual(target.key_matches.call_args_list[0][0][0],
                         'formated_found_entities')

        self.assertEqual(target.unique_non_detections.call_count, 1)
        self.assertEqual(target.unique_non_detections.call_args_list[0][0][0],
                         'find_matches_can_not_match')

        self.assertDictEqual(
            actual, {
                'autocorrected_query': 'autocorrected_query_new_value',
                'detections': 'key_matches:return_value',
                'non_detections': 'unique_non_detections:return_value'
            })
Ejemplo n.º 6
0
    def test_no_mistakes(self):
        target = Target({})
        actual = target.autocorrect_query(
            # 012345678901234567890123456789
            "I want citrus high heels",
            [
                {
                    'found_item': [
                        {
                            'display_name': 'citrus',
                            'key': 'citrus',
                            'match_type': 'alias',
                            'source': 'content',
                            'type': 'color'
                        }
                    ],
                    'start': 7,
                    'end': 13,
                    'term': 'citrus',
                    'tokens': ['citrus']
                },
                {
                    'found_item': [
                        {
                            'display_name': 'high heels',
                            'key': 'high heels',
                            'match_type': 'alias',
                            'source': 'content',
                            'type': 'color'
                        }
                    ],
                    'start': 14,
                    'end': 24,
                    'term': 'high heels',
                    'tokens': ['high', 'heels']
                }
            ]
        )

        self.assertIsNone(actual)
Ejemplo n.º 7
0
    def test_no_mistakes(self):
        target = Target({})
        actual = target.autocorrect_query(
            # 012345678901234567890123456789
            "I want citrus high heels",
            [{
                'found_item': [{
                    'display_name': 'citrus',
                    'key': 'citrus',
                    'match_type': 'alias',
                    'source': 'content',
                    'type': 'color'
                }],
                'start':
                7,
                'end':
                13,
                'term':
                'citrus',
                'tokens': ['citrus']
            }, {
                'found_item': [{
                    'display_name': 'high heels',
                    'key': 'high heels',
                    'match_type': 'alias',
                    'source': 'content',
                    'type': 'color'
                }],
                'start':
                14,
                'end':
                24,
                'term':
                'high heels',
                'tokens': ['high', 'heels']
            }])

        self.assertIsNone(actual)
Ejemplo n.º 8
0
    def test_single_mistake(self):
        target = Target({})
        actual = target.autocorrect_query(
            # 0123456789
            "citru",
            [{
                'found_item': [{
                    'display_name': 'citrus',
                    'key': 'citrus',
                    'match_type': 'spelling',
                    'source': 'content',
                    'type': 'color'
                }],
                'start':
                0,
                'end':
                5,
                'term':
                'citru',
                'tokens': ['citru']
            }])

        self.assertEqual(actual, "citrus")