
Installation (Linux)
--------------------

Öffnen Sie ein Terminal und gehen Sie zu dem Versanalyse-Verzeichnis.

Erzeugen Sie eine virtuelle Python-Umgebung mit dem Befehl:
> python -m venv venv/

Aktivieren Sie die virtuelle Python-Umgebung:
> source venv/bin/activate

Installieren Sie alle benötigten Python-Pakete:
> python -m pip install -r requirements.txt
(Dieser Schritt dauert längere Zeit.)

Deaktivieren Sie am Schluss die virtuelle Python-Umgebung 
> deactivate


Installation (Windows)
----------------------

Installieren Sie die Programmiersprache Python.

Starten Sie im Versanalyse-Ordner die Eingabeaufforderung.
> cmd

Erzeugen Sie eine virtuelle Python-Umgebung mit dem Befehl:
> python -m venv venv/

Aktivieren Sie die virtuelle Python-Umgebung :
> venv\Scripts\activate

Installieren Sie alle benötigten Python-Pakete:
> python -m pip install -r requirements.txt
(Dieser Schritt dauert längere Zeit.)

Deaktivieren Sie am Schluss die virtuelle Python-Umgebung:
> deactivate


Verwendung
----------

Öffnen Sie ein Terminal oder die Powershell unter Windows und wechseln
Sie in das Versanalyse-Verzeichnis.

Aktivieren Sie die virtuelle Python-Umgebung:
> source venv/bin/activate

Verszeilen analysieren mit Ausgabe im Spaltenformat
> python versanalyse.py Texte/Hartmann-Iwein.txt

Verszeilen analysieren mit detaillierter Ausgabe
> python versanalyse.py -v Texte/Hartmann-Iwein.txt

Tristanverse werden als Reimpaar-Verse erkannt und analysiert
> python versanalyse.py Texte/tristan.txt

Das Nibelungenlied wird als Strophenlyrik erkannt und es wird eine
Strophenformel berechnet:
> python versanalyse.py Texte/nibelungenlied.txt

Sie Strophenformel kann auch vorgegeben werden:
> python versanalyse.py -f '4k 3m 4k 3m 4k 3m 4k 4m' Texte/nibelungenlied.txt

Bei der Kudrun muss wegen der Nibelungenverse mit der Option -K
eine komplexere Strophenformel berechnet werden:
> python versanalyse.py -K Texte/kudrun.txt

Bei freieren Versen wird keine Strophenformel berechnet
> python versanalyse.py Texte/Walter_Leich_C.txt


Eingabeformat
-------------

Jeder Vers steht auf einer separaten Zeile.
Auf jede Strophe folgt eine Leerzeile.
Bei Langversen sollte zwischen An- und Abvers ein Tabulatorzeichen stehen.
Überschriften, Strophennummern und Ähnliches sollten entfernt werden.

Die Großschreibung von Wörtern am Satzanfang sollte rückgängig gemacht
werden, weil die Versanalyse großgeschriebene Wörter als Eigennamen
behandelt. Dazu kann folgendes Programm verwendet werden:
  cmd/kleinschreibung.py lyrikdatei.txt > lyrikdatei-norm.txt
Das Programm markiert unklare Fälle für die manuelle Korrektur.


Intern verwendete Kodierungen
-----------------------------

Das Versanalyse-Programm zerlegt die Verse in Silben und kodiert die
Silben mit den folgenden Symbolen:
   
   L lange betonte Silbe
   l lange unbetonte Silbe
   λ lange unbetonte Silbe mit Schwa-Laut
   
   K kurze betonte Silbe
   k kurze unbetonte Silbe
   κ kurze unbetonte Silbe mit Schwa-Laut

   A meistens betontes einsilbiges Wort mit langer Silbe
   a weniger oft betontes einsilbiges Wort mit langer Silbe
   α selten betontes einsilbiges Wort mit langer Silbe

   U meistens betontes einsilbiges Wort mit kurzer Silbe
   u weniger oft betontes einsilbiges Wort mit kurzer Silbe
   υ selten betontes einsilbiges Wort mit kurzer Silbe

Die Folge der Silbensymbole wird von einem Transducer analysiert, der
Silben mit folgenden Symbolen als Hebungen oder Senkungen markiert:

   H Hebung
   s Senkung
   . durch Schwa-Tilgung gelöschte Silbe
   ' ' Leerzeichen markieren Wortgrenzen

Sowohl in der Eingabe als auch in der Ausgabe des Transducers tauchen
auch Marker-Symbole auf. In der Eingabe identifizieren die Marker
Positionen, an denen bspw. Elisionen möglich sind. In der Ausgabe
zeigen die Marker bspw. wo die Analyse tatsächlich elidiert hat.


Bedeutung der Marker-Symbole in der Transducer-Eingabe und -Ausgabe:

Tonbeugungen (nur Ausgabesymbol)
   <l2L> <lambda2L> <a2L> <alpha2L>  eine lange unbetonte Silbe (lλaλ) wird zu einer langen Hebung
   <k2K> <kappa2K> <u2K> <ypsilon2K> eine kurze unbetonte Silbe (kκuυ) wird zu einer kurzen Hebung
   <L2kl> <K2kl> <A2kl> <U2kl>       eine betonte Silbe (LKAU) wird Senkung

Kadenzen  (nur Ausgabesymbol)
   <1m> einsilbig männlich
   <2m> zweisilbig männlich
   <w>  weiblich
   <2k> zweisilbig klingend
   <3k> dreisilbig klingend

Elisionen  (Ein- und Ausgabesymbole)
   <elision2> Löschung eines unbetonten e am Wortende, wenn ein Vokal folgt
   <elision1> Elision bei den häufig elidierten Wörtern in lib/apokopen.txt

Wenn die Kommandozeilen-Option -m angegeben wird, sind weitere Metaplasmen erlaubt:

Aphärese  (Ein- und Ausgabesymbole)
   <aphaerese1> Löschung eines unbetonten e am Wortanfang, wenn Vokal vorausgeht
   <aphaerese2> Aphärese wenn ein Pronomen vorausgeht
Aphäresen sind nur bei Wörtern erlaubt, die in der Datei lib/aphäresen.txt stehen

Ekthlipsis   (Ein- und Ausgabesymbole)
   <ekthlipsis1> Löschung eines unbetonten e zwischen zwei homorganen Konsonanten am Wortende
   <ekthlipsis2> Ekthlipsis im Wortinneren

Apokope  (Ein- und Ausgabesymbol)
   <apokope2> Löschung eines unbetonten e am Wortende, wenn ein Konsonant folgt
   <apokope1> Apokope bei Wörtern aus lib/apokopen.txt

Synkope  (Ein- und Ausgabesymbole)
   <synkope2> Löschung eines unbetonten e am Wortinneren
   <synkope1> Synkope bei Wörtern aus lib/synkopen.txt

nur als Ausgabesymbole
Zahl der Silben im Versfuß:  <1s> <2s> <3s> <4s>                 
Zahl der Hebungen im Vers:   <2h> <3h> <4h> <5h> <6h> <7h> <8h>  
Zahl der Auftaktsilben:      <A0> <A1> <A2> <A3> 
Beginn der Kadenz:           <K>

Ein- und Ausgabesymbol
<SG> markiert in der Transducereingabe eine Satzgrenze
     taucht nur dann in der Ausgabe auf, wenn ein einsilber Versfuß vorausgeht
     Einsilbige Versfüße werden vor Satzgrenzen weniger "bestraft".


Anpassungen
-----------

Durch Ändern der Kosten in der Datei lib/kosten.txt können Analysen
mit bestimmten Eigenschaften mehr oder weniger "bestraft" werden.
Dies beeinflusst, welche Analysen als optimal ausgewählt werden.

Durch Änderungen an den folgenden Dateien, kann weiteres linguistisches Wissen hinzugefügt werden:
   lib/adjektivsuffixe.txt
   lib/betonte-wortarten
   lib/irreg-betonung.txt
   lib/komposita.txt
   lib/nomensuffixe.txt
   lib/unbetonte-adverbien.txt
   lib/unbetonte-wortarten.txt
   lib/unbetonte-wörter.txt
   lib/verbpartikeln.txt
   lib/verbpräfixe.txt
   lib/verbsuffixe.txt
Am Beginn jeder Datei steht ein kurzer Hinweis.

Diese Dateien sind nur relevant, wenn die Kommandozeilen-Option -m verwendet wird:
   lib/apokopen.txt
   lib/aphäresen.txt
   lib/synkopen.txt
   lib/normalisierungen.txt

Die Option -m:

Bei Wörtern wie "unde", "umbe" und "ime" kann der Schwa auch dann getilgt werden, wenn kein Vokal folgt.
Die meisten Editionen schreiben in solchen Fällen "und", "umb", "im".
Die Versanalyse kann vorhersagen, wann die Versmetrik solche Apokopen verlangt.
Auch Synkopen wie bei nem(e)t, Aphäresen wie bei "mir( e)z" und
Ekthlipsen wie bei "kund(e) des" können anhand des Verskontextes vorhergesagt werden.

Um diese Möglichkeiten zu nutzen, rufen Sie versanalyse.py mit der Option -m auf.
Damit ändert sich Folgendes:
- Die Veranalyse erlaubt weitere Metaplasmen neben Elisionen.
- Wörter wie "und" oder "umb" und Aphäresen wie 'z werden zu "unde", "umbe", "ez" normalisiert,
  damit die Versanalyse selbst entscheiden kann, wo Laute getilgt werden.
  Die Liste der Normalisierungen finden Sie in lib/normalisierungen.txt.

Probieren Sie es aus und vergleichen Sie, wo die Software die Schwa-Tilgungen korrekt vorhersagt,
die in der Edition explizit (mit der Schreibung "und", "umb", "mirz" etc.) kodiert wurden.
Meistens ist die Vorhersage der Versanalyse korrekt.
