Wir haben 600 geprüfte Stunden erreicht, 50% des ersten Ziels

Nein, denn das habe ich nicht geschrieben. Die 600 Stunden sind mit Sicherheit nicht komplett für die Tonne. Mir geht es darum, dass neue Sprecher nicht wissen, wie sie vorzulesen und zu validieren haben. Folglich werden bei der nächsten Kampagne wieder einige fleißige Flüsterer und Satzzeichenvorleser dabei sein, deren stundenlange Arbeit man leider durch konsequentes “Nein” klicken aussortieren muss (deren Arbeit also für die Tonne wäre).

Abgesehen davon kann ein großer Ansturm von Erstbeitragenden dazu führen, dass es viele Validierer vielleicht nicht so genau nehmen oder nach falschen Kriterien entscheiden, weil ihnen ja nicht klar gesagt wird, was die Kriterien sind. In dem Fall hätte die gewonnene Quantität einen direkten negativen Einfluss auf die Qualität der Daten.

In der Tat! Die sprachliche Bandbreite ist bei 100’000enden von Sätzen vermutlich deutlich höher! Und das ist wichtig. Die Antwort von Mozilla ist natürlich (leider) sehr untechnisch, insofern kann ich nur spekulieren, was gemeint ist: Ich kann mir vorstellen, dass sie eben keine “class imbalance” haben wollen, also bestimmte Sätze sind deutlich überrepräsentiert. Das könnte in der Tat das Lernen erschweren oder eben die Qualität verringern, weil das Modell sich dann auf Dinge fokussiert, die nicht der “echten Repräsentation” der (Input-)Daten entsprechen.

Anders ausgedrückt: Wir haben hier ja statistische Verfahren, die möglichst nah an die “echte Verteilung” und damit Repräsentation von Spracheingabedaten kommen sollen. Wenn die Eingabedaten grob verzerrt sind, gelingt dies nicht (eine vereinfachte Formel wäre im Extrem besagtes “garbage in, garbage out”).

1 Like

Ok, sorry - dann bin ich ja beruhigt. Ansonsten bin ich quasi voll deiner Meinung :slight_smile: Wie können wir das Problem lösen? Github issues einstellen?

Ich könnte mir vorstellen, dass es hier auch auf die Architektur des Netzes ankommt. Ich stecke nicht tief in der Materie, aber bei DeepSpeech z. B. gibt es ja einen Teil, der die Fourier-Transformierte des Audios in “Laute” übersetzt und einen Teil, der diese Laute nimmt und daraus Worte/Zeichenketten formt. Der erste Teil braucht zum Training vor allem viele verschiedene Stimmen, Dialekte und Stimmungslagen. Der zweite braucht viele einzigartige Sätze. Wenn man beide unabhängig voneinander trainieren könnte, müsste man Satzwiederholungen nur für den zweiten Teil skippen, was unseren bisherigen Datensatz aufwerten würde.

1 Like

Eine Idee, die ich schon eine Weile habe, ist die bereits angenommenen Sätze in der Datenbank mit 1x Nein und 2x Ja noch mal prüfen zu lassen. (und vielleicht auch die abgelehnten Sätze mit 2x Nein und 1x Ja). Damit könnte man viele von den Wackelkandidaten besser einschätzen. Das würde natürlich den Validierungsprozess deutlich verlangsamen, aber die Qualität sicher erhöhen.

EDIT: Die Anzahl der Jas und Neins sind ja auch im Datensatz, d.h. man kann, wenn man will auch ohne die Sätze trainieren, zu denen irgendwann mal jemand Nein gesagt hat.

Das wird viele kleinere Sprachen freuen. Wenn man nur eine Wikipedia mit einigen zehntausend oder hunderttausend Artikeln hat, ist es sehr schwer genug Sätze mit dem extractor Script zu bekommen. Einige hunderttausend Sätze kann man manuell aus gemeinfreien Quellen sammeln, Millionen sind dagegen extrem schwer.

Ich glaube nicht, das das je jemand bereinigt hat. Soweit ich weiss ist zwar die Meldeoption implmentiert, aber niemand schaut sich diese Sätze an und es gibt keinen Prozess dafür.

hallo @mkohler. das heißt aber, dass man anhand der mitgespeicherten “JAs” und “NEINs” schon selber gewichten oder filtern kann, welches Recording man nutzen möchte – oder?

Naja, ob WP immer die richtige Wahl ist… Umgangssprache (wie Reddit für Alexa) wäre vermutlich ziemlich wichtig. WP ist akademisch und m.E. auch daher nicht das nonplusultra.

Da hast du einen Punkt - das Acoustic Model zum einen und das Language Model zum anderen. Ob es vorteilhaft wäre, diese unabhängig zu trainieren, kann ich dir nicht sagen – vermutlich aber nicht bzw. hätte den gegenteiligen Effekt. Deep Learning kann von end-2-end oft profitieren (d.h. wenige Zwischenschritte oder “Encodings”) und zum anderen sind diese ja auch korreliert, was es schwierig machen dürfte.

Ich kann allen Interessierten (technisch) aber diesen Talk eines der Autoren des “Ur-DeepSpeech” empfehlen, da wird einiges erklärt: https://www.youtube.com/watch?v=g-sndkf7mCs

1 Like

Die 600 Stunden Marke und das Release im Juni/Juli ist vielleicht ein guter Zeitpunkt das mal zu machen. Ich erinnere mich entfernt, dass Jenny Zhang das schon mal für eine Sprache bereitgestellt hat, ich frage sie einfach mal, ob man das machen kann.

Das ist eine ganz eigene, große Diskussion. Es ist sehr schwer gute Sätze zu bekommen. Auch die 370 000 Sätze aus dem Europaparlament, die wir zuletzt importiert haben, sind nicht ideal. Aber auf Deutsch kann man aufgrund der Rechtschreibreform 96 nur sehr schwer gemeinfreie Texte finden, die man ohne viel Handarbeit einfach importieren kann. Zurzeit experimentiert @benekuehn mit einem WhatsApp Scrapper mit dem man seine privaten Chats spenden kann. Wenn da viele mitmachen, könnte das eine Chance sein.

Das kann ich nicht beantworten, ich habe keine Ahnung wie der Datensatz aufgebaut ist und welche Information darin verfügbar sind.

Verstehe. Ich hab schon eigene Sätze per Web Interface eingepflegt, aber das waren natürlich hunderte, nicht hunderttausende. Finde es wichtig, dass das auch weiterhin möglich bleibt!

Das mit Chats und WhatsApp klingt nach ner klassen Idee!! Vielleicht kann man auch mal mit Forenbetreibern reden?

1 Like

Ja das geht definitiv, die Anzahl der Jas und Neins sind pro Aufnahme in den Daten. Aber die Jas und Neins laufen unabhängig vom Sätze melden, ein Satz kann z.B. mit zwei Jas in der Datenbank sein, aber wegen Urheberrechtsprobleme oder beleidigender Sprache oder eines Rechtschreibfehlers gemeldet sein.

1 Like

Ich hatte mir das vorletzte Release mal angeguckt - da wird klar der “dismissed” vom “validated” getrennt, auf deutsch weiß ich das aber nicht genau… wäre aber ja blöd, wenn es nicht so wäre (also melden aber dann wird’s nicht notiert). Nur die Regel, wann ein Recording als “ungültig” gilt, steht glaube ich nirgends - war ja glaube ich “2 aus 3 reviewern mindestens bestätigen -> valide”

ach das meint ihr? das wusste ich gar nicht, dass es das gibt :smiley:

1 Like

Foren gehen natürlich auch. Wichtig ist, dass man nur die eigenen Beiträge/Chatnachrichten nimmt, nur an denen hat man die Rechte. Auch ein Forenbetreiber kann nicht einfach die Nachrichten seiner Nutzer verscherbeln, es sei denn er hat eine sehr fiese AGB geschrieben.

Hm, da bin ich gar nicht mal sicher (Nutzungsrechte kann man leider komplett abtreten…) - aber wieso nicht einen fragen? Kenne jetzt keinen spontan, der sowas vielleicht machen würde (“Datenspende”)

Habe die Nachricht oben noch angepasst, normalerweise machen Foren so etwas nicht.

Ich glaube, Spender würde es genügend geben, wenn es nicht viel Arbeit macht. Man braucht also erst mal eine gute technische Lösung um die Texte, die von einem Nutzer über ein Forum verstreut liegen zu sammeln. Niemand wird das freiwillig für uns zusammen kopieren.

Der Betreiber hat das doch i.A. in einer SQL oder MongoDB Datenbank… da ist so ein Export nicht so schwer. Der Betreiber muss halt die Nutzungs-Rechte oder Weiterverwertungsrechte haben (was er vermutlich in vielen Fällen hat).

EDIT: Z.B. ICQ hat so ne AGB :japanese_ogre:

Das Script ist bei mir auf GitHub. Funktioniert mit WhatsApp Web und spuckt ne txt aus. Derzeit ist allerdings kein automatisches cleaning implementiert. Nutze die Sätze eher als Anregung eigene zu schreiben, da die Sprachqualität, Rechtschreibung etc in meinen Chats doch stark verbesserungsfähig ist. Hat mir aber geholfen relativ schnell auf 700 Sätze zu kommen, die ich dann letzten Mal in den Sentence collector gecopy/pasted hab

2 Likes