# Tokenizer trennt häufig Sätze auf

**URL:** <https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288>\
**Category:** Deutsch (de)\
**Created:** [October 14, 2021, 8:22am UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288 "2021-10-14T08:22:55Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![guerda](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/guerda/32/52065_2.png) [@guerda](https://discourse.mozilla.org/u/guerda)\
**Post date:** [October 14, 2021, 8:22am UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/1 "2021-10-14T08:22:55Z")

</div>

Mir ist bei den deutschen Sätzen immer wieder aufgefallen, dass diese unvollständig sind. Teilweise enden sie mir Worten wie “ggf.” oder “Dr.” etc., teilweise fangen sie unvermittelt an, beispielsweise mit “Platz belegten…”.

Die Beispiele machen deutlich, dass der Tokenizer anscheinend mit Worten oder Abkürzungen, die mit einem Punkt enden, klarkommt.

Ist euch das auch schon aufgefallen? Wie soll ich beim Einsprechen darauf reagieren?  
Soll ich diese Sätze als grammatikalischen Fehler melden oder trotzdem einsprechen?

Zur technischen Seite: so weit ich den Quellcode verstehe, könnte man für den tokenizer einige Abkürzungen in die Positivliste schreiben.  
Würde das an der Stelle helfen?

> <https://github.com/Common-Voice/cv-sentence-extractor/blob/main/src/rules/de.toml#L23>

Danke euch für eure Hilfe!

---

<div class="post-metadata">

**Author:** ![stergro](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/stergro/32/40229_2.png) [@stergro](https://discourse.mozilla.org/u/stergro)\
**Post date:** [October 14, 2021, 11:29am UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/2 "2021-10-14T11:29:27Z")

</div>

@mkohler und ich arbeiten gerade an einem neuen Rulefile für Deutsch: [Improve DE rules file by stefangrotz · Pull Request #157 · common-voice/cv-sentence-extractor · GitHub](https://github.com/common-voice/cv-sentence-extractor/pull/157)

Du kannst gerne deine Ideen einbringen. Die abbreviation\_patterns bedeuten, dass Sätze, die diese Abkürzungen enthalten, nicht verwendet werden und der Satz nicht zerschnitten wird.

> [@guerda](#):
>
> Wie soll ich beim Einsprechen darauf reagieren?  
> Soll ich diese Sätze als grammatikalischen Fehler melden oder trotzdem einsprechen?

Ich würde sagen nicht einsprechen und melden. Man kann einem neuronalen Netz natürlich auch Abkürzungen beibringen, aber das sind dann weitere Sonderregeln, die es lernen muss. Die offizielle Regel ist, alles was gesagt wird, muss auch ausgeschrieben dastehen. Wir haben zufälligerweise gestern “ggf.” hinzugefügt und wollen damit bald einen neuen Wikipedia Export mit den neu angelegten Artikeln seit dem letzten Export machen.

---

<div class="post-metadata">

**Author:** ![guerda](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/guerda/32/52065_2.png) [@guerda](https://discourse.mozilla.org/u/guerda)\
**Post date:** [October 14, 2021, 11:46am UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/3 "2021-10-14T11:46:55Z")

</div>

Perfektes Timing, ich versuche mich gerne einzubringen.

> [@stergro](#):
>
> Die abbreviation\_patterns bedeuten, dass Sätze, die diese Abkürzungen enthalten, nicht verwendet werden und der Satz nicht zerschnitten wird.

Heißt das, dass der gesamte Satz entfernt wird oder nur das Lemma aus dem Satz?

In der aktuellen Liste würden mir noch Dr. fehlen, ergänze ich in GitHub. Möchtest du das als Kommentar oder als Pull Request auf dein Repo oder auf das Haupt Repo?

Ich melde die Sätze und spreche sie nicht ein, wollte nur sichergehen, dass das so gewünscht ist.

---

<div class="post-metadata">

**Author:** ![stergro](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/stergro/32/40229_2.png) [@stergro](https://discourse.mozilla.org/u/stergro)\
**Post date:** [October 14, 2021, 12:28pm UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/4 "2021-10-14T12:28:14Z")

</div>

Ja wirklich gutes Timing 🙂 Ich denke am besten schreibst Du das im Pull Request.

---

<div class="post-metadata">

**Author:** ![guerda](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/guerda/32/52065_2.png) [@guerda](https://discourse.mozilla.org/u/guerda)\
**Post date:** [October 14, 2021, 12:30pm UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/5 "2021-10-14T12:30:57Z")

</div>

Mache ich gern, Danke @stergro

Nach dem durchschauen des Sample Files sieht es für mich so aus, als ob das Lemma aus dem Satz entfernt wird. Das erklärt, warum manche Sätze dann etwas holprig werden.

---

<div class="post-metadata">

**Author:** ![mkohler](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/mkohler/32/21244_2.png) [@mkohler](https://discourse.mozilla.org/u/mkohler)\
**Post date:** [October 14, 2021, 8:00pm UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/6 "2021-10-14T20:00:07Z")

</div>

> [@guerda](#):
>
> > [@stergro](#):
> >
> > Die abbreviation\_patterns bedeuten, dass Sätze, die diese Abkürzungen enthalten, nicht verwendet werden und der Satz nicht zerschnitten wird.
> 
> Heißt das, dass der gesamte Satz entfernt wird oder nur das Lemma aus dem Satz?

Der Satz wird nicht verwendet, wenn eine der `abbreviation_patterns` Regeln zutrifft.

@stergro Der Satz wird trotzdem zerschnitten. Das passiert bevor die Regeln angewendet werden. Aber damit können wir wenigstens einige rausfiltern.

---

<div class="post-metadata">

**Author:** ![guerda](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/guerda/32/52065_2.png) [@guerda](https://discourse.mozilla.org/u/guerda)\
**Post date:** [October 14, 2021, 8:17pm UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/7 "2021-10-14T20:17:29Z")

</div>

Danke! Das heißt, dass alle Sätze mit “problematischen” Abkürzungen ganz rausfallen. Ist vermutlich die einfachste Lösung.

Wisst ihr, welcher tokenizer intern verwendet wird?

---

<div class="post-metadata">

**Author:** ![guerda](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/guerda/32/52065_2.png) [@guerda](https://discourse.mozilla.org/u/guerda)\
**Post date:** [October 14, 2021, 8:30pm UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/8 "2021-10-14T20:30:58Z")

</div>

> [@stergro](#):
>
> Ich denke am besten schreibst Du das im Pull Request.

Dort konnte ich nur kommentieren, kein File Change Proposal machen. Daher habe ich in deinen Fork einen PR erstellt: [https://github.com/stefangrotz/cv-sentence-extractor/pull/1](https://github.com/stefangrotz/cv-sentence-extractor/pull/1)

---

<div class="post-metadata">

**Author:** ![mkohler](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/mkohler/32/21244_2.png) [@mkohler](https://discourse.mozilla.org/u/mkohler)\
**Post date:** [October 14, 2021, 8:49pm UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/9 "2021-10-14T20:49:24Z")

</div>

> [@guerda](#):
>
> Wisst ihr, welcher tokenizer intern verwendet wird?

Natürlich 🙂 Momentan verwenden wir [rust-punkt](https://github.com/ferristseng/rust-punkt). Führt aber oft zu [Problemen](https://github.com/common-voice/cv-sentence-extractor/issues/11). Es gibt neuerdings jedoch auch die Möglichkeit andere Segmenter zu verwenden, siehe [GitHub - common-voice/cv-sentence-extractor: Scraping Wikipedia for fair use sentences](https://github.com/Common-Voice/cv-sentence-extractor#using-a-different-segmenter-to-split-sentences).

---

<div class="post-metadata">

**Author:** ![guerda](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/guerda/32/52065_2.png) [@guerda](https://discourse.mozilla.org/u/guerda)\
**Post date:** [October 15, 2021, 5:00am UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/10 "2021-10-15T05:00:26Z")

</div>

Klar, was eine dumme Frage. 🤦🏻‍♂️ Ich kenne Punkt nur in der Python Implementierung, es kann sein, dass die ein vortrainiertes Modell mitbringt oder herunterlädt. Ich meine nltk macht so Sachen.

Ich kann Mal schauen, ob Python Punkt das in Deutsch besser kann.

---

<div class="post-metadata">

**Author:** ![mkohler](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/mkohler/32/21244_2.png) [@mkohler](https://discourse.mozilla.org/u/mkohler)\
**Post date:** [October 15, 2021, 8:52am UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/11 "2021-10-15T08:52:39Z")

</div>

Definitiv keine dumme Frage 🙂 NLTK könnte durchaus besser funktionieren. `src/segmenter.rs` hat ein Beispiel. Wäre super, wenn du die expliziten Abkürzungen aus dem DE rules file entfernen könntest und zu analysieren ob das mit NLTK besser funktioniert.

Die nächsten Tage bin ich nicht immer erreichbar, könnte daher eine Weile dauern, wenn du Fragen für mich hast. Unterstütze hier aber gerne.

---

<div class="post-metadata">

**Author:** ![guerda](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/guerda/32/52065_2.png) [@guerda](https://discourse.mozilla.org/u/guerda)\
**Post date:** [October 26, 2021, 7:41am UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/12 "2021-10-26T07:41:05Z")

</div>

Moin!  
Ich habe es jetzt erst geschafft, mich Mal damit zu beschäftigen.  
Das Projekt läuft jetzt soweit, ich würde gerne nur ein paar kleine Tests durchführen. Gibt es eine Möglichkeit, Dateien vom Wiki Extractor zu erstellen, ohne direkt das ganze Wiki dump File zu brauchen? Laut des File Formats ist das ja nicht so kompliziert, aber eine Beispiel Datei, die der Sentence Extractor braucht wäre hilfreich

Danke!

---

<div class="post-metadata">

**Author:** ![guerda](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/guerda/32/52065_2.png) [@guerda](https://discourse.mozilla.org/u/guerda)\
**Post date:** [October 26, 2021, 1:36pm UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/13 "2021-10-26T13:36:49Z")

</div>

Also ich habe jetzt gelernt, dass der Wiki Extractor nicht komplett laufen muss, damit der Sentence Extractor arbeiten kann. Und dass json als Input Format gebraucht wird.  
Wenn ich komplett durchsteige, schreibe ich vielleicht noch ein zwei Zeilen dazu in die README.

---

<div class="post-metadata">

**Author:** ![mkohler](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/mkohler/32/21244_2.png) [@mkohler](https://discourse.mozilla.org/u/mkohler)\
**Post date:** [October 26, 2021, 4:42pm UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/14 "2021-10-26T16:42:43Z")

</div>

Wunderbar. Ich werde mir den Pull Request später genauer anschauen. Danke für deine Hilfe!

> [@guerda](#):
>
> Also ich habe jetzt gelernt, dass der Wiki Extractor nicht komplett laufen muss, damit der Sentence Extractor arbeiten kann. Und dass json als Input Format gebraucht wird.

Jap. Die automatische “Sample Extraction” für Pull Requests verwendet das selbe Konzept. Da wird der WikiExtractor für 30 Sekunden ausgeführt, und dann der Sentence Extractor. So kommen einige Sätze zusammen, in einem relativ akzeptablen Zeitrahmen.

Der WikiExtractor kann auch auf Teil-Dateien vom Dump ausgeführt werden, z.B. [https://dumps.wikimedia.org/dewiki/latest/dewiki-latest-pages-articles1.xml-p1p297012.bz2](https://dumps.wikimedia.org/dewiki/latest/dewiki-latest-pages-articles1.xml-p1p297012.bz2), dann sind’s nur ca. 500MB, die man runterladen muss. Das wäre wohl gut zu erwähnen im ersten Schritt hier: [GitHub - common-voice/cv-sentence-extractor: Scraping Wikipedia for fair use sentences](https://github.com/Common-Voice/cv-sentence-extractor#extract-wikipedia) . Momentan klingt’s danach, als müsse man den gesamten Dump runterladen.

> [@guerda](#):
>
> Wenn ich komplett durchsteige, schreibe ich vielleicht noch ein zwei Zeilen dazu in die README.

Analog wohl am besten in Schritt zwei von [GitHub - common-voice/cv-sentence-extractor: Scraping Wikipedia for fair use sentences](https://github.com/Common-Voice/cv-sentence-extractor#extract-wikipedia). Würde einen PR dazu gerne reviewen 🙂

---

<div class="post-metadata">

**Author:** ![guerda](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/guerda/32/52065_2.png) [@guerda](https://discourse.mozilla.org/u/guerda)\
**Post date:** [October 26, 2021, 5:04pm UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/15 "2021-10-26T17:04:22Z")

</div>

Danke dir für die Infos und das Angebot!  
Ich werde es noch Mal mit eigenen Sätzen testen, die die Abkürzungen enthalten, jetzt wo ich weiß, wie die Dateien aussehen müssen.

Der Job auf GitHub ist leider fehlgeschlagen, ich verstehe den Grund nicht. Der Rust Installationsprozess scheint Dateien laden zu wollen, was aber fehlschlägt. Scheint mir nicht an meinen Änderungen zu liegen.

---

<div class="post-metadata">

**Author:** ![mkohler](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/mkohler/32/21244_2.png) [@mkohler](https://discourse.mozilla.org/u/mkohler)\
**Post date:** [October 26, 2021, 5:12pm UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/16 "2021-10-26T17:12:41Z")

</div>

> [@guerda](#):
>
> Ich werde es noch Mal mit eigenen Sätzen testen, die die Abkürzungen enthalten, jetzt wo ich weiß, wie die Dateien aussehen müssen.

Wäre super, wenn du die Datei in einem Kommentar im Pull Request verlinken könntest.

> [@guerda](#):
>
> Der Job auf GitHub ist leider fehlgeschlagen, ich verstehe den Grund nicht. Der Rust Installationsprozess scheint Dateien laden zu wollen, was aber fehlschlägt. Scheint mir nicht an meinen Änderungen zu liegen.

Schaue mir das gleich an, werde im Pull Request antworten.

---

<div class="post-metadata">

**Author:** ![guerda](https://sea1.discourse-cdn.com/flex001/user_avatar/discourse.mozilla.org/guerda/32/52065_2.png) [@guerda](https://discourse.mozilla.org/u/guerda)\
**Post date:** [October 26, 2021, 7:01pm UTC](https://discourse.mozilla.org/t/tokenizer-trennt-haufig-satze-auf/87288/17 "2021-10-26T19:01:47Z")

</div>

Danke für dein schnelles Feedback! Ich werde die Testdatei auch verlinken und die Kommentare womöglich morgen bearbeiten.
