Eigenständig. Klein. Sprachneutral.
Budoux ist der Nachfolger von Budou, dem Werkzeug für maschinelles Lernen, Line Break Organizer.
Es ist eigenständig . Es funktioniert ohne Abhängigkeit von Word-Segmentern von Drittanbietern wie der Google Cloud Natural Language API.
Es ist klein . Es dauert nur etwa 15 KB, einschließlich des Modells für maschinelles Lernen. Es ist vernünftig, es auch auf der Kundenseite zu verwenden.
Es ist sprachneutral . Sie können ein Modell für jede Sprache trainieren, indem Sie einen Datensatz an das Trainingsskript von Budoux füttern.
Last but not least unterstützt Budoux HTML -Eingänge.
https://google.github.io/budoux
Koreaner verwendet Leerzeichen zwischen Wörtern, sodass Sie im Allgemeinen verhindern können, dass Wörter über Zeilen aufgeteilt werden, indem Sie die CSS-Eigenschaft word-break: keep-all in den Absatz, was viel leistungsfähiger sein sollte als Budoux zu installieren. Trotzdem erforschen wir gerne dedizierte Unterstützung der koreanischen Sprache, wenn sich die oben genannte Lösung als unzureichend erweist.
$ pip install budouxSie können eine Liste von Phrasen erhalten, indem Sie einen Satz an den Parser füttern. Der einfachste Weg ist es, einen Parser zu bekommen, den Standard -Parser für jede Sprache zu laden.
Japanisch:
import budoux
parser = budoux . load_default_japanese_parser ()
print ( parser . parse ( '今日は天気です。' ))
# ['今日は', '天気です。']Vereinfachtes Chinesisch:
import budoux
parser = budoux . load_default_simplified_chinese_parser ()
print ( parser . parse ( '今天是晴天。' ))
# ['今天', '是', '晴天。']Traditionelles Chinesisch:
import budoux
parser = budoux . load_default_traditional_chinese_parser ()
print ( parser . parse ( '今天是晴天。' ))
# ['今天', '是', '晴天。']Thai:
import budoux
parser = budoux . load_default_thai_parser ()
print ( parser . parse ( 'วันนี้อากาศดี' ))
# ['วัน', 'นี้', 'อากาศ', 'ดี']Sie können auch eine HTML-String übersetzt, um Phrasen mit nicht brechenem Markup zu wickeln. Der Standard-Parser verwendet Null-Width Space (U+200b), um Phrasen zu trennen.
print ( parser . translate_html_string ( '今日は<b>とても天気</b>です。' ))
# <span style="word-break: keep-all; overflow-wrap: anywhere;">今日は<b>u200bとてもu200b天気</b>です。</span> Bitte beachten Sie, dass Separatoren im obigen Beispiel für veranschaulichende Zwecke als u200b bezeichnet werden. Die tatsächliche Ausgabe ist jedoch eine unsichtbare Zeichenfolge, da es sich um einen Speicherplatz mit Null.
Wenn Sie ein benutzerdefiniertes Modell haben, können Sie es wie folgt verwenden.
with open ( '/path/to/your/model.json' ) as f :
model = json . load ( f )
parser = budoux . Parser ( model )Eine Modelldatei für Budoux ist eine JSON -Datei, die Paare einer Funktion enthält und deren Punktzahl durch maschinelles Lernen extrahiert wird. Jede Punktzahl repräsentiert die Bedeutung des Merkmals bei der Bestimmung, ob der Satz an einem bestimmten Punkt brechen soll.
Weitere Informationen zum JavaScript -Modell finden Sie unter dem JavaScript -Modul Readme.
Sie können auch Eingänge auf Ihrem Terminal mit budoux -Befehl formatieren.
$ budoux 本日は晴天です。 # default: japanese
本日は
晴天です。
$ budoux -l ja 本日は晴天です。
本日は
晴天です。
$ budoux -l zh-hans 今天天气晴朗。
今天
天气
晴朗。
$ budoux -l zh-hant 今天天氣晴朗。
今天
天氣
晴朗。
$ budoux -l th วันนี้อากาศดี
วัน
นี้
อากาศ
ดี $ echo $'本日は晴天です。 n明日は曇りでしょう。 ' | budoux
本日は
晴天です。
---
明日は
曇りでしょう。 $ budoux 本日は晴天です。 -H
<span style="word-break: keep-all; overflow-wrap: anywhere;">本日はu200b晴天です。</span> Bitte beachten Sie, dass Separatoren im obigen Beispiel für veranschaulichende Zwecke als u200b bezeichnet werden. Die tatsächliche Ausgabe ist jedoch eine unsichtbare Zeichenfolge, da es sich um einen Speicherplatz mit Null.
Wenn Sie Hilfe sehen möchten, führen Sie budoux -h aus.
$ budoux -h
usage: budoux [-h] [-H] [-m JSON | -l LANG] [-d STR] [-V] [TXT]
BudouX is the successor to Budou,
the machine learning powered line break organizer tool.
positional arguments:
TXT text (default: None)
optional arguments:
-h, --help show this help message and exit
-H, --html HTML mode (default: False)
-m JSON, --model JSON custom model file path (default: /path/to/budoux/models/ja.json)
-l LANG, --lang LANG language of custom model (default: None)
-d STR, --delim STR output delimiter in TEXT mode (default: ---)
-V, --version show program's version number and exit
supported languages of `-l`, `--lang`:
- ja
- zh-hans
- zh-hant
- th Budoux unterstützt HTML -Eingänge und -ausgänge HTML -Saiten mit Markup, das Phrasen umhüllt, aber es soll nicht als HTML -Desinfektionsmittel verwendet werden. Budoux saniert keine Eingaben. Bösartige HTML -Eingänge ergeben böswillige HTML -Ausgänge. Bitte verwenden Sie es mit einer geeigneten Desinfektionsbibliothek, wenn Sie der Eingabe nicht vertrauen.
Der englische Text hat viele Hinweise, wie Abstand und Bindestrich, die schöne und lesbare Linienbrüche ermöglichen. In einigen CJK -Sprachen fehlen jedoch diese Hinweise und sind daher notorisch schwieriger zu verarbeiten. Linienbrüche können zufällig und normalerweise in der Mitte eines Wortes oder in einer Phrase ohne sorgfältigere Ansatz auftreten. Dies ist ein langjähriges Problem in der Typografie im Web, was zu einem Abbau der Lesbarkeit führt.
Budou wurde 2016 als Lösung für dieses Problem vorgeschlagen. Es wird CJK-Sätze automatisch in HTML mit lexikalischen Phrasen übersetzt, die in nicht brechenem Markup eingewickelt sind, um semantisch Linienbrüche zu steuern. Budou hat dieses Problem in gewissem Maße gelöst, aber es hat immer noch Probleme, sich in den modernen Webproduktions -Workflow zu integrieren.
Das größte Hindernis für die Anwendung von Budou auf eine Website ist, dass es von Segmentern von Drittanbietern abhängig ist. Normalerweise ist ein Word -Segmentierer ein großes Programm, das für jede Webseitenanforderung nicht für den Download für den Herunterladen ist. Es wäre auch eine unerwünschte Option, eine Anfrage an einen Cloud-basierten Word-Segmentierungsdienst für jeden Satz zu stellen, unter Berücksichtigung der Geschwindigkeit und der Kosten. Aus diesem Grund benötigen wir ein eigenständiges Werkzeug für Line Line Break Organizer, das mit einer eigenen Segmentierungsmaschine ausgestattet ist, die klein genug ist, um in einem clientseitigen JavaScript-Code gebündelt zu werden.
Budou X ist der Nachfolger von Budou, der ohne Probleme in Ihre Website integriert ist.
Budoux verwendet den Adaboost -Algorithmus, um einen Satz in Phrasen zu untersuchen, indem sie die Aufgabe als ein Binärklassifizierungsproblem betrachtet, um vorherzusagen, ob alle Zeichen brechen oder nicht. Es verwendet Merkmale wie die Charaktere rund um den Bruchpunkt, ihre Unicode -Blöcke und Kombinationen von ihnen, um eine Vorhersage zu machen. Das als JSON -Datei kodierte Ausgabemodell für maschinelles Lernen speichert Paare der Funktion und dessen Signifikanzwert. Der Budoux -Parser nimmt eine Modelldatei, um einen Segmentierer zu konstruieren, und übersetzt Eingabesätze in eine Liste von Phrasen.
Sie können Ihr eigenes benutzerdefiniertes Modell für jede Sprache erstellen, indem Sie Trainingsdaten in der Zielsprache erstellen. Ein Trainingsdatensatz ist eine große Textdatei, die aus Sätzen besteht, die durch Phrasen mit dem Separatorsymbol "” (U+2581) wie unten getrennt sind.
私は▁遅刻魔で、▁待ち合わせに▁いつも▁遅刻してしまいます。
メールで▁待ち合わせ▁相手に▁一言、▁「ごめんね」と▁謝れば▁どうにか▁なると▁思っていました。
海外では▁ケータイを▁持っていない。
Unter der Annahme, dass die Textdatei als mysource.txt gespeichert ist, können Sie Ihr eigenes benutzerdefiniertes Modell erstellen, indem Sie die folgenden Befehle ausführen.
$ pip install .[dev]
$ python scripts/encode_data.py mysource.txt -o encoded_data.txt
$ python scripts/train.py encoded_data.txt -o weights.txt
$ python scripts/build_model.py weights.txt -o mymodel.json Bitte beachten Sie, dass train.py je nach Computerressourcen einige Zeit nimmt, um abzuschließen. Gute Nachricht ist, dass der Trainingsalgorithmus jederzeit ein Algorithmus ist, sodass Sie eine Gewichtsdatei erhalten können, auch wenn Sie die Ausführung unterbrechen. Sie können eine gültige Modelldatei erstellen, indem Sie diese Gewichtsdatei auch in einem solchen Fall an build_model.py übergeben.
Das Standardmodell für Japanisch ( budoux/models/ja.json ) wurde unter Verwendung des KNBC -Korpus erstellt. Sie können einen Trainingsdatensatz erstellen, den wir im Folgenden source_knbc.txt aus dem Korpus nennen, indem wir die folgenden Befehle ausführen:
$ curl -o knbc.tar.bz2 https://nlp.ist.i.kyoto-u.ac.jp/kuntt/KNBC_v1.0_090925_utf8.tar.bz2
$ tar -xf knbc.tar.bz2 # outputs KNBC_v1.0_090925_utf8 directory
$ python scripts/prepare_knbc.py KNBC_v1.0_090925_utf8 -o source_knbc.txt Shuhei Iitsuka
Dies ist kein offiziell unterstütztes Google -Produkt.