Dieses Github -Repository besteht aus einer Python -Implementierung des Konzepts der Ähnlichkeitsresonanz für die Übereinstimmung von Aktivitäten in zwei Prozessmodellen. Das Ziel des Algorithmus ist es, den Begriff der Ähnlichkeiten zu erweitern und ihn mit einer globalen kontextuellen Ähnlichkeit zu ergänzen. Das Originalpapier und die ursprüngliche Idee wurden von Nour Assy, Boudewijn F. Van Dongen und Wil MP Van der Aalst an der Technischen Universität Eindhoven verfasst. Als Referenz der Theorie finden Sie bitte einen Blick auf das Originalpapier (Link). Alternativ können Sie sich die Präsentationsfolien ansehen, die der hier verwendete Autor verwendet hat (PDF -Download).
Der Algorithmus wurde auf Python 3.9 entwickelt. Die bereitgestellte Anforderungen.TXT -PIP -Datei kann verwendet werden, um alle Abhängigkeiten zu installieren, die das Programm zum Arbeiten benötigen. Ich würde vorschlagen, dies in einer virtuellen Umgebung zu installieren. Die Hauptabhängigkeiten sind:
Optional: Um einen anfänglichen Etikett -Ähnlichkeitswert für das Testen zu erhalten, wurde das Paketspacy verwendet. Diese Abhängigkeiten sind recht groß (700 MB+) und befinden sich daher in einer separaten Datei (Required_Spacy.txt). Wenn Sie dieses Paket verwenden möchten, installieren Sie es auch. Wenn Sie Ihre eigene anfängliche Ähnlichkeitsmessung verwenden möchten, stellen Sie sicher, dass die SIML -Ausgabe im Format eines Wörterbuchs, bei dem Schlüssel: Tuple [STR, STR] -> Wert: Float.
Stellen Sie sicher, dass das heruntergeladene Repository in den Ordner Python Site-Packages der Umgebung eingeleitet wird. (Eg. /usr/local/anaconda3/envs/myenv/lib/python3.9/site-packages/)
WARNUNG: Um die anfängliche Ähnlichkeit von Etiketten zu berechnen, habe ich mich entschieden, Spacy zusammen mit dem großen Modell zu verwenden. Dies wird einige Zeit zum Herunterladen dauern. Durch die Installation der Anforderungen.TXT -Datei wird das zusätzliche Modul automatisch heruntergeladen. Wenn Sie die Abhängigkeiten manuell installieren, erhalten Sie dieses Modul von hier auch.
Modell1: Quellmodell (Petri -Netz)
Modell2: Zielmodell (Petrisch NET)
SIML: EINFÜHRUNGSZEICHNISSTEME (Dictionary | Schlüssel: Tuple [str, str] -> float)
A: Definiert, wie viel der Ähnlichkeitswert auf die globale kontextbezogene Ähnlichkeit beruhen sollte. 0 ist überhaupt nicht, 1.0 ist alles. a ∈ [0, 1]
K: Definiert den Abstand vom Übergang, der als Nachbar angesehen werden sollte. k ∈ N+
L_Thresh: Definiert die Übereinstimmung mit dem Match -Likelihood -Ratio -Schwellenwert als ähnlich. 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 )