728x90

 Log skeleton은 특정 trace가 이벤트 로그가 표현할 수 있는 behavior에 속하는지의 여부를 결정하는 classification에 도움을 준다. 이번 포스팅에서는 PM4Py에서 log skeleton을 구하는 방법에 대해 알아보겠다. 

 

1. 우선, 분석할 XES 파일을 import하여 이를 log에 저장한다.

from pm4py.objects.log.importer.xes import importer as xes_importer
import os
log = xes_importer.apply(os.path.join("tests", "input_data", "running-example.xes"))

 

2. log skeleton을 구한다.

from pm4py.algo.discovery.log_skeleton import algorithm as lsk_discovery
skeleton = lsk_discovery.apply(log, parameters={lsk_discovery.Variants.CLASSIC.value.Parameters.NOISE_THRESHOLD: 0.0})

3. 구한 log skeleton을 확인한다. 

print(skeleton)

다음과 같은 결과가 나오면 성공이다.

{‘equivalence’: {(‘pay compensation’, ‘register request’), (‘examine thoroughly’, ‘register request’), (‘reject request’, ‘register request’), (‘pay compensation’, ‘examine casually’)}, ‘always_after’: {(‘register request’, ‘check ticket’), (‘examine thoroughly’, ‘decide’), (‘register request’, ‘decide’)}, ‘always_before’: {(‘pay compensation’, ‘register request’), (‘pay compensation’, ‘decide’), (‘pay compensation’, ‘check ticket’), (‘reject request’, ‘decide’), (‘pay compensation’, ‘examine casually’), (‘reject request’, ‘check ticket’), (‘examine thoroughly’, ‘register request’), (‘reject request’, ‘register request’)}, ‘never_together’: {(‘pay compensation’, ‘reject request’), (‘reject request’, ‘pay compensation’)}, ‘directly_follows’: set(), ‘activ_freq’: {‘register request’: {1}, ‘examine casually’: {0, 1, 3}, ‘check ticket’: {1, 2, 3}, ‘decide’: {1, 2, 3}, ‘reinitiate request’: {0, 1, 2}, ‘examine thoroughly’: {0, 1}, ‘pay compensation’: {0, 1}, ‘reject request’: {0, 1}}}

구해진 log skeleton을 이용하여 각 trace가 해당 이벤트 로그로부터 표현될 수 있는 trace인지 확인할 수 있다. 그 코드는 다음과 같다.

4. 특정 이벤트 로그 내의 trace들이 log skeleton으로부터 표현될 수 있는 trace인지 확인한다.

from pm4py.algo.conformance.log_skeleton import algorithm as lsk_conformance
conf_result = lsk_conformance.apply(log, skeleton) #log: trace classification을 하고 싶은 새로운 이벤트 로그
for trace in conf_result:
    print(conf_result)

위 코드를 실행하면, 각 trace가 기존 이벤트 로그로부터 도출될 수 있는 trace인지의 여부가 도출된다.

 

 이번 포스팅에서는 log skeleton을 PM4Py를 이용해 도출하는 방법에 대해 알아보았다. 블로그를 열심히 쓰려고 하는데 독일에 있을 때만큼 열심히 쓰기가 쉽지 않다. 출퇴근 똑같이 하고 밖에는 오히려 덜 다니는데 왤까.... 

300x250
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기