Autonome. Petit. Neutre.
Budoux est le successeur de Budou, l'outil Organisateur de la ligne alimentée par l'apprentissage automatique.
C'est autonome . Il fonctionne sans dépendance à l'égard des segments de mots tiers tels que Google Cloud Natural Language API.
C'est petit . Il ne prend que environ 15 Ko, y compris son modèle d'apprentissage automatique. Il est raisonnable de l'utiliser même sur le côté client.
Il est neutre de la langue . Vous pouvez former un modèle pour n'importe quelle langue en alimentant un ensemble de données au script de formation de Budoux.
Enfin et surtout, Budoux prend en charge les entrées HTML.
https://google.github.io/budoux
Le coréen utilise des espaces entre les mots, de sorte que vous pouvez généralement empêcher les mots d'être divisés entre les lignes en appliquant la word-break: keep-all au paragraphe, ce qui devrait être beaucoup plus performant que l'installation de Budoux. Cela dit, nous sommes heureux d'explorer un soutien linguistique coréen dédié si la solution ci-dessus s'avère insuffisante.
$ pip install budouxVous pouvez obtenir une liste de phrases en nourrissant une phrase à l'analyseur. Le moyen le plus simple est d'obtenir un analyseur est de charger l'analyseur par défaut pour chaque langue.
Japonais:
import budoux
parser = budoux . load_default_japanese_parser ()
print ( parser . parse ( '今日は天気です。' ))
# ['今日は', '天気です。']Chinois simplifié:
import budoux
parser = budoux . load_default_simplified_chinese_parser ()
print ( parser . parse ( '今天是晴天。' ))
# ['今天', '是', '晴天。']Chinois traditionnel:
import budoux
parser = budoux . load_default_traditional_chinese_parser ()
print ( parser . parse ( '今天是晴天。' ))
# ['今天', '是', '晴天。']Thaïlandais:
import budoux
parser = budoux . load_default_thai_parser ()
print ( parser . parse ( 'วันนี้อากาศดี' ))
# ['วัน', 'นี้', 'อากาศ', 'ดี']Vous pouvez également traduire une chaîne HTML pour envelopper des phrases avec un balisage non brisé. L'analyseur par défaut utilise un espace à largeur zéro (U + 200B) pour séparer les phrases.
print ( parser . translate_html_string ( '今日は<b>とても天気</b>です。' ))
# <span style="word-break: keep-all; overflow-wrap: anywhere;">今日は<b>u200bとてもu200b天気</b>です。</span> Veuillez noter que les séparateurs sont désignés comme u200b dans l'exemple ci-dessus à des fins illustratives, mais la sortie réelle est une chaîne invisible car c'est un espace à largeur zéro.
Si vous avez un modèle personnalisé, vous pouvez l'utiliser comme suit.
with open ( '/path/to/your/model.json' ) as f :
model = json . load ( f )
parser = budoux . Parser ( model )Un fichier modèle pour Budoux est un fichier JSON qui contient des paires d'une fonctionnalité et son score extrait par une formation d'apprentissage automatique. Chaque score représente la signification de la caractéristique pour déterminer s'il faut briser la phrase à un point spécifique.
Pour plus de détails sur le modèle JavaScript, veuillez consulter le module JavaScript Readme.
Vous pouvez également formater les entrées sur votre terminal avec la commande budoux .
$ 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> Veuillez noter que les séparateurs sont désignés comme u200b dans l'exemple ci-dessus à des fins illustratives, mais la sortie réelle est une chaîne invisible car c'est un espace à largeur zéro.
Si vous voulez voir de l'aide, exécutez budoux -h .
$ 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 prend en charge les entrées HTML et sortira des chaînes HTML avec un balisage qui enveloppe les phrases, mais il n'est pas censé être utilisé comme désinfectant HTML. Budoux ne désinfectue aucune entrée. Les entrées HTML malveillantes donnent des sorties HTML malveillantes. Veuillez l'utiliser avec une bibliothèque de désinfectant appropriée si vous ne faites pas confiance à l'entrée.
Le texte anglais a de nombreux indices, comme l'espacement et les traits de génie, qui permettent des pauses de ligne belles et lisibles. Cependant, certaines langues CJK n'ont pas ces indices, et sont donc notoirement plus difficiles à traiter. Les pauses de ligne peuvent se produire au hasard et généralement au milieu d'un mot ou d'une phrase sans approche plus prudente. Il s'agit d'un problème de longue date dans la typographie sur le Web, ce qui entraîne une dégradation de la lisibilité.
Budou a été proposé comme une solution à ce problème en 2016. Il traduit automatiquement les phrases CJK en HTML avec des phrases lexicales enveloppées dans un balisage non décomposé, afin de contrôler sémantiquement les ruptures de ligne. Budou a résolu ce problème dans une certaine mesure, mais il a encore des problèmes à s'intégrer au flux de travail de production Web moderne.
La plus grande barrière dans l'application de Budou sur un site Web est qu'elle dépend des segments de mots tiers. Habituellement, un segmenter de mots est un grand programme qui est irréalisable à télécharger pour chaque demande de page Web. Ce serait également une option indésirable faisant une demande à un service de segmentation de mots basé sur le cloud pour chaque phrase, compte tenu de la vitesse et du coût. C'est pourquoi nous avons besoin d'un outil d'organisateur de rupture de ligne autonome équipé de son propre moteur de segmentation suffisamment petit pour être regroupé dans un code JavaScript côté client.
Budou X est le successeur de Budou, conçu pour être intégré à votre site Web sans tracas.
Budoux utilise l'algorithme Adaboost pour segmenter une phrase en phrases en considérant la tâche comme un problème de classification binaire pour prédire s'il faut se casser ou non entre tous les caractères. Il utilise des fonctionnalités telles que les personnages autour du point de rupture, leurs blocs Unicode et des combinaisons pour faire une prédiction. Le modèle d'apprentissage automatique de sortie, qui est codé comme un fichier JSON, stocke les paires de la fonctionnalité et son score de signification. L'analyseur de Budoux prend un fichier de modèle pour construire un segmentant et traduit des phrases d'entrée dans une liste de phrases.
Vous pouvez créer votre propre modèle personnalisé pour n'importe quelle langue en préparant des données de formation dans la langue cible. Un ensemble de données de formation est un grand fichier texte qui se compose de phrases séparées par des phrases avec le symbole du séparateur "" (U + 2581) comme ci-dessous.
私は▁遅刻魔で、▁待ち合わせに▁いつも▁遅刻してしまいます。
メールで▁待ち合わせ▁相手に▁一言、▁「ごめんね」と▁謝れば▁どうにか▁なると▁思っていました。
海外では▁ケータイを▁持っていない。
En supposant que le fichier texte est enregistré en tant que mysource.txt , vous pouvez créer votre propre modèle personnalisé en exécutant les commandes suivantes.
$ 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 Veuillez noter que train.py prend du temps à terminer en fonction de vos ressources informatiques. La bonne nouvelle est que l'algorithme de formation est un algorithme à tout moment, vous pouvez donc obtenir un fichier de poids même si vous interrompez l'exécution. Vous pouvez créer un fichier de modèle valide en passant ce fichier de poids à build_model.py même dans un tel cas.
Le modèle par défaut pour le japonais ( budoux/models/ja.json ) est construit à l'aide du corpus KNBC. Vous pouvez créer un ensemble de données de formation, que nous nommons source_knbc.txt ci-dessous par exemple, à partir du corpus en exécutant les commandes suivantes:
$ 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
Ce n'est pas un produit Google officiellement pris en charge.