Hilfe mit Problemmodellierung für Lautwandel in Mang

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Vom 28.9.-1.10. findet das Weltenbastlertreffen im Feriendorf am Burgensteig in Nentershausen statt. Zur verbindlichen Anmeldung geht es hier lang.

    Neulinge sind wie immer höchst erwünscht und wir freuen uns euch kennenzulernen!

    • Hilfe mit Problemmodellierung für Lautwandel in Mang

      Hier gibts ja sicher ein paar technisch versierte Leute. Ich habe gerade Probleme, die Ansprüche an einen Algorithmus zu formalisieren und würde da gerne um Hilfe bitten.

      Es geht um Mang, das Programm zum Sprachenbasteln, das ich schreibe. Konkreter will ich mich jetzt um Lautwandel kümmern.
      Mang soll ja mehrere Funktionen zum Sprachenbasteln vereinen und diese möglichst konsistent und komfortabel miteinander verbinden. Ganz zentral sind da zwei Aspekte: Das zufällige generieren von neuen validen Wörtern für einen gegebenen Dialekt (ich sage jetzt einfach mal, dass jede Sprache ein Dialekt ist) und das Ableiten von Dialekten aus gegebenen Dialekten mit Hilfe von Laut- und Grammatikwandeln.

      An sich ist es ganz einfach, ein gegebenes Wörterbuch mit einem Lautwandel in einen neuen Dialekt zu verwandeln. Das Problem stellt hier der Wortgenerator dar.
      Der Wortgenerator hat in Mang jetzt nämlich 2 Komponenten:
      1. Eine Markov-Kette, oder eher eine Sammlung von Markov-Ketten. Ist auch jetzt nicht so wichtig, wie genau das funktioniert, weil dieser Teil auch trivial ist (so lange ich mich noch nicht um Optimierung kümmere) – die Markov-kette eines Dialektes lässt sich ja ganz einfach aus dem berechneten Wörterbuch neu erstellen.
      2. Ein regulärer Ausdruck, der beschreibt, aus welchen Lautkombinationen ein Wort bestehen darf. Das Prinzip ist von Kwegbalze bekannt, hoffe ich, da ich mich echt schwer damit tue, das zu erklären.
        Und hier liegt auch das Problem: Ich brauche einen solchen regulären Ausdruck für jeden Dialekt einzeln und durch Lautwandel kann sich die erlaubte Wortstruktur ändern. Wenn man sich auf YouTube Videos darüber ansieht, wie Konsonantencluster wahrscheinlich entstehen, wird das sehr schnell offensichtlich. Und da hänge ich gerade fest, da ich mit gegebenem Lautwandel ja den regulären Ausdruck für den entstandenen Dialekt berechnen muss. Da führt kein Weg dran vorbei – wenn der Benutzer das macht, dann könnten dabei durch den Lautwandel entstandene Wörter ungültig werden (was ja den Lautwandel an sich ungültig machen würde, und das klingt doch sehr nach Frustration) und wenn ich einfach gar keinen regulären Ausdruck mehr verwende, dann geht ein ganzes Feature verloren, das für den Generator und die Eingabe von Wörtern durch den Benutzer doch essentiell scheint.
      Ich hab mich mit dem Problem schon auf r/conlangs, r/proceduralgeneration und StackOverflow gemeldet und wie vielleicht zu sehen ist, tue ich mich schwer darin, das Problem überhaupt vernünftig zu formlieren und erst recht darin, es zu formalisieren. Das Formalisieren wäre vielleicht ganz wichtig für jene, die eine Chance haben, das Problem zu lösen, die aber kein Interesse an Linguistik haben, also keinen intuitiven Zugang zur Problemstellung haben. Zudem habe wurde mir auf StackOverflow gesagt, dass ich mich doch bitte mit der Frage an das CS-Board wenden soll, doch da denke ich schon, dass ich eine sehr saubere und strenge Formulierung für das Problem haben sollte.

      Daher bitte ich mal hier um Hilfe. Auf reddit erhoffe ich mir da bereits schon ein bisschen Diskussion, aber das läuft bisher doch eher schleppend – was ich ja auch verstehen kann, ich glaube das ist weder für Conlanger noch für Programmierer gerade das interessanteste Problem. Wird hier sicher auch nicht groß anders sein, aber ich hoffe, dass ich von überall ein bisschen Hilfe bekommen kann.

      Bisher habe ich folgende formale Formulierung des Problems, aber das erscheint mir noch nicht ganz richtig so:

      Sei A die Menge der Glyphen und A* die daraus abgeleitete Menge von Sequenzen von Glyphen. Die Elemente von A* heißen "Wörter".
      Sei r ein regulärer Ausdruck. Ein regulärer Ausdruck wird hier formalisiert als eine Aussage r:A*→{wahr, falsch}, w↦wahr wenn w von dem regulären Ausdruck gematcht wird, w↦falsch sonst.
      Sei s eine Substitution. Bei der Formalisierung von Substitutionen tue ich mich noch schwer, ich verweise an dieser Stelle mal auf die englische Wikipedia-Seite zum Lautwandel. Die deutsche Seite sagt aus irgendeinem Grund rein gar nichts zur Notation. Wie auch immer, eine gegebene Substitution ist auf jeden Fall eine Funktion s:A*→A*.
      Dann suche ich einen regulären Ausdruck r':A*→{wahr, falsch} sodass ∀w∊A*:∃w'∊A*:s(w)=w'⇐(r(w)⟺r'(w'))?
      Und bei dem grün gefärbten Teil bin ich mir halt nicht sicher, ob das jetzt tatsächlich dem entspricht, was ich brauche.

      Hat jemand dazu Gedanken, Einfälle, Ideen?
      Weltraumschlangen! :fluecht:
    • Also auf formal-mathematischer Ebene ist mir das viel zu kompliziert... aber meine Gedanken dazu:

      Wenn du bei jedem Vokabel speicherst, auf welche Weise ein erlaubtes Muster erfüllt wird, dann kannst du ja beim Anwenden einer Lautveränderungsregel diese Veränderung auch gleich ins Muster übertragen...

      Angenommen, die Regel wäre, CV für jede Silbe, und es entsteht ein Wort manenonu - dann wird bei jedem Buchstaben gespeichert, welche Funktion er einnimmt. D.h. in dem Fall gibt es nur zwei Funktionen, aber es könnte eben auch bei einem Konsonanten gespeichert werden, dass es ein Endkonsonant einer Silbe ist. Diese Eigenschaft bliebe dann erhalten, auch wenn durch das Wegfallen von Vokalen plötzlich mehrere Konsonanten hintereinanderstehen: Dazwischen gäbe es einen Null-Marker, der anzeigt, dass hier mal ein Vokal war.

      Die neue Silbenregel beinhaltet dann einfach die Nullmarker als Möglichkeit für die Vokale... ergibt das Sinn?
      Nights are deep when days are long. / / / Any sufficiently complex explanation is indistinguishable from ISSO. / / / Art should comfort the disturbed and disturb the comfortable.
    • Ist bei mir leider auch ein bisschen her, aber als Lösungsansatz (leider noch ohne die ganzen verlinkten Probleme gelesen zu haben) wäre mein erster Einfall ebenso mit den gebildeten Worten auch ihre Bildungsregel zu speichern anstatt die neue regEx zu bilden. Brauchst du die überhaupt, wenn du die erste hast und die Substitutionsregel und ihre Inverse dafür?

      Den regEx lese ich (bis zum Pfeil) so:
      Für alle (Wörter) w der Wortmenge A* gilt, Jedes (Wort) w' der Sprache A* wird gebildet mit der Substitution s(w) = w'
      .. so weit so einfach. Also, die Substitution funktioniert wie gewünscht. A*' als substituierte Dialektwortmenge brauchst du an der Stelle noch nicht(?).
      (r(w) <=> r'(w')) klingt als könnt man zurücksubstituieren. Aber naja, mit dem r und der linksgewandten Implikation bin ich grad leider raus. Ich hoff der Schwurb ist hilfreich, aber da zweifel ich auch dran, :-/ ..ich schlag nachher nochmal in meinen Schulunterlagen nach.
      > Möchte in Fantasy-Ausrichtung an den Erfolg von Scientology anknüpfen.
    • Äh, ich befürchte das Folgende kommt jetzt sehr negativ rüber. Ich möchte einfach mal hervorheben, dass ich für die Beiträge hier sehr dankbar bin.

      Substitutionsregeln sind nicht injektiv, haben also kein Inverses.

      A* enthält alle möglichen Wörter, nicht nur die validen. r und r' bilden jeweils die charakteristische Funktion für die jeweilige Menge an validen Wörtern.

      Der grün markierte Teil (∀w∊A*:∃w'∊A*:s(w)=w'⇐(r(w)⟺r'(w'))) ist zu lesen als
      "Für jedes Wort w aus A* gibt es ein Wort w' aus A* sodass, wenn w von r gematcht wird genau dann wenn w' von r' gematcht wird, w' mit s aus w hergeleitet wird."
      Hrm, wie ließe sich das erklären?

      Die Idee ist, dass es ja in dem abgeleiteten Dialekt Wortformen geben kann, die nicht aus einer Wortform des Ursprungsdialektes hergeleitet werden können. Das heißt, wir wissen nur, dass w' aus w hergeleitet werden soll, wenn tatsächlich w und w' in ihren jeweiligen Dialekten auch vorkommen.
      Hrm, ich glaube, ich muss den Implikationspfeil umdrehen. Wenn w' aus w abgeleitet wurde, dann soll w' genau dann Teil des abgeleiteten Dialektes sein, wenn auch w schon Teil des Elterndialekts war.

      Es ist zum Wahnsinnig werden.

      Jundurg schrieb:

      Angenommen, die Regel wäre, CV für jede Silbe, und es entsteht ein Wort manenonu - dann wird bei jedem Buchstaben gespeichert, welche Funktion er einnimmt. D.h. in dem Fall gibt es nur zwei Funktionen, aber es könnte eben auch bei einem Konsonanten gespeichert werden, dass es ein Endkonsonant einer Silbe ist. Diese Eigenschaft bliebe dann erhalten, auch wenn durch das Wegfallen von Vokalen plötzlich mehrere Konsonanten hintereinanderstehen: Dazwischen gäbe es einen Null-Marker, der anzeigt, dass hier mal ein Vokal war.

      Die neue Silbenregel beinhaltet dann einfach die Nullmarker als Möglichkeit für die Vokale... ergibt das Sinn?
      Ja, das ergibt Sinn. Allerdings würde das dazu führen, dass beim Wegfallen eines Vokals nur in der letzten Silbe im abgeleiteten Dialekt Vokale überall wegfallen könnten – die Glyphenklassen wissen ja nichts über ihren Kontext im Wort, die Lautwandel schon. Also würde dann halt auch ein Wort der Form CCCC generiert werden können.

      Und leider hilft das auch nicht mit dem Einfügen von neuen Lauten.

      Ich mache erstmal Schluss, ich bin schon viel länger wach, als ich wach sein sollte.
      Weltraumschlangen! :fluecht:
    • Weltraumschlange schrieb:

      die Glyphenklassen wissen ja nichts über ihren Kontext im Wort, die Lautwandel schon.
      Naja, irgendwie dachte ich, müsste es möglich sein, all diese nötige Information auch mitzunehmen... irgendwie dynamisch, sodass die Einteilung komplexer wird. Also am Anfang gab es vielleicht nur C und V, aber nach einem Abwandeln werden neue Kategorien gebildet, in denen gespeichert ist, in welchen Situationen ein Vokal fallen gelassen werden darf und in welchen nicht...

      Ein konkretes Beispiel wäre gut...

      Beispielwort "imoma" aus Sprache 1.
      Irgendeine Regel, die das "o" fallen lässt:
      "imma" in Sprache 2.

      imoma - VCVCV
      imma - VCCV

      Das wäre aber noch zu wenig Information - denn der Witz ist ja in dem Fall, dass die beiden Konsonanten gleich sind, und vielleicht ist auch relevant, dass es sich um ein "m" handelt? Also die Gleichheit könnte durch Nummerierung gekennzeichnet sein:

      V1+C1+C1+V2

      damit würden Wörter wie "attu" oder "isso" gebildet werden können, aber die mittleren Konsonanten müssen gleich sein.

      Jetzt weiß ich nicht so recht, ob dir das was hilft, weil ich nicht weiß, wie deine Lautwandlungsregeln funktionieren. Eventuell findet man aber für jede mögliche Lautwandlung eine Lösung? Im Moment geht es ja hauptsächlich um eine Veränderung der CVVCVCVVCwhatever-Struktur, soweit ich das verstanden habe.

      Ah moment, meine Lösung ist zu spezifisch. :-[ Es geht ja darum, wie eine Silbe aufgebaut werden kann... vielleicht könnte man von dem Gedanken, die Silbe als Grundstruktur zu haben, weggehen?

      Angenommen, eine Silbe kann nur VC oder V lauten, und V nur am Ende. Das würde dann zu sowas wie dem obigen Beispiel führen. Die neue Regel aber würde dem ein VCC hinzufügen, wobei beide Cs irgendwie miteinander zu tun haben, also einer eigenen Regel folgen...? Das riecht dann schon wieder nach Markovketten, wenn es einzelne Buchstabenkombinationen abprüft. Wie wird das im Deutschen eigentlich gemacht, dass "eln" eine mögliche Silbenendung ist, aber "enl" nicht? Es läuft in jeden Fall darauf hinaus, zwischen verschiedenen Konsonantengruppen zu unterscheiden, hierarchisch wahrscheinlich.

      Weltraumschlange schrieb:

      Da führt kein Weg dran vorbei – wenn der Benutzer das macht, dann könnten dabei durch den Lautwandel entstandene Wörter ungültig werden (was ja den Lautwandel an sich ungültig machen würde, und das klingt doch sehr nach Frustration) und wenn ich einfach gar keinen regulären Ausdruck mehr verwende, dann geht ein ganzes Feature verloren, das für den Generator und die Eingabe von Wörtern durch den Benutzer doch essentiell scheint.
      Nochmal zurück zur Frage, was das Feature eigentlich können soll, das hab ich nämlich noch nicht ganz begriffen. Geht es darum, dass der Benutzer ein Wort eingibt und dann geprüft wird, ob es ein legales Wort ist nach dem derzeitigen Muster?

      Also "slhnoaoiryxc" eingeben und fragen, ob dieses Wort durch die vorhandenen Lautwandlungsregeln erreicht werden kann... bwaaa, verdammt schwierig. :freak: Ich fürchte, wenn ich da länger drüber nachdenke, vergeht mir die Seelenruhe.^^ Insofern betrachte mein obiges Herumprobieren eher als (im besten Falle) inspiratives Geblubber. ;)
      Nights are deep when days are long. / / / Any sufficiently complex explanation is indistinguishable from ISSO. / / / Art should comfort the disturbed and disturb the comfortable.
    • Mich lässt das auch nicht so richtig in Ruhe, zumal ich das Gefühl habe, nicht weiter zu kommen, so lange ich dieses Problem nicht löse.

      Ja, einerseits geht es darum, dass der User neue Worte eingeben kann und Mang dann korrekt erkennt, ob das so passt.

      Andererseits soll der Generator halt auch nur korrekte Wörter generieren, aber halt auch alle korrekten Wörter generieren können.

      Wobei mich jemand darauf hingewiesen hat, dass nach einem Lautwandel neu hinzugekommene Laute auch an Stellen auftreten können, die nach dem Lautwandel so diesen Laut nicht haben würden. Das macht die Sache irgendwie nicht einfacher.
      Weltraumschlangen! :fluecht: