JioNLP: chinesische Vorverarbeitung als Sammlung einzelner Funktionen
中文 NLP 预处理、解析工具包,准确、高效、易用 A Chinese NLP Preprocessing & Parsing Package www.jionlp.com
Auf einen Blick
- Was ist das?
- JioNLP ist eine Python-Bibliothek mit rund zwei Dutzend Einzelfunktionen für chinesische Texte, von der Zeitangabe bis zur Adresse. Wer sie einsetzt, sollte wissen, dass sie keine Pipeline mitbringt und dass einige Funktionen auf Cloud-Dienste oder mitgelieferte Wörterbücher angewiesen sind.
- Für wen ist es gedacht?
- JioNLP passt zu Teams, die einzelne chinesische Vorverarbeitungsschritte wie parse_time, parse_location oder clean_text als Bibliotheksaufruf brauchen und die Ausgabe selbst weiterverarbeiten. Wer eine vortrainierte Pipeline mit Tokenisierung und Modellinferenz sucht, ist hier falsch.
- Darf ich es kommerziell nutzen?
- Ja. Apache-2.0 ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
- Wird es noch gepflegt?
- Ja. Die letzten Commits kamen vor 48 Tagen.
- In welcher Sprache ist es geschrieben?
- Hauptsächlich Python, laut der Sprachstatistik von GitHub.
Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.
TIEFGEHENDE OPEN-SOURCE-ANALYSE
Welche Lücke JioNLP im chinesischen Textworkflow füllt
Chinesische Texte enthalten Daten, die kein allgemeines NLP-Modell zuverlässig in strukturierte Felder überführt: Datumsangaben wie „下周三“, Adressen mit Provinz, Stadt, Kreis und Dorf, Telefonnummern mit Provinz und Betreiber. JioNLP stellt für solche Fälle benannte Funktionen bereit. Die README beschreibt das Paket als Werkzeug für Entwickler, die Vorverarbeitung und Parsing für chinesische Sprache brauchen, und nennt als Zielgruppe ausdrücklich NLP-Entwickler. Der Zuschnitt ist also nicht „Modell trainieren“, sondern „Feld aus Text gewinnen“. Wer Protokolldaten, Formulare oder Chatverläufe in China auswertet, trifft genau diese Felder. JioNLP liefert dafür jeweils eine Funktion mit dokumentierter Signatur, und die README verweist für Details auf die Wiki-Seiten, weil die Hauptseite selbst nur Tabellen mit Funktionsnamen und Kurzbeschreibung zeigt.
Was tatsächlich im Paket steckt
Die Funktionsliste ist in vier Gruppen gegliedert. Unter Gadgets stehen parse_time für Zeitangaben, parse_location für Adressen, recognize_location für Ortsnamen in Nachrichten, parse_id_card für Ausweisnummern, parse_motor_vehicle_licence_plate für Kennzeichen, phone_location, cell_phone_location und landline_phone_location für Telefonnummern, dazu pinyin, char_radical, lunar2solar, solar2lunar, tra2sim, sim2tra und new_word_discovery. Die zweite Gruppe ist Datenanreicherung: BackTranslation, swap_char_position, homophone_substitution, random_add_delete, replace_entity. Die dritte Gruppe sind Extraktoren per regulärem Ausdruck: clean_text, extract_email, extract_money, extract_wechat_id, extract_phone_number, extract_id_card, extract_qq, extract_url, extract_ip_address, extract_parentheses. Die vierte Gruppe behandelt chinesische Zeitausdrücke. Auffällig ist die Sternchenspalte der README: parse_time, parse_location, parse_id_card, clean_text, extract_money und extract_parentheses sind dort hervorgehoben, andere nicht. Das ist eine Selbsteinschätzung des Projekts, keine unabhängige Messung, und sollte als Hinweis auf Pflegeintensität gelesen werden, nicht als Qualitätsurteil.
Aufruf und Rückgabe: Bibliothek, kein Dienst
Die Installation ist ein einzelner Befehl: pip install jionlp. Danach wird das Paket als jio importiert. Die README zeigt den Einstieg mit import jionlp as jio, gefolgt von print(jio.__version__) für die Version, dir(jio) für die Funktionsliste und print(jio.extract_parentheses.__doc__) für die Dokumentation einer einzelnen Funktion. Das ist der vorgesehene Weg, sich zu orientieren: keine zentrale Konfigurationsdatei, keine Pipeline-Definition, sondern Docstrings pro Funktion. Wer wissen will, welche Parameter parse_time akzeptiert, liest den Docstring oder die Wiki-Seite. Ein Konfigurationsschlüssel, den man projektweit setzen müsste, taucht in der README nicht auf. Das Modell ist damit bewusst flach gehalten: jede Funktion nimmt Text oder eine Wortliste entgegen und gibt ein Ergebnisobjekt zurück. Für remove_stopwords etwa wird ausdrücklich eine bereits segmentierte Wortliste erwartet, nicht Rohsatz. Wer diese Segmentierung nicht hat, muss sie vorher erzeugen, und dafür nennt JioNLP in der README keine eigene Funktion.
Wo die Bibliothek an externe Dienste und Daten gebunden ist
Drei Funktionen verlassen den lokalen Rechner oder brauchen zusätzliche Dateien. BackTranslation nutzt laut README die Maschinenübersetzungsschnittstellen großer Cloud-Anbieter. Damit hängen Kosten, Kontingente und die Verfügbarkeit der Übersetzung an einem fremden Konto, und der Datenschutz ist eine Frage des gewählten Anbieters. MELLM, ein Verfahren zur Bewertung großer Sprachmodelle, verlangt vor dem Start den Download von norm_score.json und max_score.json von einem Baidu-Pan-Link mit Passwort; die README verweist bei Fehlern auf test/test_mellm.py. Ein Testlauf ist dort als git clone, cd JioNLP/test/ und python test_mellm.py beschrieben. Das ist ungewöhnlich für ein PyPI-Paket: Die Testdaten liegen nicht im Repository, sondern hinter einem externen Dateidienst. Für reproduzierbare Builds in einer CI ist das ein Problem, weil der Download nicht Teil von pip install ist. Wer MELLM nur ausprobieren will, muss diesen Schritt manuell gehen.
Grenzen, die man vor der Adoption kennen sollte
JioNLP ist keine Segmentierungs- oder Modellbibliothek. Die README listet keine Tokenisierung, keine Wortartbestimmung, keine Named-Entity-Erkennung mit trainiertem Modell und keine Klassifikation. recognize_location erkennt Orte, aber als eigene Funktion mit eigenen Regeln, nicht als Teil eines allgemeinen NER. Wer eine vollständige Verarbeitungskette braucht, muss die Segmentierung und die Modellschicht aus anderen Paketen beziehen und JioNLP dazwischen einhängen. Die README empfiehlt das nicht ausdrücklich, der Funktionszuschnitt legt es aber nahe. Ein zweiter Punkt: Die Hauptseite dokumentiert die Funktionen nur tabellarisch. Verhalten bei mehrdeutigen Eingaben, Rückgabeformate und Fehlerfälle stehen in den Wiki-Seiten, die im Repository liegen und nicht im Paket. Wer die Bibliothek ohne Netzverbindung oder ohne Zugriff auf die Wiki-Seiten einsetzt, arbeitet mit Docstrings allein. Und die Zeitangabe, laut README die meistgenutzte Funktion, wird vom Autor selbst als ausbaufähig dargestellt: Die README verweist für eine bessere, angepasste Version auf einen Kontakt per WeChat. Das ist ein ehrlicher Hinweis darauf, dass die allgemeine Version nicht jeden Fall abdeckt.
Alternative: LTP und HanLP verfolgen einen anderen Aufbau
Wer chinesische Texte verarbeitet, landet häufig bei LTP oder HanLP. Beide sind auf eine Kette aus Segmentierung, Wortart, Parsing und NER ausgelegt und bringen dafür trainierte Modelle mit. JioNLP geht den umgekehrten Weg: viele kleine, einzeln aufrufbare Funktionen für Felder, die in Modellpipelines traditionell untergehen, etwa Kennzeichen, QQ-Nummern, WeChat-IDs oder Ausweisnummern. Der Unterschied liegt nicht in der Genauigkeit, sondern in der Zuständigkeit. LTP und HanLP liefern eine Satzanalyse, aus der man Felder erst extrahieren muss. JioNLP liefert das Feld direkt, dafür keine Satzanalyse. In einem Projekt, das beides braucht, ist die Kombination sinnvoll, und JioNLP ist dann die zweite Bibliothek nach der Segmentierung. Wer nur eine Satzanalyse braucht, sollte JioNLP gar nicht erst installieren.
Pflege, Lizenz und Betriebsaufwand
Das Repository trägt die Apache-2.0-Lizenz, das Paket liegt auf PyPI, und die README nennt Version 1.5.29 sowie eine Paketgröße von 15,6 MB. Die Lizenz erlaubt kommerzielle Nutzung und Änderung; wer das Paket weiterverbreitet oder verändert, muss die Bedingungen der Apache-2.0 einhalten, insbesondere Hinweise auf Änderungen und den Lizenztext. Das ist eine technische Einordnung, keine Rechtsberatung. Für den Betrieb relevant: JioNLP ist reines Python ohne Dienst, also ohne laufenden Server. Der Aktualisierungsaufwand entsteht an zwei Stellen. Erstens bei den Wörterbüchern und Regeln, die mit dem Paket ausgeliefert werden und sich mit einer neuen Version ändern können; ein Versionssprung kann die Ausgabe von parse_location oder parse_id_card verschieben. Zweitens bei den Cloud-gebundenen Funktionen, deren Verhalten von fremden Schnittstellen abhängt. Ein Upgrade sollte deshalb gegen eigene Testfälle laufen, nicht gegen die Beispiele der README. Ein Archivstatus liegt nicht vor, der letzte Push ist datiert, und Release-Notizen wurden nicht abgerufen, sodass sich zur Release-Kadenz hier nichts sagen lässt.
Redaktionelles Fazit
JioNLP passt zu Teams, die einzelne chinesische Vorverarbeitungsschritte wie parse_time, parse_location oder clean_text als Bibliotheksaufruf brauchen und die Ausgabe selbst weiterverarbeiten. Wer eine vortrainierte Pipeline mit Tokenisierung und Modellinferenz sucht, ist hier falsch. Vor dem Einsatz sollte man die Wiki-Seiten der benötigten Funktion öffnen, weil die README nur Tabellen enthält, sowie prüfen, ob die Funktion ein lokales Wörterbuch lädt oder einen Cloud-Zugang verlangt, denn BackTranslation und MELLM brauchen beides.
Community-Notizen