Autónomo. Pequeño. Lenguaje-neutral.
Budoux es el sucesor de Budou, la herramienta del organizador de ruptura de línea de aprendizaje automático.
Es independiente . Funciona sin dependencia de los segmentadores de palabras de terceros como la API del lenguaje natural de Google Cloud.
Es pequeño . Solo se necesitan alrededor de 15 KB, incluido su modelo de aprendizaje automático. Es razonable usarlo incluso en el lado del cliente.
Es el lenguaje neutral . Puede capacitar a un modelo para cualquier idioma alimentando un conjunto de datos al script de capacitación de Budoux.
Por último, pero no menos importante, Budoux admite entradas HTML.
https://google.github.io/budoux
El coreano usa espacios entre palabras, por lo que generalmente puede evitar que las palabras se dividan a través de las líneas aplicando la propiedad de CSS word-break: keep-all al párrafo, que debería ser mucho más desempeñado que la instalación de Budoux. Dicho esto, estamos felices de explorar el apoyo dedicado del idioma coreano si la solución anterior resulta insuficiente.
$ pip install budouxPuede obtener una lista de frases alimentando una oración al analizador. La forma más fácil es obtener un analizador es cargar el analizador predeterminado para cada idioma.
Japonés:
import budoux
parser = budoux . load_default_japanese_parser ()
print ( parser . parse ( '今日は天気です。' ))
# ['今日は', '天気です。']Chino simplificado:
import budoux
parser = budoux . load_default_simplified_chinese_parser ()
print ( parser . parse ( '今天是晴天。' ))
# ['今天', '是', '晴天。']Chino tradicional:
import budoux
parser = budoux . load_default_traditional_chinese_parser ()
print ( parser . parse ( '今天是晴天。' ))
# ['今天', '是', '晴天。']Tailandés:
import budoux
parser = budoux . load_default_thai_parser ()
print ( parser . parse ( 'วันนี้อากาศดี' ))
# ['วัน', 'นี้', 'อากาศ', 'ดี']También puede traducir una cadena HTML para envolver frases con un marcado no roto. El analizador predeterminado utiliza un espacio de ancho cero (U+200b) para separar frases.
print ( parser . translate_html_string ( '今日は<b>とても天気</b>です。' ))
# <span style="word-break: keep-all; overflow-wrap: anywhere;">今日は<b>u200bとてもu200b天気</b>です。</span> Tenga en cuenta que los separadores se denotan como u200b en el ejemplo anterior para fines ilustrativos, pero la salida real es una cadena invisible, ya que es un espacio de ancho cero.
Si tiene un modelo personalizado, puede usarlo de la siguiente manera.
with open ( '/path/to/your/model.json' ) as f :
model = json . load ( f )
parser = budoux . Parser ( model )Un archivo modelo para Budoux es un archivo JSON que contiene pares de una función y su puntaje extraído por el entrenamiento de aprendizaje automático. Cada puntaje representa la importancia de la característica para determinar si romper la oración en un punto específico.
Para obtener más detalles del modelo JavaScript, consulte el módulo JavaScript ReadMe.
También puede formatear entradas en su terminal con el comando 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> Tenga en cuenta que los separadores se denotan como u200b en el ejemplo anterior para fines ilustrativos, pero la salida real es una cadena invisible, ya que es un espacio de ancho cero.
Si quieres ver ayuda, corre 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 admite entradas HTML y sale cadenas HTML con marcado que envuelve frases, pero no está destinado a usarse como un desinfectante HTML. Budoux no desinfecta ninguna entrada. Las entradas HTML maliciosas producen salidas HTML maliciosas. Úselo con una biblioteca de desinfectante apropiada si no confía en la entrada.
El texto en inglés tiene muchas pistas, como el espacio y la guión, que permiten descansos de línea hermosos y legibles. Sin embargo, algunos idiomas de CJK carecen de estas pistas, por lo que son notoriamente más difíciles de procesar. Los descansos de línea pueden ocurrir al azar y generalmente en el medio de una palabra o una frase sin un enfoque más cuidadoso. Este es un problema de larga data en la tipografía en la web, lo que resulta en una degradación de legibilidad.
Budou se propuso como una solución a este problema en 2016. Traduce automáticamente las oraciones CJK en HTML con frases léxicas envueltas en un marcado no roto, para controlar semánticamente las salidas de línea. Budou ha resuelto este problema hasta cierto punto, pero aún tiene algunos problemas para integrarse con el flujo de trabajo de producción web moderno.
La mayor barrera para aplicar Budou a un sitio web es que tiene dependencia de los segmentos de palabras de terceros. Por lo general, un segmento de palabras es un programa grande que es inviable para descargar para cada solicitud de página web. También sería una opción indeseable hacer una solicitud para un servicio de segmentación de palabras basado en la nube para cada oración, considerando la velocidad y el costo. Es por eso que necesitamos una herramienta de organizador de ruptura de línea independiente equipada con su propio motor de segmentación lo suficientemente pequeño como para agruparse en un código JavaScript del lado del cliente.
Budou X es el sucesor de Budou, diseñado para integrarse con su sitio web sin problemas.
Budoux usa el algoritmo Adaboost para segmentar una oración a frases considerando la tarea como un problema de clasificación binaria para predecir si romper o no entre todos los personajes. Utiliza características como los personajes alrededor del punto de quiebre, sus bloques Unicode y combinaciones de ellos para hacer una predicción. El modelo de aprendizaje automático de salida, que está codificado como un archivo JSON, almacena pares de la función y su puntaje de significancia. El analizador de Budoux toma un archivo modelo para construir un segmenter y traduce las oraciones de entrada en una lista de frases.
Puede crear su propio modelo personalizado para cualquier idioma preparando datos de capacitación en el idioma de destino. Un conjunto de datos de entrenamiento es un archivo de texto grande que consiste en oraciones separadas por frases con el símbolo del separador "" (U+2581) como a continuación.
私は▁遅刻魔で、▁待ち合わせに▁いつも▁遅刻してしまいます。
メールで▁待ち合わせ▁相手に▁一言、▁「ごめんね」と▁謝れば▁どうにか▁なると▁思っていました。
海外では▁ケータイを▁持っていない。
Suponiendo que el archivo de texto se guarda como mysource.txt , puede construir su propio modelo personalizado ejecutando los siguientes comandos.
$ 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 Tenga en cuenta que train.py toma tiempo para completar dependiendo de los recursos de su computadora. La buena noticia es que el algoritmo de capacitación es un algoritmo en cualquier momento, por lo que puede obtener un archivo de pesas incluso si interrumpe la ejecución. Puede crear un archivo de modelo válido pasando ese archivo de pesas a build_model.py incluso en tal caso.
El modelo predeterminado para japonés ( budoux/models/ja.json ) se construye utilizando el corpus KNBC. Puede crear un conjunto de datos de capacitación, que llamamos source_knbc.txt a continuación, por ejemplo, desde el corpus ejecutando los siguientes comandos:
$ 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
Este no es un producto de Google compatible oficialmente.