该GITHUB存储库包括在两个过程模型中匹配活动的“相似性共振”概念的Python实现。该算法的目的是扩展标签相似性的概念,并以全球上下文相似性来称赞它。原始论文和想法是由Eindhoven技术大学的Nour Assy,Boudewijn F. Van Dongen和Mp van der Aalst撰写的。有关理论的参考,请查看原始论文(链接)。另外,您可以查看作者在此处使用的演示幻灯片(PDF下载)
该算法是在Python 3.9上开发的。提供的要求。txtPip文件可用于安装程序工作所需的所有依赖项。我建议将其安装在虚拟环境中。主要依赖性是:
可选:为了获得测试的初始标签相似性值,使用了软件包。这些依赖项很大(700MB+),因此在单独的文件中(unignts_spacy.txt)。如果您打算使用此软件包,请也安装。如果您想使用自己的初始相似性测量值,请确保以字典的格式将SIML输出在其中:tuple [str,str] - > valuat:float。
确保将下载的存储库放入环境的Python站点包装夹中。 (例如/usr/local/anaconda3/envs/myenv/lib/python3.9/site-packages/)
警告:为了计算初始标签的相似性,我选择与大型模型一起使用Spacy。这将需要一些时间才能下载。通过需求安装。TXT文件将自动下载其他模块。如果手动安装依赖项,请确保还从此处获取此模块。
Model1:源模型(Petri Net)
模型2:目标模型(培养皿网)
SIML:初始标签相似性值(字典|键:元组[str,str] - > float)
答:定义相似性值应依赖于全局上下文相似性的程度。 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 )