File: test_intent.py

package info (click to toggle)
padatious 0.4.8-2.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 264 kB
  • sloc: python: 1,504; makefile: 21
file content (62 lines) | stat: -rw-r--r-- 2,187 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Copyright 2017 Mycroft AI, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from os import mkdir
from os.path import isdir
from shutil import rmtree

from padatious.intent import Intent
from padatious.train_data import TrainData


class TestIntent:
    def setup(self):
        self.data = TrainData()
        self.data.add_lines('hi', ['hello', 'hi', 'hi there'])
        self.data.add_lines('bye', ['goodbye', 'bye', 'bye {person}', 'see you later'])
        self.i_hi = Intent('hi')
        self.i_bye = Intent('bye')
        self.i_hi.train(self.data)
        self.i_bye.train(self.data)

    def test_match(self):
        assert self.i_hi.match(['hi']).conf > self.i_hi.match(['bye']).conf
        assert self.i_hi.match(['hi']).conf > self.i_bye.match(['hi']).conf
        assert self.i_bye.match(['bye']).conf > self.i_bye.match(['hi']).conf
        assert self.i_bye.match(['bye']).conf > self.i_hi.match(['bye']).conf

        all = self.i_bye.match(['see', 'you', 'later']).conf
        assert all > self.i_hi.match(['see']).conf
        assert all > self.i_hi.match(['you']).conf
        assert all > self.i_hi.match(['later']).conf

        matches = self.i_bye.match(['bye', 'john']).matches
        assert len(matches) == 1
        assert '{person}' in matches
        assert matches['{person}'] == ['john']

    def test_save_load(self):
        if not isdir('temp'):
            mkdir('temp')
        self.i_hi.save('temp')
        self.i_bye.save('temp')

        self.i_hi = Intent.from_file('hi', 'temp')
        self.i_bye = Intent.from_file('bye', 'temp')

        self.test_match()

    def teardown(self):
        if isdir('temp'):
            rmtree('temp')