• Nenhum resultado encontrado

5. Processamento de Eventos

5.2. Reconhecimento de Crônicas

O Reconhecimento de Crônicas é uma forma de representação do conhecimento, inicialmente proposto por (MACKWORTH, 1985) e posteriormente desenvolvido em trabalhos posteriores que chegam até os dias de hoje. Notadamente podemos citar os trabalhos de (DECHTER R., 1991), de (DOUSSON C., 1993) e de (GHALLAB, 1996).

Neste tipo de representação, definimos crônica (GHALLAB, 1996) como uma representação temporal da ocorrência de uma quantidade finita de eventos, sujeita a restrições temporais, e com os intervalos de ocorrências de cada evento da crônica determinados por limites mínimos e máximos. A Figura 13 tenta dar uma ideia aproximada de uma crônica e suas instanciações.

Figura 13 – Exemplo de uma representação de uma crônica e suas instâncias

A Figura 13 mostra três candidatas a instanciações (i1, i2 e i3) de uma crônica. Cada

candidata possui a mesma sequência Ev0, Ev1, Ev2 e Ev3. Os intervalos entre colchetes

especificam os limites temporais mínimos e máximos, i.e. [Mimx,Maxx]. A informação

que cada evento, i.e. t0, t1, etc., carrega é um timestamp que indica ano, mês, dia, hora,

46

representado pelo número de milissegundos passados desde 1º de Janeiro de 1970. A verificação do tempo do evento atual, em milissegundos, para os limites mínimos e máximos especificados se dá pela adição dos mesmos ao timestamp do evento anterior, a partir do primeiro evento da crônica, i.e. Ev0, ou seja, os limites para Ev1 serão os

valores de Min0 e Max0 somados ao tempo t0 daquela instância de Ev1. Note que os

limites mínimos e máximos de ocorrência dos eventos seguintes são fornecidos sempre pelos eventos anteriores, sendo que o último evento da crônica não possui, obviamente, informação de limites para o próximo evento. Note também que todas as instanciações de uma mesma crônica possuem os mesmos limites mínimos e máximos para cada evento seguinte, sendo que o que diferencia uma instanciação de outra é o valor de seus timestamps, o que não significa que não possa haver instanciações diferentes com um ou outro evento com o mesmo timestamp.

O funcionamento do Reconhecimento de Crônicas se dá da seguinte forma, os eventos são monitorados de um log/stream (histórico) de entrada. Caso um evento Ev0

ocorra, o timestamp do mesmo é guardado na crônica, criando uma primeira candidata a instância da mesma (i1). Caso não ocorram novos eventos Ev0, nenhuma nova instância

é criada e a crônica se resume à primeira instância, caso o contrário será criada uma nova instância para cada ocorrência de Ev0, i.e. i2, i3, etc.

Caso ocorra um evento Ev1, e como no caso de Ev0 pode ocorrer de 0 a N eventos

Ev1 e o mesmo para os demais eventos da crônica, será verificado se o mesmo ocorreu

dentro dos intervalos dos limites mínimos (Min0) e máximos (Max0) de alguma

instanciação com Ev1 disponível, respeitada a ordem de criação das instanciações da

crônica. Se sim, o timestamp do mesmo é guardado na respectiva instanciação. Caso o timestamp de Ev1 ocorra abaixo do limite mínimo de uma dada instanciação, a mesma

não é descartada ainda porque podem ocorrer futuramente outros eventos Ev1 dentro

dos limites mínimos e máximos. Caso o timestamp de Ev1 ocorra acima do limite

máximo de uma dada candidata a instancia, a mesma é descartada, mesmo que os eventos seguintes ocorram dentro dos intervalos esperados naquela instancia. Mesmo sem a ocorrência de novos eventos no histórico, é feita uma verificação contínua para verificar se os limites máximos das instanciações já não foram ultrapassados. Desta forma, as instancias irão sendo descartadas atendam mais as restrições da crônica.

47

No caso de situações mais complexas e que envolvam mais de uma crônica, o mesmo raciocínio é aplicado, sendo que além da verificação das candidatas a instancias, irá se verificar se os eventos analisados também acarretam a criação de novas candidatas a instancias nestas outras crônicas.

No exemplo da figura anterior, na crônica ocorreram três instanciações que perduraram juntas até a ocorrência de um evento Ev2 em 552ms que invalidou a

instância i1, mas que estando dentro dos limites para Ev2 na instância i2, teve o

timestamp guardando na mesma. A ocorrência de um novo evento Ev2, agora em

567ms, foi guardado no Ev2 da instância i3, assim na crônica continuaram válidas as

instâncias i2 e i3. Em 695ms ocorreu um evento Ev3, que apesar de estar dentro dos

limites para a instância i1, a mesma já fora invalidada anteriormente pelo descarte da

primeira ocorrência de Ev2, logo o evento Ev3 foi guardado em Ev3 da instância i2 por

estar dentro dos limites do mesmo. E, finalmente, aos 1107ms ocorreu novamente um evento Ev3. Só que, por estar fora dos limites de Ev3 da instância i3, a ocorrência deste

evento provocou a invalidação da mesma.

Claro que poderíamos ter também a hipótese deste último Ev3 ocorrer num

timestamp mais baixo, por exemplo, aos 703ms, então ai teríamos as crônicas i2 e i3

válidas. Qual delas nós poderíamos escolher como o resultado mais preciso da crônica para a solução do problema que a mesma procura resolver? Poderíamos, neste caso, considerar como resposta válida a primeira instanciação a terminar? Seria isto correto?

Isto vai depender do problema que esteja sendo analisado e não é um motivo de preocupação agora, pois se está apenas fazendo o Reconhecimento de Crônicas neste momento. Posteriormente, numa segunda etapa, se teria que escolher algum critério para achar a solução ao problema, que poderia ou não levar a uma resposta correta ou errônea, mas que, como dito antes, não é a nossa preocupação neste momento.

Este é um exemplo básico e simplificado, com apenas uma crônica, do funcionamento do Reconhecimento de Crônicas. Na prática as análises serão feitas em modelos mais complexos que envolvam mais de uma crônica. A Figura 14 dá uma ideia bem mais realista da complexidade que pode atingir um problema de Reconhecimento de Crônicas.

48

Figura 14 – Exemplo de Reconhecimento de Crônicas mais complexo

A aplicação do Reconhecimento de Crônicas na solução do problema-objeto deste trabalho será vista com mais detalhes à frente.

5.3. Processamento de Eventos Baseado em

Documentos relacionados