이 Github 리포지토리는 두 프로세스 모델에서 활동을 일치시키기위한 '유사성 공명'개념의 파이썬 구현으로 구성됩니다. 알고리즘의 목표는 레이블 유사성의 개념을 확장하고이를 전 세계적으로 맥락적인 유사성으로 칭찬하는 것입니다. 원래 논문과 아이디어는 Nour Assy, Boudewijn F. van Dongen 및 Wil Mp van der Aalst가 아인트호벤 기술 대학에서 저술했습니다. 이론을 참조하려면 원본 논문 (링크)을 살펴보십시오. 또는 저자가 여기에서 사용한 프레젠테이션 슬라이드 (PDF 다운로드)를 확인할 수 있습니다.
알고리즘은 Python 3.9에서 개발되었습니다. 제공된 요구 사항 .txt PIP 파일을 사용하여 프로그램이 작동하는 데 필요한 모든 종속성을 설치할 수 있습니다. 가상 환경에 이것을 설치하는 것이 좋습니다. 주요 종속성은 다음과 같습니다.
선택 사항 : 테스트를위한 초기 레이블 유사성 값을 얻으려면 패키지 스파이가 사용되었습니다. 이러한 종속성은 상당히 크며 (700MB+) 별도의 파일 (요구 사항 _spacy.txt)에 있습니다. 이 패키지를 사용하려면 설치하십시오. 자신의 초기 유사성 측정을 사용하려는 경우 키 : 튜플 [str, str] -> vally : float.
다운로드 된 저장소를 환경의 Python 사이트 패키지 폴더에 배치하십시오. (예 : /usr/local/anaconda3/envs/myenv/lib/python3.9/site-packages/)
경고 : 초기 레이블 유사성을 계산하기 위해 큰 모델과 함께 스피크를 사용하기로 선택했습니다. 다운로드하는 데 시간이 걸립니다. 요구 사항을 통해 설치하면 추가 모듈이 자동으로 다운로드됩니다. 종속성을 수동으로 설치하는 경우 여기 에서이 모듈도 가져 오십시오.
Model1 : 소스 모델 (Petri Net)
Model2 : 대상 모델 (Petri Net)
SIML : 초기 레이블 유사성 값 (사전 | 키 : 튜플 [str, str] -> float)
A : 유사성 값이 글로벌 상황 유사성에 얼마나 의존 해야하는지 정의합니다. 0은 전혀 아니고 1.0은 전부입니다. A ∈ [0, 1]
K : 이웃으로 간주되어야하는 전환의 거리를 정의합니다. k ∈ N+
l_thresh : 매치 우도 비율 임계 값을 비슷한 것으로 간주합니다. l_thresh ∈ [0, 1]
import pm4py
from similarity_resonance . src . label_sim import algorithm as label_sim
from similarity_resonance . src . similarity_resonance import apply as sim_res
from similarity_resonance . src . matching import match_single
petri1 = pm4py . read_petri_net ( 'link/to/petri/net/1' )
petri2 = pm4py . read_petri_net ( 'link/to/petri/net/2' )
siml = label_sim ( petri1 [ 0 ], petri2 [ 0 ])
similarity_values = sim_res ( petri1 , petri2 , siml , a = 0.3 , k = 2 , l_thresh = 0.2 )
top_matches = match_single ( similarity_values )
for key , value in top_matches . items ():
print ( key , value )