Herzlich willkommen zur heutigen Vorlesung.
Wir werden uns heute mit zwei Dingen beschäftigen.
Das eine ist die graphenbasierte Spracherkennung.
Da kommen wir gleich noch dazu, was das ist.
Und das andere sind Plansprachen.
Also die Idee da ist, dass man eben schaut, okay, gibt es irgendwie
eine Möglichkeit, dass ich eine Sprache so designe, dass ich sie
möglichst einfach automatisch erkennen kann.
Aber gucken wir uns zunächst mal die graphenbasierte Spracherkennung
an.
Nun, warum beschäftigt man sich damit?
Es ist so, dass es eben auf der Welt sehr, sehr viele Sprachen gibt.
Also man schätzt zu etwa 4000 bis 7000 Sprachen.
Wie Sie jetzt schon gehört haben, ist es teilweise relativ schwierig,
so ein Aussprache-Wörterbuch zu erstellen, weil ich brauch
linguistisches Wissen, um eben hier entsprechende Regeln aufzustellen.
Das Ganze ist, selbst wenn ich jemanden habe, der das macht, eine
relativ langwierige Arbeit, die man eben wirklich händisch machen
muss.
Also ich muss praktisch entweder hingehen und muss die jeweiligen
Aussprache -Regeln niederschreiben oder eben direkt die Aussprache der
einzelnen Wörter.
Es ist also eher unpraktikabel, das Ganze in eben wirklich so einem
großen Stil zu machen, um damit eben diese Menge an Sprachen abdecken
zu können.
Eine andere Möglichkeit ist eben, dass ich die Aussprache-Wörter
automatisch erstelle.
Hierzu brauche ich aber auch zunächst mal Trainingsmaterial.
Und wie bei jedem Lernverfahren ist es eben auch hier so, je mehr
Daten ich habe, umso besser werde ich.
Im Umkehrschluss, je weniger Daten ich habe, umso schlechter bin ich.
Das heißt also, ich brauche für jede Sprache schon einen gewissen
Grundstock an fertigen Aussprachen, fertigen phonetischen
Transkriptionen, um eben hier ein System zu bauen, das die Aussprachen
mit einer entsprechend guten Qualität automatisch erstellen kann.
Nun, wie gesagt, für die 4.000 bis 7.000 Sprachen, die es eben so
gibt, kann man das einfach nicht leisten.
Manchmal ist es teilweise auch so, dass einzelne Sprachen nur von
einer Handvoll Sprechern noch gesprochen wird.
Deswegen ist es, wie gesagt, nicht praktikabel, weil es einfach nicht
die Leute gibt.
Weil ich brauche ja wirklich einen Linguisten, der sich in der Sprache
auskennt, damit er diese Regeln so aufschreiben kann, dass sie mir
auch was nützen, sage ich jetzt mal einfach so umgangssprachlich.
Genau, anderes Problem ist natürlich auch, die Leute sind Experten auf
ihrem Gebiet.
Das heißt, wenn die irgendwas arbeiten, dann kostet das eben auch
Geld.
Das heißt, es ist auch teilweise einfach von der Wirtschaftlichkeit
her nicht gegeben, dass man wirklich für jede Sprache jetzt einen
Linguisten anheuert, selbst falls es den gäbe, um hier eben
entsprechend so ein Aussprache-Wörterbuch zu erstellen.
Deswegen gibt es hier eben jetzt die Idee bzw.
die Frage, kann man irgendwie auch Spracherkennung ohne so ein
Aussprache -Wörterbuch betreiben?
Nun, das ist im Prinzip die grafenbasierte Spracherkennung.
Und zwar geht es hier darum, dass ich einfach so tue, als wären die
einzelnen Buchstaben, die einzelnen Grapheme praktisch meine
Aussprache.
Und ich gehe einfach hin und sage, okay, meine Phoneme sind jetzt
praktisch die Grapheme und behandle die so, wie wenn das praktisch die
Verschriftung wäre.
Grapheme an sich noch mal kurz zur Definition.
Das ist eine atomare Einheit in einer geschriebenen Sprache.
Ich meine, wenn wir jetzt hier im deutschen Englischen von Graphemen
sprechen, dann sind das eben einzelne Buchstaben in eben unserem
lateinischen Alphabet.
Aber es gibt ja noch viele, viele andere Schriftsysteme.
Ja, zum Beispiel die chinesische Hansi-Schrift oder eben spezielle
Silbenzeichen im Thailändischen.
Das heißt, hier ist es auch nicht unbedingt so einfach, dass man
einfach sagt, okay, das funktioniert, sondern es kommt ja eben auch
immer noch auf das Schriftsystem an.
Da kommen wir aber gleich noch zu.
Wichtige Eigenschaften, die wir bisher bei den Phonemen ja auch
vorausgesetzt haben, die wir im Prinzip auch haben müssen, damit das
eben auch mit Graphemen funktioniert, ist eben eine konsistente,
einheitliche, akustische Ausprägung.
Das heißt, ein Phonem wird immer so ausgesprochen, wie eben das Phonem
ausgesprochen wird.
Das hätte ich halt eben idealerweise gerne auch bei einem
graphenbasierten Ansatz, dass also praktisch ein T immer als T
ausgesprochen wird.
Funktioniert nicht immer, zeige ich euch noch.
Eine andere Sache ist, ich muss damit eben auch wirklich alle Wörter
in der Sprache aufbauen können.
Also es muss schon so sein, dass ich praktisch alle Dinge, die man in
einer Sprache spricht, damit ausdrücken kann.
Ist eben das Problem, wie gesagt, wenn ich eben eine Sprache habe, die
kein Schriftsystem hat, schwierig.
Und noch eine andere Sache ist wichtig.
Und zwar bei den Phonemen, da haben wir eben in der Regel so ein
Phoneminventar von je nach Sprache, ich denke mal so 40 bis 60.
Das ist eine hinreichend kleine Zahl, um da eben mit einer
entsprechend großen Trainingsdatenmenge die Modelle für die einzelnen
Phoneme hinreichend gut trainieren zu können.
Hier bei den grafinbasierten Systemen habe ich natürlich auch die
gleiche Einschränkung.
Das heißt also, ich muss gucken, dass meine Menge von akustischen
Einheiten, die ich modelliere, klein genug ist, damit ich eben
entsprechend viele Trainingsdaten habe, um die entsprechend robust
trainieren zu können.
Damit ich eben hier nicht hingehe, wenn ich jetzt für ein Symbol, ich
sag mal jetzt nur drei Trainingsbeispiele habe, dann wird der
Erkenner, wenn er es denn überhaupt lernt, diese drei Beispiele mehr
oder weniger auswendig lernen.
Nützt mir also eigentlich nichts.
Deswegen, wie gesagt, kommt es eben darauf an, wie viele von diesen
Einheiten ich habe.
Ich habe es ja schon angesprochen, je nach Schriftsystem ist es
unterschiedlich einfach bzw.
schwierig.
Wenn wir uns jetzt mal angucken, was gibt es denn alles für
unterschiedliche Schriftsysteme.
Da gibt es zum einen mal die logosyllabischen Schriften.
Da ist es eben so, dass Grafeme ganze Wörter repräsentieren bzw.
teilweise auch jeweils einzelne Silben.
Das heißt, da könnten wir jetzt beispielsweise in Probleme kommen.
Eben, wenn ich hier eine Sprache habe, die sehr, sehr viele Worte
enthält.
Ich habe für jedes Wort ein einzelnes Grafeme.
Das heißt, hier kriege ich ein Problem mit meinen Trainingsdaten, weil
ich werde dann wahrscheinlich nicht alle Worte in meinen
Trainingsdaten in hinreichender Anzahl sehen, um hier eben die Systeme
robust trainieren zu können.
Dann gibt es syllabische Schriften.
Da ist es so, dass ich pro Silbe ein einzelnes Grafeme habe.
Das funktioniert dann schon wieder besser, weil in der Regel gibt es
natürlich weniger Silben wie Wörter in der Sprache.
Und es gibt auch einige Sprachen, die kommen auch mit relativ wenig
Silben aus.
Das heißt, das wäre eine Sache, die man machen könnte.
Dann gibt es die Abjads.
Das ist ein spezielles Schriftsystem, ich glaube, im Arabischen.
Im Arabischen wird es so geschrieben.
Da ist es jetzt so, dass ich im Prinzip mehr oder weniger nur die
Konsonanten aufschreibe.
Und dann beim Sprechen erfindet praktisch der Sprecher die Vokale
hinzu.
Ist auch eher schwierig, einfach weil in der Vergangenheit habt ihr,
glaube ich, gesehen, dass relativ viel Information bei der
Sprachkenntung in den Vokalen steckt.
Weil das sind eben betonte Laute.
Das heißt, da kann ich viel Information rausziehen.
Bei den Konsonanten ist es eher schwierig.
Das heißt also, wenn ich jetzt hier nur eine Transkription von den
Konsonanten habe, wird es eben schwierig, gerade auch deswegen, weil
ich ja einen Konsonant haben kann, der mit unterschiedlichen Vokalen
auftritt.
Das heißt also, hier habe ich ein Zeichen, das je nach Kontext
unterschiedlich ausgesprochen wird.
Hatten wir so teilweise ja auch bei der Phonem-basierten
Spracherkennung.
Aber da, wie gesagt, ist es auch ein Problem.
Dann, klar, Alphabete.
Funktioniert relativ gut.
Kommt eben hier auch auf die Sprache an.
Also es gibt Sprachen, bei denen funktioniert es sehr gut.
Wie zum Beispiel Spanisch oder Italienisch.
Da habe ich ein relativ gutes Eins-zu-eins-Verhältnis zwischen der
Aussprache und der Schrift.
Bei Deutsch wird es schon ein bisschen schwieriger.
Französisch wird es auch noch ein bisschen schwieriger.
Da habe ich auch noch später ein schönes Beispiel dazu.
Und Englisch ist auch nicht unbedingt so gut, was die Graphen-basierte
Spracherkennung angeht.
Da gibt es ja so diesen einen Witz.
Fragt man einen Deutschen, wie sein Hund heißt, dann sagt er Fifi.
Und dann, ja, buchstabieren Sie mal.
F-I-F-I.
Dann fragt man einen Engländer, wie sein Hund heißt.
Und er sagt dann Fido.
Und dann, ja, buchstabieren Sie mal.
Fido, wie würde man Fido schreiben?
Einfach so, wie man es spricht.
Fido.
Also sieht man hier, im Englischen ist es teilweise relativ schwierig,
da so eine gute Beziehung zwischen Aussprache und den Wörtern und der
Schrift hinzukriegen.
Im Französischen auch.
Da kommt später nochmal ein Beispiel zu.
Genau, dann gibt es eben noch, neben den Alphabeten, gibt es eben noch
Abugidas.
Da ist es so, dass eben die Graphemen einer Kombination aus Konsonant
und Vokal entsprechen.
Das heißt, ich habe da in der Regel irgendwelche Diakritiken an so
einem Konsonanten dranhängen, die eben dann genau definieren, was für
ein Vokal eben noch dazu gehört.
Und dann gibt es noch featureale Schriften.
Da ist es so, dass eben die Zeichen korrespondieren eben zu wirklich
speziellen Eigenschaften, zu dem jeweiligen Sprachsegment, das sie
repräsentieren.
Genau, hier das Ganze auch nochmal aufgeschrieben.
Also Logosyllabisch war die Geschichte, dass ich eben relativ viele,
also ich praktisch pro Wort ein eigenes Zeichen habe.
Das heißt, was hier eben gut ist, klar, ich habe eine sehr hohe
Korrespondenz zwischen eben dem, was geschrieben ist und so, wie es
gesprochen wird.
Nachteil dabei ist aber dann, ich habe eben eine hohe Anzahl von
Wörtern pro Sprache in der Regel.
Das heißt, es wird relativ schwer, wenn ich da ein Erkenner werden
will, der eben ein großes Vokabular hat.
Bei syllabischen Schriften, wie gesagt, habe ich eine relativ hohe
Korrespondenz zwischen dem einzelnen Graphem und eben der akustischen
Repräsentation.
Aber ich habe dafür eben wiederum eventuell eine hohe Anzahl an Silben
pro Sprache.
Es gibt auch Sprachen, die eine geringere Anzahl an Silben haben.
Und ja, häufig ist es eben auch so, dass, wie ich gerade gesagt habe,
dass eben diese syllabischen Schriften eben bei Sprachen verwendet
werden, die wenig Silben haben.
Dann Abjads habe ich ja auch schon erwähnt.
Wie gesagt, habe ich eine relativ schlechte Korrespondenz zwischen
eben der Akustik und dem, wie es eben niedergeschrieben ist.
Weil eben, wie gesagt, diese einzelnen Zeichen nur den Konsonanten
entsprechen, aber sie implizit ja praktisch noch eine Vielzahl an
möglichen Vokalen dabei haben können.
Das heißt, hier habe ich ein Problem, dass ich nicht zu viele
Einheiten habe, die ich eben praktisch modellieren muss, sondern eben
zu wenig.
Das heißt, ich habe weniger unterschiedliche Einheiten zu modellieren
von einer relativ großen akustischen Vielfalt in der Sprache.
Aber, wie gesagt, es gibt da auch Möglichkeiten, damit Herr zu werden.
Wenn ich eben genügend Trainingsmaterial habe, dann kann ich eben ein
kontextabhängiges System bauen.
Das eben dann es schafft, obwohl ich nur relativ wenige Symbole habe
zur Repräsentation, diese ganzen akustischen Unterschiede dennoch
abzubilden.
Genau, Abugidas, das war eben so dieses Zwischending, dass ich eben
praktisch zwar auch im Prinzip nur die Konsonanten niederschreibe, da
aber eben entsprechende Diakritiken habe, die eben mir angeben, okay,
welcher Vokal gehört jetzt dazu.
Und bei den featuralen Schriften, da ist es so, dass sie sind relativ
unterschiedlich und werden jetzt nicht so verwendet.
Ein Beispiel wäre zum Beispiel Koreanisch.
Da gibt es eben die Möglichkeit, wie man das praktisch ausrollen kann,
sodass da auch sowas wie ein Alphabet draus entsteht.
Nun, wie verteilen sich denn jetzt die Schriften auf unterschiedliche
Sprachen?
Wie man sieht, ist es so, dass es relativ viele Sprachen gibt, die
Alphabeten, die Alphabete benutzen.
Es gibt nicht so viele Sprachen, die zum Beispiel die Abjads benutzen
oder die Abigudas.
Silbenschriften gibt es auch nicht so viel und Logosylabische
Schriften sind es auch eher wenig.
Dazu muss ich aber auch sagen, es ist generell nur für relativ wenige
Sprachen bekannt, was sie denn für ein Schriftsystem haben.
Und das zweite Problem, was ich angesprochen habe, es ist auch so,
dass es relativ viele Sprachen gibt, die wirklich ungeschrieben sind.
Also wenn man zum Beispiel an Afrika oder so denkt, da im Dschungel,
im Busch, da gibt es sehr, sehr viele Sprachen, die mehr oder weniger
nur von einem Clan, von einem Dorf gesprochen werden.
Und für die es eben auch kein Schriftsystem gibt, einfach weil die
Leute da nicht nur die Notwendigkeit haben, das Wissen eben per
Schrift weiterzugeben.
Alphabetische Schriften sind, wie gesagt, weit verbreitet.
Und wenn man heute jetzt eine neue Schrift entwirft, dann wird da
hauptsächlich auch ein Alphabet verwendet.
Ich glaube, die bekanntesten neuen Erfindungen von künstlichen
Sprachen ist entweder Klingonisch, die verwenden ja auch so eine
Keilschrift, oder eben Sindarin, kennt vielleicht einer, Herr der
Ringe, das ist diese elbische Schrift, das ist eben auch das, was da
gemacht wird.
Wie verteilen sich jetzt diese Schriftsysteme über die Welt?
Ich habe hier oben Kyrillische Schriften, klar, bei Russland und in
der Gegend.
Dann der große, große Teil sind eben, wie gesagt, lateinische
Schriften.
Und dann haben wir hier noch in der Nähe vom Äquator so ein Band, das
zum einen mal die arabischen Schriften hat, als eben dann hier bei
China, bei Indien.
Da haben wir eben dann noch andere Schriftsysteme, die eben da
vorherrschen sind.
Und eben Japanisch, die Katakana-Schriften, die gibt es eben da.
Wann eignen sich denn jetzt praktisch Grafeme zur Modellierung von den
akustischen Einheiten?
Nun, wir haben gesehen, okay, ich brauche zunächst mal eine
hinreichend kleine Anzahl an Grafemen in meinem Inventar.
Ich brauche eine idealerweise sehr gute Korrespondenz zwischen eben
den einzelnen Zeichen und der jeweiligen Aussprache.
Aber oft ist es so, dass sich praktisch die gesprochene Sprache in der
Zeit anders entwickelt hat als die Schrift.
Das heißt, im Laufe der Zeit hat sich eben eine ursprünglich gute
Korrespondenz zwischen Schrift und Aussprache über die Zeit mehr und
mehr verschlechtert.
Da gibt es sowohl gute als auch schlechte Sprachen, die eben eine gute
und eine schlechte Korrespondenz haben.
Hier Beispiel für schlechte Korrespondenz habe ich mal das
französische Wort Sans genommen.
Also Sans, wenn ich Sans sage, kann ich entweder gesagt haben ohne,
hundert, hunderte, Blut, Riechen oder Geruch.
Es gibt da bestimmt noch einige mehr, die auch Sans heißen, aber das
zeigt eigentlich schon mal auf, dass zum Beispiel es im Französischen
relativ schwer ist, so ein grafenbasiertes System zu bauen.
Ich habe auch mal hier eine Statistik aus dem Französischen Aussprache
Wörterbuch mir angeguckt und da war es eben so, ich hatte in dem
Wörterbuch, was ich mir angeschaut habe, das hat etwa so 61.000
Einträge für unterschiedliche Worte und zu diesen 61.000 Einträgen gab
es aber nur etwa 40.000 unterschiedliche Aussprachen.
Das heißt also, ich habe hier praktisch ein Drittel der Worte, die
gleich ausgesprochen wird in etwa in dem Wörterbuch.
Aber Deutsch ist teilweise auch nicht viel besser.
Nehmen wir die Buchstabenkombination CH.
Je nachdem, wo das steht, ist es einmal ein Wechsel, also ein Wach,
ein Ch oder eben Weich, ein Sch.
Das heißt, hier haben wir teilweise eben im Deutschen auch Probleme
mit der Übereinstimmung.
Wie gesagt, Italienisch oder Spanisch wäre da besser.
Wenn man jetzt hingehen möchte und möchte eine grafenbasierte
Spracherkennung für Arabisch bauen, dann, wie gesagt, hat man das
Problem, dass Arabisch eben mit Abjad geschrieben wird.
Das heißt, da muss ich gucken, wie ich da diese Vokalisierung
hinkriege, weil eben die Texte in der Regel ohne Vokale daherkommen.
Das heißt, hier wird man eben die Kritikern zu Hilfe nehmen und dann
da ein System bauen, was das Ganze macht.
Andere Möglichkeit, wie gesagt, wenn ich genügend Trainingsdaten habe,
dann kann ich die Vokale auch entsprechend implizit mitmodellieren.
Hier habe ich jetzt mal ein paar Ergebnisse bzw.
einen Vergleich zwischen einer phonembasierten Spracherkennung und
einer grafenbasierten Spracherkennung für unterschiedliche Sprachen.
Was man eben sieht, bei Englisch gibt es einen relativ großen
Unterschied.
Bei Deutsch ist er jetzt nicht ganz so groß, aber wie gesagt, in
Deutsch gibt es eben auch die Geschichte mit dem CH zum Beispiel oder
mit SCH, ST, Straße.
Wird ja auch das ST als SCH ausgesprochen, aber wenn das relativ
regelmäßig ist, diese Aussprache regeln, dann hat auch das System eine
Chance, die eben zu lernen.
Russisch haben wir hier noch, Spanisch oder Thai.
Bei Spanisch ist es auch nicht ganz so groß, der Unterschied.
Ich hatte es ja schon erwähnt, kontextabhängige Modelle bei eben
grafenbasierter Spracherkennung bringt durchaus einen Gewinn,
teilweise eben auch mehr Gewinn gegenüber phonembasierter
Spracherkennung.
Also ich starte zwar mit einem schlechteren System, aber wenn ich dann
eine kontextabhängige Modellierung mache bei einem grafenbasierten
System, ist der relative Gewinn größer.
Bin zwar immer noch schlechter, als wenn ich ein reines
phonembasiertes System habe, aber der Ansatz bringt, wie gesagt, bei
grafenbasierten Systemen ein bisschen mehr.
Genau, also die Frage da ist jetzt, bei einem phonembasierten System
kann ich spezielle Fragen stellen, wenn ich eben hier meinen
kontextabhängigen Baum aufbaue.
Also ich kann so Fragen stellen, wie ist das ein Nasal, ist das ein
Plosiv.
Das habe ich ja bei einem grafenbasierten System per se eigentlich
nicht.
Deswegen kann man hier eben hingehen und kann Fragen nach der
Identität von Graphemen stellen, also zum Beispiel, war das
vorhergehende Graphem ein T, war das ein S und so weiter.
Und damit kommt man dann eben auch zu Rande und kann dann eben hier
entsprechend eine Verbesserung hinkriegen.
Also hier jetzt nochmal der relative Gewinn für die einzelnen
Sprachen.
Man sieht bei Englisch gewinne ich da relativ viel, bei Deutsch auch,
bei Russisch jetzt nicht ganz so viel.
Ich denke, bei Russisch ist teilweise auch das Problem, dass ich bei
Russisch ja keine fest vorgegebene Wortfolge habe.
Das heißt, da habe ich generell schlechtere Zahlen und bei Spanisch
und Thai habe ich eben auch verschiedene Gewinne.
Okay, genau, wie gesagt, bei der grafenbasierten Spracherkennung ist
es eben wichtig, wenn ich so ein kontextabhängiges System baue, dass
ich mir eben Gedanken mache, okay, wie kann so der Cluster Tree
aussehen.
Weil eben, wie gesagt, so ein Graphem unterschiedlich ausgesprochen
werden kann, je nachdem, in welcher Umgebung das auftritt.
Also z.B.
das C und H, je nachdem, wo die eben stehen, in welcher Nachbarschaft,
da werden die eben unterschiedlich ausgesprochen.
Und da haben wir eben auch Experimente gemacht und da ist eben auch
rausgekommen, dass es da eben bei der Parameterkopplung, also wenn ich
hingehe und Parameter zwischen Modellen share, dass es da eben
sinnvoll sein kann, wenn man eben hingeht und Vokale und Konsonante
getrennt behandelt.
Sofern man eben, wie gesagt, in der Sprache tatsächlich auch Vokale
und Konsonanten hat.
Nicht, dass es so ist, dass ich praktisch nur die Vokale aufschreibe.
Dann vielleicht noch ein paar praktische Probleme.
Also ich hatte jetzt vor drei Jahren die Aufgabe, ein System für
Arabisch zu bauen und da war eben auch die Idee, okay, machen wir das
einfach mal und gucken, wo wir rauskommen.
Problem jetzt speziell bei Arabisch war, dass die Buchstaben
unterschiedlich geschrieben waren, je nachdem, ob sie am Anfang, in
der Mitte oder in der Ende, am Ende von einem Wort auftraten.
Das ist einfach ein anderes Zeichen, obwohl es die gleiche Bedeutung
hat.
Einfach in der arabischen Schrift ist das so eine Regel, dass eben
Buchstaben am Wortanfang anders geschrieben werden, wie in der Mitte
oder wie am Ende.
Das heißt, da muss man auch erstmal gucken, okay, wie ist das
überhaupt in Unicode kodiert.
Ja, da muss man also teilweise wirklich sich mal auch mit so Sachen
auseinandersetzen, um zu gucken, okay, ist das gleiche Zeichen auch
wirklich immer gleich kodiert.
Weil es gibt natürlich in Unicode mehrere Möglichkeiten, so ein
Zeichen zu kodieren.
Das heißt, was da eben auch wichtig ist, ist die Textnormalisierung.
Dass ich also wirklich gucke, okay, wie ist ein Zeichen kodiert und
das Ganze eben dann entsprechend normalisiere, damit gleiche Zeichen
auch wirklich gleich kodiert sind.
Anderes Problem ist Homograph.
Das hängt auch damit zusammen.
Und zwar gibt es in Unicode das gleiche Zeichen an mehreren Stellen.
Also in dieser Unicode-Tabelle ist das gleiche Zeichen historisch
bedingt an mehreren Einträgen eingetragen.
Das heißt, da muss man eben auch gucken bei der Textnormalisierung,
dass ich eben wirklich alles, was gleich ist, auf das gleiche Zeichen
abbilde.
Ein weiteres Problem, was ich damals hatte, waren nicht druckbare
Zeichen.
Und zwar kennt man das in Deutschland zum Beispiel so Ligaturen, dass
zum Beispiel, wenn nach einem F ein L kommt, dann kann es ja schon mal
verschmelzen.
Aber manchmal will ich das eben getrennt haben.
Das heißt, dann kann ich einen sogenannten Zero-Width-Nonjoiner
einfügen.
Das heißt, es ist ein Zeichen, das wird nicht ausgegeben, ist aber
dennoch im Text drin.
Einfach, weil das von der Typografie her so gefordert ist, an der
Stelle eben so ein Zeichen einzufügen.
Hat aber dann wiederum das Problem, das Zeichen hat ja jetzt keine
akustische Repräsentation.
Das heißt, wenn ich hier jetzt lerne, okay, das Zeichen wird so
ausgesprochen, dann mache ich hier an der Stelle natürlich einen
Fehler.
Ja, das heißt, da muss ich eben auch gucken, okay, was für Zeichen
gibt es überhaupt in meinem Text?
Und haben die alle auch wirklich eine akustische Repräsentation?
Oder sind das teilweise wirklich nur so Steuerzeichen?
Das heißt, da muss man wirklich auch aufpassen und mal gucken, macht
das überhaupt Sinn, was ich da tue?
Ein weiteres Problem ist, hatte ich ja auch schon angedeutet, wenn ich
Spracherkennung machen will bei Sprachen, die eben keine Schrift
haben.
Ja, da fehlt mir irgendwo so ein bisschen die Grundlage.
Macht man aber teilweise schon, weil man will ja auch irgendwie diese
ganzen ungeschriebenen Sprachen, bevor sie aussterben, zumindestens
mal noch so ein bisschen dokumentieren.
Das heißt, da guckt man eben, was kann man machen?
Wir haben da im Moment jetzt zum Beispiel gerade ein Projekt, wo wir
uns um ungeschriebene afrikanische Sprachen von der Bantu-Familie
kümmern.
Konkret geht es um die drei Sprachen, Umbasa, Myene und Mbosi, die
eben in verschiedenen Teilen von Afrikas gesprochen werden.
Und da ist natürlich jetzt erst mal das Problem, wie könnte ich da
rangehen?
Ja, die Idee dabei ist, dass man ein System baut, um eben zunächst mal
zu erkennen, okay, wo fängt ein Phonem an, wo hört ein Phonem auf in
dem Transkript, in dem Audio besser gesagt.
Dabei, wie gehen wir da vor?
Nun, zunächst mal trainieren wir das System auf Daten von mehreren
Sprachen, weil generell ist es ja so, alle Sprachen werden ja mehr
oder weniger von Menschen gesprochen.
Das heißt, wir haben hier ein relativ festes Phonem-Inventar, was
auftreten kann.
Und die Idee dabei ist eben, wenn ich jetzt gucke, okay, ich nehme
Daten von mehreren bekannten Sprachen her, hoffe ich, dass ich da eine
relativ gute Phonem-Überdeckung habe, zwischen den Sprachen, auf denen
ich trainiere und auf der neuen Sprache, für die es eben noch keine
Schrift gibt und die ich eben erkennen möchte.
Das heißt, ich trainiere hier ein System multilingual und hoffe eben,
dass ich möglichst viele Phoneme drin habe in meinem System, die auch
in der Sprache vorkommen.
Und dann gehe ich hin, lasse mein System einmal durchlaufen, erkenne
dabei aber keine Worte, sondern nur einzelne Phoneme.
Und kann dann hingehen und kann entweder die erkannten Phoneme nehmen
oder aber ich nehme nur die Grenzen, dass ich eben weiß, okay, von da
bis da kam Phonem 1 vor, von da bis da Phonem 2 und so weiter und gehe
dann eben hin und mache eben ein Clustering von den jeweiligen
Abschnitten, die ich da so segmentiert habe, um das Ganze eben
entsprechend umzuformen in akustische Einheiten, die ich habe jetzt
mal in Anführungszeichen, Wörter genannt, können aber auch jede
mögliche andere sinntragende Einheit in der jeweiligen Sprache sein.
Genau, so viel zu dem Thema Graphen-basierte Spracherkennung.
Eine andere Sache, die auch noch wichtig ist und interessant ist, ist
das Thema Plansprachen.
Hatte ich ja am Anfang schon angekündigt, dass wir uns da noch ein
bisschen mit beschäftigen.
Und zwar, da geht es darum, dass es eben, ob es eben Sprachen gibt,
die eben speziell dafür gebaut wurden, damit man sie gut mit einem
System automatisch erkennen kann.
Ja, klare Antwort, jein.
Wenn man so eine Sprache entwickelt, dann wird man das ja meistens mit
irgendeiner Anwendung im Hinterkopf tun.
Bei uns zum Beispiel, ja, Übersetzung, aber eben auch Steuerung, dass
man praktisch so eine künstliche Sprache entwirft, um Roboter zu
steuern.
Ich meine, so eine Art Plansprache, künstliche Sprache, kennt man
vielleicht auch aus dem militärischen Bereich, dass die eben da auch
bei der Kommunikation zwischen zum Beispiel Flugzeugen auch eine
relativ formale Sprache haben oder zum Beispiel das NATO-Alphabet.
Ja, da ging es eben auch darum, dass man zweifelsfrei sagen kann,
okay, was hat der andere jetzt gesagt.
Ja, dass man eben beim Buchstabieren festgelegt hat, okay, Alpha,
Bravo, Charlie, Tango und so weiter, aber eben auch bei den Zahlen.
Da ist ja das Problem, wenn die Verbindung schlecht ist, dann hört
sich eine One relativ ähnlich an wie eine Nein.
Deswegen war da eben die Konvention One, bleibt One, aber anstatt Nein
sagen die eben Niner, um da eben wirklich eine Unterscheidbarkeit zu
machen, auch wenn es eben jetzt gerade knackt in der Ohrmuschel, dass
man eben auch dann sich verständigen kann, wenn eben die Verbindung
schlecht oder gestört ist.
Andere künstliche Sprachen, wo man sich gedacht hat, Mensch, wie
könnte man jetzt so eine Sprache designen, die man auch relativ leicht
lernen kann, kennt vielleicht der eine oder andere.
Das eine war Esperanto und das andere ist, glaube ich, noch ein
bisschen bekannter.
Also Esperanto kennt man vielleicht noch, Tokipona ist wahrscheinlich
nicht so bekannt.
Gut, Esperanto wurde damals 1887 veröffentlicht und das Ziel war eben,
dass es eine Sprache ist, die wirklich leicht erlernbar sein soll und
eben neutral sein soll.
Das Ziel war da eben, so eine Lingua Franca zu erstellen, um eben sich
international zu verständigen.
Nun, hat nicht ganz so gut geklappt.
Also ich glaube, die internationale Sprache heute ist Englisch.
Wenn man sich jetzt mal anguckt, wie ist Esperanto aufgebaut?
Die Grammatik von der Grammatik her ist also eine agglutinative
Sprache mit fest definierten Vornehmen, ist nicht ganz so gut für
Spracherkennung.
Zum Beispiel Türkisch ist auch agglutinierend.
Also es gibt dann so ewig lange Worte.
In Deutschland ist das ja teilweise auch so.
Die Fehlerstromschutzschalterprüfung oder
Donaudampfschifffahrtsgesellschaftskapitänswitwe, auch relativ lange
Worte.
Das heißt, das ist nicht ganz so einfach.
Ja, es gibt jeweils nur eine Konjugation und Deklination und was mich
persönlich freut, keine Ausnahmen im Vergleich zum Französischen.
Im Französischen gibt es ja relativ viele Ausnahmen zu den Regeln.
Ansonsten gibt es eben Verben, Substantive, Adjektive und Adverbien.
Von der Phonetik her ist es eine eineindeutige Abbildung, Graphem zu
Vernehmen.
Das ist also schon gut.
Es gibt 28 Vornehme.
Das ist auch eine relativ gute, überschaubare Größe.
Interessant ist auch hier, dass hauptsächlich deutsche Vornehme drin
vorkommen.
Das heißt, ich könnte hier zum Beispiel hingehen und könnte als
Ausgangspunkt einen Spracherkenner für Deutsch nehmen, der eben schon
die deutschen Vornehme gelernt hat und den man dann eben noch
adaptiert, um eben die neu hinzugekommenen Vornehme auch noch zu
erkennen.
Was auch ganz interessant ist, ist, dass die Vokallängen nicht
bedeutungstragen sind.
Das macht es auch ein bisschen einfacher.
Der Wortschatz ist aus europäischen Sprachen gewählt und inzwischen
wächst das Ganze auch so ein bisschen wie eine natürliche Sprache.
Also im Moment geht man so davon aus, dass es etwa weltweit eine
Million Sprecher gibt von der Sprache, ist sogar Wahlpflichtfach an
ungarischen Universitäten und wird da vereinzelt eben auch als zweite
Muttersprache verwendet.
Aber ich hatte es ja schon erzählt, weltweit hat es leider nicht zu
einer großen Bedeutung gelangt.
Genau.
Was bedeutet das jetzt alles für die Spracherkennung?
Nun, eine relativ einfache Vornehmen-zu-Graphem-Relation ist gut für
die Spracherkennung.
Eine einfache Grammatik mit wenig Ausnahmen ist auch gut, speziell im
Hinblick eben auf die Sprachmodellierung.
Problematisch, ich hatte es schon erwähnt, es ist eine Sprache, die
stark agglutinierend ist.
Ich habe viele kurze Partikel und was eben auch problematisch ist, in
dem Sinne ist, es wächst wie eine natürliche Sprache.
Das heißt, ich muss da eben auch immer gucken, okay, gibt es denn
jetzt schon neue Worte, die ich eben in mein Dictionary aufnehmen
muss.
Die zweite Sprache, die ich erwähnt hatte, Tokipona, stammt von 2001,
wurde von Sonja Lang veröffentlicht, hat eher so ein minimalistisches
Konzept und ist auch so ein bisschen ideologisch geprägt, also
verfolgt so ein bisschen das Zurückkommen auf eine einfache Denkweise.
Also es gibt da zum Beispiel als Zahlwörter nur 0, 1, 2 und 5.
Einfach, weil die Sonja Lang gesagt hat, man soll sich da nicht über
große Zahlen unterhalten.
Also wenn ich da jetzt zum Beispiel 4 sagen will, dann sage ich 2 mal
2 als Beispiel.
Das ist da schon so ein bisschen umständlich, ist aber auch jetzt nur
mal so als Beispiel für eine weitere künstliche Sprache gedacht.
Von der Phonetik, ich habe insgesamt 14 Buchstaben, das teilt sich
auf, dass ich 5 Vokale habe, 9 Konsonanten.
Ich habe strikte Ausspracheregeln, das ist auch gut.
Und ich habe eine klare Silbenstruktur, das heißt, ich habe entweder
Konsonant -Vokal, ich habe Vokal am Wortanfang oder Konsonant-Vokal am
Wortende.
Grammatik, relativ einfach, kein Genus, Casus, Numerus.
Und ich habe keine Deklination oder Konjugation, das macht es auch
leichter für die Spracherkennung.
Es gibt drei Hilfswörter, das ist nicht unbedingt so gut, vor allen
Dingen auch, weil die vermutlich relativ ähnlich klingen.
Aber das Witzige ist, die Sprache, weil eben hier das Konzept so ist,
minimalistisch, hat nur 120 Wörter.
Das ist sehr, sehr eingeschränkt.
Um eben hier was Komplexeres zu formulieren, muss ich eben mehrere
Wörter kombinieren und dann wird es dann gleich relativ lang.
Genau, positiv, ich hatte es erwähnt, gute Phonetik, gute
Silbenstruktur, habe ein kleines Vokabular, aber negativ, wie gesagt,
ich habe kurze Hilfswörter, ich habe auch nur relativ wenig Silben pro
Wort und ich habe eine hohe Perplexität, das heißt einfach, ich habe
einen hohen Verzweigungsgrad von meinem Sprachmodell.
Einfach, weil ich habe halt nur 120 Wörter, mit denen will ich eben
alles ausdrücken, das heißt es gibt hier relativ hohe Verzweigungen.
Wenn man jetzt sich mit den künstlichen Sprachen beschäftigt, gibt es
natürlich auch noch die Idee, Mensch, ich entwerfe jetzt einfach mal
eine Sprache, die ich speziell für automatische Spracherkennung
entwickeln will.
Das hat es ja schon erwähnt, es gibt es ja, wie gesagt, mit dem NATO
-Alphabet ja schon für Menschen untereinander, wenn der
Kommunikationskanal leicht gestört ist.
Hier gab es eben eine Veröffentlichung dazu, wie man eine Sprache
entwickeln könnte, die eben leicht zu erkennen ist.
Ein Problem war eben das mit Nine und One und Fix und Six, wenn es
eben wirklich hier nur einen kleinen akustischen Unterschied zwischen
unterschiedlichen Worten gibt.
Und das heißt, bei so einer Sprache, die eben leicht zu erkennen ist,
möchte man das eben haben, dass die Worte orthogonal zueinander im
akustischen Raum sind.
Das heißt also, dass ich die Worte relativ gut unterscheiden kann.
Eine Forderung an die Phonetik sind eben, dass ich möglichst
universelle Phoneme habe, die eben in vielen Sprachen vorkommen,
einfach damit ich die leichter lernen kann.
Weil wir in unserer Sprache, wenn wir Sprachen lernen, wir lernen in
unserer Kindheit ein mehr oder weniger festes Phoneminventar und es
ist nur sehr, sehr schwer, neue Phoneme hinzuzulernen.
Ja, das kennt man zum Beispiel, wenn man jemanden aus Japan hat, der
zum Beispiel L und R nicht so wirklich unterscheiden kann, einfach
weil es diese Phoneme in der Form da nicht gibt.
Da gibt es eben nur ein Phonem und nicht zwei.
Deswegen ist das dann teilweise immer schwierig für so Leute, sowas
eben dann noch nachträglich zu lernen.
Deswegen, wie gesagt, hier die Beschränkung auf Phoneme, die in
möglichst allen Sprachen vorkommen.
Also wir haben hier fünf Vokale und dann eben noch ein entsprechendes
Set an Konsonanten.
Da achtet man eben auch darauf, dass man leicht zu verwechselnde Paare
vermeidet.
Dann zu einer Sprache gehören natürlich auch Ziffern und da muss man
eben auch gucken, okay, wie kann ich das so machen, dass ich eben
Ziffern habe, die ich möglichst leicht auch unterscheiden kann.
Hier ist es so, je mehr Silben pro Wort ich habe, umso besser kann ich
das Ganze erkennen, weil umso mehr akustische Hinweise habe ich.
Bedeutet aber auch, dass die Lernzeit für den Benutzer sich erhöht und
ich eben auch das System länger laufen lassen muss, weil einfach die
Äußerungen insgesamt länger werden.
Deswegen hat man da so einen Kompromiss gefunden, dass man eben sagt,
bei den Zahlen habe ich eben zweimal eine Silbe, siebenmal zwei Silben
und einmal drei Silben.
Und dann wird man eben gucken, okay, wie häufig kommen so Zahlen in
Dokumenten vor und dann das Ganze eben entsprechend so mappen, dass
ich im Schnitt eben, wenn ich irgendwie eine Nummer sage, die
möglichst kurz machen kann.
Ja, genau, die Vornehme der Worte sollten halt gut unterscheidbar
sein, aber eben auch entsprechend leicht auszusprechen sein und
idealerweise eben ähnlich zu bereits Bekanntem, wie gesagt, dass eben
hier eine relativ kurze Lernphase nur ist.
Das war hier jetzt so ein Vorschlag, wie man eben so Zahlen in dieser
Sprache repräsentieren kann.
Man sieht die sind relativ unterschiedlich und orthogonal zueinander,
relativ schwer zu verwechseln.
Wenn man sich anguckt, die Kombination von, also die Abfolge von
verschiedenen Vokalen und eben auch die Kombination Vokal zu
Konsonant.
Wenn man sich das Ganze jetzt mal anguckt, bei einem Experiment, wenn
man eben hingeht und sagt, okay, ich habe hier jetzt, ich vergleiche
jetzt mal diese Sprache mit Türkisch und zwar nur die einzelnen
Ziffern, mit welcher Erkennungsgenauigkeit kann ich da die Ziffern
erkennen?
Dann ist es eben so, dass ich auf Türkisch, wenn ich eben auf Türkisch
trainiere und auf dem türkischen Trainings der teste, habe ich eine
Fehlerrate von 3,5 Prozent.
Wenn ich auf dem türkischen Test-Set teste, habe ich eine Fehlerrate
von 8 Prozent.
Und wenn ich jetzt diese neue Sprache für die Ziffern nehme und darauf
eben auf dem Training-Set teste, dann werde ich da besser etwa so auf
die Hälfte und auf dem Test-Set kann ich sogar die Fehler auf ein
Viertel runterdrücken.
Das heißt, hier bringt das schon was, wenn man eben sich Gedanken
macht, okay, für einen speziellen Task, macht es Sinn, da eventuell
eine eigene Sprache zu entwickeln, einfach um die Fehlerraten gering
zu halten.
Eine weitere Geschichte, die man machen kann, ist eben, ich baue ein
Spracherkenner für die Interaktion mit einem Roboter.
Und zwar ist es so, dass ich hier hingehen muss und muss eine Sprache
entwickeln, die auf der einen Seite leicht erlernbar ist für einen
Menschen und auf der anderen Seite aber auch gut unterscheidbar ist.
Also spricht er sich der einzelnen Befehle gut auseinanderhalten kann.
Und hier orientiert man sich eben auch an bereits vorhandenen
künstlichen Sprachen.
Also zum Beispiel hier eher so Sprachen, die von vornherein künstlich
sind, ich hatte es ja schon erwähnt, klingonisch oder eben
verschiedene andere Sprachen.
Was auch interessant ist, ist so Constraint Natural Languages, also
dass man eben praktisch hingeht und zum Beispiel Englisch nimmt, weil
das können in der Regel viele Leute sprechen.
Und dann eben hingeht und sagt, okay, ich schränke jetzt mein
Vokabular ein auf nur wenige Wörter, die leicht zu unterscheiden sind.
Und mach auch den Satzbau ein bisschen einfacher, damit ich eben da
mit einer speziellen Sprache mit dem Roboter interagieren kann.
Gibt hier zwei Arten, wie man sowas mit einer künstlichen Sprache
machen kann.
Entweder man hat starke Flexionen, die aber entsprechend strengen
Regeln genügen müssen, oder aber ich habe keine Flexionen und dafür
habe ich aber Partikelwörter.
Generell ist es so, längere Wörter sind besser gegenüber kürzeren.
Einfach, wenn ich ein längeres Wort habe, dann habe ich eben mehr
Material, um das Wort eindeutig zu erkennen.
Wenn ich mehrere Vokale habe, eine eindeutige Vokalfolge habe,
eindeutige Folge von Vokalen und Konsonanten, dann ist es einfacher,
das Wort robuster zu erkennen.
Hier bei der Sprache ist die Phonetik abgeleitet von Toki Pona und da
ist eben auch festgelegt, ich habe eine Mindestwortlänge von vier
Zeichen, einfach damit ich entsprechende Anzahl an Vokalen und
Konsonanten habe, um die Worte sicher zu erkennen.
Aber auf der anderen Seite sage ich auch, okay, ich möchte nicht
länger wie sechs Zeichen werden, weil sonst wird es wiederum zu
kompliziert und das dauert zu lange, das zu lernen, beziehungsweise
die Interaktion mit dem Roboter wird zu lange dauern.
Und es wurde eben gezeigt, dass hier mit Hilfe von einem genetischen
Algorithmus konnte man dann eben Worte generieren.
Hier sind so ein paar Beispiele, die eben relativ verwechslungsfrei
erkannt werden konnten.
Genau.
Dann noch so ein bisschen Ausblick, was Ihnen der Herr Stüker in einer
der nächsten Vorlesungen erzählen wird.
Und zwar geht es darum, auch nochmal Spracherkennung für die
Roboterinteraktion.
Und zwar, wenn ich mich da jetzt auf ein Subset von einer natürlichen
Sprache beschränke, dass ich eben wirklich hingehe und sage, okay, ich
habe hier eine eingeschränkte Grammatik, zum Beispiel für ein Projekt,
was wir da hatten.
Da ging es eben um einen Assistenten in einem OP, wo eben dann der
Chirurg sagen kann, zeig mir bitte irgendein Bild, zum Beispiel Leber,
Aorta oder Milz.
Das kann ich auch mal hier kurz vorführen.
Also ich habe hier so ein System, das zum Beispiel jetzt im OP laufen
würde und dann kann ich sagen, zeig mir die Milz und dann zeigt es mir
eben ein Bild von der Milz.
Oder zeig mir die Aorta.
Dann zeigt es mir eben ein Bild von der Aorta.
Die Interaktion an sich ist mehr oder weniger natürlich sprachlich
möglich, aber ich habe die Grammatik wirklich eingeengt auf ein Subset
von gültigen Sätzen, die ich eben in das System reinsprechen kann,
einfach damit es auch entsprechend sicher funktioniert.
Und was man hier jetzt auch sieht, es funktioniert, obwohl ich relativ
weit entfernt bin von dem Mikrofon.
Ich habe jetzt kein spezielles Mikrofon wie das hier, so kein Close
-Talking -Mikrofon, sondern es ist eher Distance-Speech und es
funktioniert trotzdem.
Einfach, weil die unterschiedlichen Sachen, die ich hier anfragen
kann, sich so stark akustisch unterscheiden, dass ich eben hier
wirklich sicher sagen kann, okay, der Befehl wurde gesprochen oder der
Befehl wurde gesprochen.
Das Ganze ist umgesetzt mit einer kontextfreien Grammatik.
Aber das, wie gesagt, wird der Herr Stüker dann in einer der nächsten
Vorlesungen behandeln.
Eine Frage.
Sorry.
Gut, im Prinzip ist es so, dass ein Spracherkenner immer dazu verdammt
ist, irgendwas zu erkennen.
Es ist jetzt so, dass wir hier bei dem System auch noch Füllwörter
mitmodelliert haben.
Das heißt, ja, ich werde dann schon erkennen, dass da war jetzt
nichts, was ich erkannt habe.
Aber es ist durchaus so, dass Spracherkenner in der Regel dazu
verdammt sind, irgendwas zu erkennen, was eben besonders witzig ist,
wenn ich zum Beispiel in einen deutschen Spracherkenner Englisch
reinrede, weil da wird er einfach nichts Sinnvolles erkennen.
Aber dadurch, dass er eben wirklich verdammt ist von dem Aufbau her,
etwas zu erkennen, wird er eben irgendwas erkennen.
Das war's von heute von mir.
Falls keine Fragen mehr sind, dann vielen Dank für die Aufmerksamkeit.