Exemplo n.º 1
0
    def test_support(self):
        sequence_of_events_1 = [Event('a', 1), Event('b', 3)]
        event_sequence_1 = EventSequence(
            sequence_of_events=sequence_of_events_1, start=0, end=4)
        sequence_of_events_2 = [Event('b', 2), Event('a', 3)]
        event_sequence_2 = EventSequence(
            sequence_of_events=sequence_of_events_2, start=0, end=4)
        event_sequences = EventSequences(
            event_sequences=[event_sequence_1, event_sequence_2])

        episodes = Episodes((Episode(('a', )), Episode(
            ('a', 'b')), Episode(('a', 'a'))))
        event_sequences.support(episodes,
                                3,
                                only_full_windows=False,
                                allow_intermediate_events=False)
        self.assertListEqual([6, 1, 0], episodes.abs_support())
        self.assertListEqual([6 / 12, 1 / 12, 0], episodes.rel_support())
Exemplo n.º 2
0
    def test_episodes_and_examples_to_json(self):
        episode_1 = Episode(('a', 'b'))
        episode_2 = Episode(('b', ))
        examples_1 = EventSequences(event_sequences=(EventSequence(
            sequence_of_events=[Event('a', 1), Event('b', 2)]
        ), EventSequence(
            sequence_of_events=[Event('a', 2), Event('b', 3)])))
        examples_2 = EventSequences(
            event_sequences=(EventSequence(sequence_of_events=[Event('b', 2)]),
                             EventSequence(
                                 sequence_of_events=[Event('b', 3)])))
        episode_1.examples = examples_1
        episode_2.examples = examples_2
        episodes = Episodes((episode_1, episode_2))

        episodes.to_json('episodes.txt')
        self.assertTrue(file_exists('episodes.txt'))
        # TODO: test 'episodes.txt' contents
        file_remove('episodes.txt')

        episodes.examples_to_json('examples.txt')
        self.assertTrue(file_exists('examples.txt'))

        with open('examples.txt') as f:
            result = f.read()
        expected = '''[[["a", 1], ["b", 2]], [["a", 2], ["b", 3]]]\n[[["b", 2]], [["b", 3]]]\n'''
        self.assertEqual(expected, result)
        file_remove('examples.txt')

        result = episodes.examples_to_json()
        self.assertEqual(expected, result)
Exemplo n.º 3
0
    def test_find_serial_episodes(self):
        sequence_of_events_1 = [Event('a', 1), Event('b', 3)]
        event_sequence_1 = EventSequence(
            sequence_of_events=sequence_of_events_1, start=0, end=4)
        sequence_of_events_2 = [Event('b', 2), Event('a', 3)]
        event_sequence_2 = EventSequence(
            sequence_of_events=sequence_of_events_2, start=0, end=4)
        event_sequences = EventSequences(
            event_sequences=[event_sequence_1, event_sequence_2])
        result = EventSequences(
            event_sequences=event_sequence_1).find_serial_episodes(
                3, 0.1, False, False)
        self.assertTrue(Episode(('a', )) in result)
        self.assertTrue(Episode(('b', )) in result)
        self.assertTrue(Episode(('a', 'b')) in result)

        result = event_sequences.find_serial_episodes(3, 0.083, False, False)
        self.assertEqual(len(result), 4)
        result = event_sequences.find_serial_episodes(3, 0.166, False, False)
        self.assertEqual(len(result), 3)
        result = event_sequences.find_serial_episodes(3, 0.5, False, False)
        self.assertEqual(len(result), 2)
        result = event_sequences.find_serial_episodes(3, 0.51, False, False)
        self.assertListEqual(result, [])
Exemplo n.º 4
0
    def test_to_json(self):
        sequence_of_events_1 = [
            Event('a', 1),
            Event('a', 2),
        ]
        sequence_of_events_2 = [
            Event('c', 5),
            Event('b', 6),
            Event('c', 6),
            Event('a', 7),
            Event('c', 8)
        ]
        event_sequence_1 = EventSequences(
            sequence_of_events=sequence_of_events_1, start=1, end=4)
        event_sequence_2 = EventSequences(
            sequence_of_events=sequence_of_events_2, start=3, end=9)
        event_sequences = EventSequences(event_sequences=(event_sequence_1,
                                                          event_sequence_2))

        result = event_sequences.to_json()
        expected = '''[[[["a", 1], ["a", 2]]], [[["c", 5], ["b", 6], ["c", 6], ["a", 7], ["c", 8]]]]'''
        self.assertEqual(expected, result)
Exemplo n.º 5
0
    def test_initialization_by_EventText(self):
        event_vocabulary = [{'term': 'kakskümmend viis'}, {'term': 'seitse'}]
        event_tagger = EventTagger(event_vocabulary,
                                   search_method='naive',
                                   conflict_resolving_strategy='ALL',
                                   return_layer=True)
        event_text = EventText('Arv kakskümmend viis on suurem kui seitse.',
                               event_tagger=event_tagger)

        event_sequence = EventSequence(event_text=event_text,
                                       classificator='term',
                                       time_scale='start')
        self.assertEqual(event_sequence.end, 42)
        self.assertEqual(event_sequence.start, 0)
        self.assertListEqual(
            event_sequence.sequence_of_events,
            [Event('kakskümmend viis', 4),
             Event('seitse', 35)])

        event_sequence = EventSequence(event_text=event_text,
                                       classificator='term',
                                       time_scale='start',
                                       start=3,
                                       end=35)
        self.assertEqual(event_sequence.end, 35)
        self.assertEqual(event_sequence.start, 3)
        self.assertListEqual(event_sequence.sequence_of_events,
                             [Event('kakskümmend viis', 4)])

        event_sequence = EventSequence(event_text=event_text,
                                       classificator='term',
                                       time_scale='cstart')
        self.assertEqual(event_sequence.end, 22)
        self.assertEqual(event_sequence.start, 0)
        self.assertListEqual(
            event_sequence.sequence_of_events,
            [Event('kakskümmend viis', 4),
             Event('seitse', 20)])

        event_sequence = EventSequence(event_text=event_text,
                                       classificator='term',
                                       time_scale='wstart')
        self.assertEqual(event_sequence.start, 0)
        self.assertEqual(event_sequence.end, 7)
        self.assertListEqual(
            event_sequence.sequence_of_events,
            [Event('kakskümmend viis', 1),
             Event('seitse', 5)])

        event_text = EventText('Sündmusteta tekst.', event_tagger=event_tagger)

        event_sequence = EventSequence(event_text=event_text,
                                       classificator='term',
                                       time_scale='cstart')
        self.assertEqual(event_sequence.start, 0)
        self.assertEqual(event_sequence.end, 18)
        self.assertEqual(len(event_sequence.sequence_of_events), 0)

        event_sequence = EventSequence(event_text=event_text,
                                       classificator='term',
                                       time_scale='wstart')
        self.assertEqual(event_sequence.start, 0)
        self.assertEqual(event_sequence.end, 3)
        self.assertEqual(len(event_sequence.sequence_of_events), 0)
Exemplo n.º 6
0
    def test_simple_initialization(self):
        sequence_of_events = [
            Event('kuus', 15),
            Event('seitse', 16),
            Event('kaks', 9),
            Event('kolm', 13),
            Event('üks', 5),
            Event('viis', 14),
            Event('neli', 13)
        ]
        event_sequence = EventSequence(sequence_of_events=sequence_of_events,
                                       start=9,
                                       end=15)
        sequence_of_events_result = [
            Event('kaks', 9),
            Event('kolm', 13),
            Event('neli', 13),
            Event('viis', 14)
        ]

        self.assertEqual(event_sequence.start, 9)
        self.assertEqual(event_sequence.end, 15)
        self.assertListEqual(event_sequence.sequence_of_events,
                             sequence_of_events_result)
Exemplo n.º 7
0
 def test_shift(self):
     event = Event('midagi', 23)
     event.shift(7)
     self.assertEqual(event.event_time, 30)
Exemplo n.º 8
0
 def test_eq(self):
     self.assertTrue(Event(1, 2) == Event(1, 2))
     self.assertFalse(Event(None, None) == None)
     self.assertFalse(Event(1, 2) == Event(2, 2))
     self.assertFalse(Event(1, 4) == Event(1, 3))
Exemplo n.º 9
0
 def test_lt(self):
     self.assertTrue(Event(2, 2) < Event(1, 3))
     self.assertFalse(Event(1, 2) < Event(2, 2))
     self.assertFalse(Event(1, 4) < Event(2, 3))
Exemplo n.º 10
0
 def test_initialization(self):
     event = Event('midagi', 23)
     self.assertEqual(event.event_type, 'midagi')
     self.assertEqual(event.event_time, 23)
Exemplo n.º 11
0
    def test_episode_frequences(self):
        # general case, only_full_windows==False
        sequence_of_events = [
            Event('a', -1),
            Event('a', 1),
            Event('b', 3),
            Event('c', 4),
            Event('b', 5),
            Event('a', 8)
        ]
        event_sequences = EventSequences(sequence_of_events=sequence_of_events,
                                         start=0,
                                         end=8)
        e1 = Episode(('a'))
        e2 = Episode(('a', 'b'))
        e3 = Episode(('b', 'b'))
        e4 = Episode(('b'))
        episodes = Episodes((e1, e2, e3, e4))
        event_sequences.episode_frequences(episodes, 5, False, True)
        self.assertEqual(e1.abs_support, 5)
        self.assertEqual(e2.abs_support, 3)
        self.assertEqual(e3.abs_support, 3)
        self.assertEqual(e4.abs_support, 7)

        # general case, only_full_windows==True
        sequence_of_events = [
            Event('a', 1),
            Event('b', 3),
            Event('c', 4),
            Event('b', 5),
            Event('a', 8)
        ]
        event_sequences = EventSequences(sequence_of_events=sequence_of_events,
                                         start=0,
                                         end=8)
        e1 = Episode(('a'))
        e2 = Episode(('a', 'b'))
        e3 = Episode(('b', 'b'))
        e4 = Episode(('b'))
        collection_of_serial_episodes = (e1, e2, e3, e4)
        event_sequences.episode_frequences(collection_of_serial_episodes, 5,
                                           True, True)
        self.assertEqual(e1.abs_support, 2)
        self.assertEqual(e2.abs_support, 2)
        self.assertEqual(e3.abs_support, 3)
        self.assertEqual(e4.abs_support, 4)

        # empty sequence_of_events
        sequence_of_events = []
        event_sequences = EventSequences(sequence_of_events=sequence_of_events,
                                         start=0,
                                         end=8)
        e1 = Episode(('a'))
        collection_of_serial_episodes = (e1, )
        event_sequences.episode_frequences(collection_of_serial_episodes, 3,
                                           False, True)
        self.assertEqual(e1.abs_support, 0)

        # empty collection_of_serial_episodes
        sequence_of_events = [Event('a', 1), Event('b', 3), Event('c', 6)]
        event_sequences = EventSequences(sequence_of_events=sequence_of_events,
                                         start=0,
                                         end=8)
        collection_of_serial_episodes = []
        result = event_sequences.episode_frequences(
            collection_of_serial_episodes, 3, False, True)
        self.assertListEqual(result, [])

        # allow_intermediate_events==False
        sequence_of_events = [
            Event('a', 1),
            Event('b', 3),
            Event('c', 3),
            Event('d', 5)
        ]
        event_sequences = EventSequences(sequence_of_events=sequence_of_events,
                                         start=0,
                                         end=6)
        e0 = Episode(('a', 'b'))
        e1 = Episode(('a', 'c'))
        e2 = Episode(('b', 'd'))
        e3 = Episode(('c', 'd'))
        e4 = Episode(('a', 'd'))
        e4p = Episode(('d', 'd'))
        e5 = Episode(('a', 'b', 'd'))
        e6 = Episode(('a', 'c', 'd'))
        e7 = Episode(('a', 'b', 'b'))
        e8 = Episode(('b', 'c', 'd'))
        e9 = Episode(('a', 'b', 'c', 'd'))
        collection_of_serial_episodes = (e0, e1, e2, e3, e4, e4p, e5, e6, e7,
                                         e8, e9)
        event_sequences.episode_frequences(collection_of_serial_episodes, 5,
                                           False, False)
        self.assertEqual(e0.abs_support, 3)
        self.assertEqual(e1.abs_support, 3)
        self.assertEqual(e2.abs_support, 3)
        self.assertEqual(e3.abs_support, 3)
        self.assertEqual(e4.abs_support, 0)
        self.assertEqual(e5.abs_support, 1)
        self.assertEqual(e6.abs_support, 1)
        self.assertEqual(e7.abs_support, 0)
        self.assertEqual(e8.abs_support, 0)
        self.assertEqual(e9.abs_support, 0)

        # allow_intermediate_events==True
        sequence_of_events = [
            Event('a', 1),
            Event('b', 3),
            Event('c', 3),
            Event('d', 5),
            Event('d', 5)
        ]
        event_sequences = EventSequences(sequence_of_events=sequence_of_events,
                                         start=0,
                                         end=6)
        e0 = Episode(('a', 'b'))
        e1 = Episode(('a', 'c'))
        e2 = Episode(('b', 'd'))
        e3 = Episode(('c', 'd'))
        e4 = Episode(('a', 'd'))
        e5 = Episode(('a', 'b', 'd'))
        e6 = Episode(('a', 'c', 'd'))
        e7 = Episode(('a', 'b', 'b'))
        e8 = Episode(('b', 'c', 'd'))
        e9 = Episode(('a', 'b', 'c', 'd'))
        collection_of_serial_episodes = (e0, e1, e2, e3, e4, e5, e6, e7, e8,
                                         e9)
        event_sequences.episode_frequences(collection_of_serial_episodes, 5,
                                           False, True)
        self.assertEqual(e0.abs_support, 3)
        self.assertEqual(e1.abs_support, 3)
        self.assertEqual(e2.abs_support, 3)
        self.assertEqual(e3.abs_support, 3)
        self.assertEqual(e4.abs_support, 1)
        self.assertEqual(e5.abs_support, 1)
        self.assertEqual(e6.abs_support, 1)
        self.assertEqual(e7.abs_support, 0)
        self.assertEqual(e8.abs_support, 0)
        self.assertEqual(e9.abs_support, 0)
Exemplo n.º 12
0
    def test_find_examples(self):
        sequence_of_events = [
            Event('a', 1),
            Event('a', 2),
            Event('b', 2),
            Event('b', 3),
            Event('a', 4),
            Event('c', 5),
            Event('b', 6),
            Event('c', 6),
            Event('a', 7),
            Event('c', 8)
        ]
        event_sequences = EventSequences(sequence_of_events=sequence_of_events,
                                         start=1,
                                         end=9)
        episodes = Episodes(Episode(('a', 'b')))
        event_sequences.find_episode_examples(episodes=episodes,
                                              window_width=3,
                                              allow_intermediate_events=True,
                                              number_of_examples='ALL')
        result = episodes[0].examples
        expected = EventSequences(event_sequences=(EventSequence(
            sequence_of_events=[Event('a', 1), Event('b', 2)]
        ), EventSequence(
            sequence_of_events=[Event('a', 1), Event('b', 3)]
        ), EventSequence(
            sequence_of_events=[Event('a', 2), Event('b', 3)]
        ), EventSequence(
            sequence_of_events=[Event('a', 4), Event('b', 6)])))
        self.assertTrue(result == expected)

        event_sequences.find_episode_examples(episodes=episodes,
                                              window_width=3,
                                              allow_intermediate_events=False,
                                              number_of_examples='ALL')
        result = episodes[0].examples
        expected = EventSequences(event_sequences=(EventSequence(
            sequence_of_events=[Event('a', 1), Event('b', 2)]
        ), EventSequence(
            sequence_of_events=[Event('a', 2), Event('b', 3)])))
        self.assertTrue(result == expected)

        sequence_of_events = [
            Event('b', 1),
            Event('a', 2),
            Event('b', 3),
            Event('a', 4),
            Event('b', 5)
        ]
        event_sequences = EventSequences(sequence_of_events=sequence_of_events,
                                         start=1,
                                         end=6)
        episodes = Episodes(Episode(('b', 'a', 'b')))
        event_sequences.find_episode_examples(episodes=episodes,
                                              window_width=6,
                                              allow_intermediate_events=True,
                                              number_of_examples='ALL')
        result = episodes[0].examples
        expected = EventSequences(event_sequences=(
            EventSequence(sequence_of_events=[
                Event('b', 1), Event('a', 2),
                Event('b', 3)
            ]),
            EventSequence(sequence_of_events=[
                Event('b', 1), Event('a', 2),
                Event('b', 5)
            ]),
            EventSequence(sequence_of_events=[
                Event('b', 1), Event('a', 4),
                Event('b', 5)
            ]),
            EventSequence(sequence_of_events=[
                Event('b', 3), Event('a', 4),
                Event('b', 5)
            ])))
        self.assertTrue(result == expected)

        episodes = Episodes(Episode(('b', 'a', 'b')))
        event_sequences.find_episode_examples(episodes=episodes,
                                              window_width=6,
                                              allow_intermediate_events=False,
                                              number_of_examples='ALL')
        result = episodes[0].examples
        expected = EventSequences(event_sequences=(EventSequence(
            sequence_of_events=[Event('b', 1),
                                Event('a', 2),
                                Event('b', 3)]),
                                                   EventSequence(
                                                       sequence_of_events=[
                                                           Event('b', 3),
                                                           Event('a', 4),
                                                           Event('b', 5)
                                                       ])))
        self.assertTrue(result == expected)

        episodes = Episodes(Episode(('b', )))
        event_sequences.find_episode_examples(episodes=episodes,
                                              window_width=6,
                                              allow_intermediate_events=True,
                                              number_of_examples='ALL')
        result = episodes[0].examples
        expected = EventSequences(
            event_sequences=(EventSequence(sequence_of_events=[Event('b', 1)]),
                             EventSequence(sequence_of_events=[Event('b', 3)]),
                             EventSequence(
                                 sequence_of_events=[Event('b', 5)])))
        self.assertTrue(result == expected)

        episodes = Episodes(Episode(('b', )))
        event_sequences.find_episode_examples(episodes=episodes,
                                              window_width=6,
                                              allow_intermediate_events=False,
                                              number_of_examples='ALL')
        result = episodes[0].examples
        expected = EventSequences(
            event_sequences=(EventSequence(sequence_of_events=[Event('b', 1)]),
                             EventSequence(sequence_of_events=[Event('b', 3)]),
                             EventSequence(
                                 sequence_of_events=[Event('b', 5)])))
        self.assertTrue(result == expected)
Exemplo n.º 13
0
 def test_shift(self):
     event = Event('midagi', 23)
     event.shift(7)
     self.assertEqual(event.event_time, 30)