## Dieses Skript nimmt an, dass dein aktuelles Arbeitsverzeichnis PATH ist, deine Input-Dateien in PATH/affix liegen, und das DISSECT toolkit in PATH/dissect LANG=de_DE.UTF-8 export PYTHONPATH="/dissect/src/":$PYTHONPATH #### Training /opt/python/bin/python2.7 dissect/src/pipelines/train_composition.py -i affix/Prefix_train.txt -m lexical_func -a affix/german_cbowW5D400.pkl -p affix/german_cbowW5D400.pkl -o affix --export_params True ## Dieser Befehl führt das Training durch. Das Trainingsfile ist zB Prefix_train.txt, und sieht so aus: ## ab halten abhalten ## ab steigen absteigen ## ## D.h. die Funktion "ab" wird auf "halten" angewandt um "abhalten" zu erzeugen ## Die Argumente für diese Funktion (hier: die word stems, "halten") befinden sich im semantic space, der als -a definiert wird (argument space) ## Die komplexen Trainingsbeispiele (hier "abhalten") befinden sich im semantic space, der als -p definiert wird (peripheral space, in dem Fall der gleiche) ## -o definiert den Ordner, in dem der Output landen soll, export_params==TRUE gibt die trainierten Matrizen nochmal als extra file aus ## -m defininert das Kompositionsmodell, das angewandt werden soll (hier: lineare Funktion) ## ## Die Trainingfiles, die ich hochgeladen habe, sind: ## ## Prefix_train.txt Erstellt aus deiner Prefix.dat ## Prefix_bothtrain.txt Erstellt aus Prefix.dat + ASA.dat, also sowohl "ab handeln abhandeln" als auch "ab handlung abhandlung" ## Suffix_train.txt Erstellt aus deiner Suffix.dat ## Suffix_bothtrain.txt Erstellt aus Suffix.dat + ASA.dat, also sowohl "und handeln handlung" als auch "ung abhandeln abhandlung" ## ## Es gibt dann eine Ausgabe, die dir sagt mit wie vielen Trainingsbeispielen jede Affix-Funktion trainiert wird ## Außerdem steht ganz oben in der Ausgabe, mit wie vielen Items des Sets tatsächlich trainiert wird. ## Wenn entweder das Argument (word stem) oder das Trainingsitem (komplexes wort) nicht im semantic space ist, dann wird es nicht benutzt ## In dem semantic space hier sind nur Wörter mit einer Frequenz > 50, daher fliegen denke ich einige seltene Items raus #### Composition /opt/python/bin/python2.7 dissect/src/pipelines/apply_composition.py -i affix/Prefix_compose.txt -o affix --load_model affix/TRAINED_COMP_MODEL.lexical_func.Prefix_train.txt.pkl -a affix/german_cbowW5D400.pkl ## Dieser Befehl erstellt mithilfe der trainierten Affix-Funktionien dann die kompositionalen Vektoren ## -i enthält Tupel wie "ab feiern abfeiern". Die trainierte Funktion im ersten Feld wird auf das Argument im zweiten Feld angewandt, um die kompositionale Bedeutung für das Element im dritten Feld zu erzeugen ## -o ist wieder der Ordner, in dem der Output landet ## --load_model definiert, woher das Kompositionsmodell geladen werden soll (hier: die im vorigen Schritt trainieren Matrizen) ## der Name dieses Modells ergibt sich aus TRAINED_COMP_MODEL + Art des Modells + Name der Datei, mit der traininert wurde ## #### Similarities ## Jetzt wurden kompositionale Vektoren berechnet, und du kannst Cosinusähnlichkeiten berechnen # whole-word: Sowohl word stem als auch komplexes Wort beide im ursprünglichen semantic space /opt/python/bin/python2.7 dissect/src/pipelines/compute_similarities.py -i affix/Prefix_compose.txt -c 2,3 -m cos -s affix/german_cbowW5D400.pkl -o affix ## -c 2,3: Ähnlichkeit zwischen zweiter und dritter Spalte des Inputfiles (bei "ab feiern abfeiern" also zwischen "feiern" und "abfeiern") ## -s definiert den semantic space, in dem die Berechnung durchgeführt wird # compositional: word stem im ursprünglichen semantic space, komplexes Wort im kompositional erstellten /opt/python/bin/python2.7 dissect/src/pipelines/compute_similarities.py -i affix/Prefix_compose.txt -c 2,3 -m cos -s affix/german_cbowW5D400.pkl,affix/COMPOSED_SS.LexicalFunction.Prefix_compose.txt.pkl -o affix ## durch -c 2,3 definiert werden wieder Ähnlichkeiten zwischen 2. und 3. Spalte im Inputfile berechnet. ## Die bei -c als erstes defininerte Spalte (2) wird im zuerst bei -s definierten semantic space nachgeschlagen (hier : affix/german_cbowW5D400.pkl) ## Die bei -c als zweites defininerte Spalte (3) wird im als zweites bei -s definierten space nachgeschlagen (hier: affix/COMPOSED_SS.LexicalFunction.Prefix_compose.txt.pkl) ## Anmerkung: Ich habe, in der Studie mit Eva und Marco, die Erfahrung gemacht, dass sich die kompositionalen und die whole-word Vektoren unglaublich ## ähnlich sind, wenn das Test Set auch zum Trainieren der Funktionen verwendet wird. Aber irgendwie ist das ja klar: ## Wenn eine 400*400 Matrix für ein Affix an sagen wir mal 100 Items trainiert wird, hat diese Matrix ja genug Stellschrauben, ## jedes dieser 100 Items perfekt vorherzusagen