Автономный. Маленький. Языковой нейтральный.
Budoux является преемником Budou, инструмента организаторов с питанием в машинном обучении.
Это автономно . Он работает без зависимости от сторонних сегментов слов, таких как Google Cloud Natural Language API.
Это маленькое . Это занимает всего около 15 т. Д., включая модель машинного обучения. Разумно использовать его даже на стороне клиента.
Это нейтрально . Вы можете обучить модель для любого языка, подарив набор данных для учебного сценария Буду.
И последнее, но не менее важное, Буду поддерживает входные данные HTML.
https://google.github.io/budoux
Корейский язык использует пространства между словами, поэтому вы можете предотвратить разделение слов между линиями, применяя свой word-break: keep-all в абзаце, который должен быть гораздо более эффективным, чем установка Буду. Тем не менее, мы рады изучить выделенную корейскую языковую поддержку, если вышеуказанное решение окажется недостаточным.
$ pip install budouxВы можете получить список фраз, подав предложение для анализатора. Самый простой способ - получить анализатор, - это загрузка анализатора по умолчанию для каждого языка.
Японский:
import budoux
parser = budoux . load_default_japanese_parser ()
print ( parser . parse ( '今日は天気です。' ))
# ['今日は', '天気です。']Упрощенный китайский:
import budoux
parser = budoux . load_default_simplified_chinese_parser ()
print ( parser . parse ( '今天是晴天。' ))
# ['今天', '是', '晴天。']Традиционный китайский:
import budoux
parser = budoux . load_default_traditional_chinese_parser ()
print ( parser . parse ( '今天是晴天。' ))
# ['今天', '是', '晴天。']Тайский:
import budoux
parser = budoux . load_default_thai_parser ()
print ( parser . parse ( 'วันนี้อากาศดี' ))
# ['วัน', 'นี้', 'อากาศ', 'ดี']Вы также можете перевести строку HTML, чтобы обернуть фразы с неразрывной наценкой. Сигсерчик по умолчанию использует пространство с нулевой шириной (U+200b) для отдельных фраз.
print ( parser . translate_html_string ( '今日は<b>とても天気</b>です。' ))
# <span style="word-break: keep-all; overflow-wrap: anywhere;">今日は<b>u200bとてもu200b天気</b>です。</span> Обратите внимание, что разделители обозначены как u200b в примере выше для иллюстративных целей, но фактический вывод является невидимой строкой, поскольку это пространство с нулевой шириной.
Если у вас есть пользовательская модель, вы можете использовать ее следующим образом.
with open ( '/path/to/your/model.json' ) as f :
model = json . load ( f )
parser = budoux . Parser ( model )Модельный файл для Budoux - это файл JSON, который содержит пары функции и его счет, извлеченный обучением машинного обучения. Каждая оценка представляет значение функции при определении того, сломать ли предложение в определенную точку.
Для получения более подробной информации о модели JavaScript, пожалуйста, обратитесь к JavaScript Module Readme.
Вы также можете отформатировать входы на своем терминале с помощью команды 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> Обратите внимание, что разделители обозначены как u200b в примере выше для иллюстративных целей, но фактический вывод является невидимой строкой, поскольку это пространство с нулевой шириной.
Если вы хотите увидеть помощь, запустите 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 поддерживает HTML -входы и выходы HTML -строки с разметкой, которая обертывает фразы, но это не предназначено для использования в качестве дезинфицирующего средства HTML. Буду не дезинфицирует никаких входов. Злоусовеченные HTML -входы дают вредоносные выходы HTML. Пожалуйста, используйте его с соответствующей библиотекой дезинфицирующих средств, если вы не доверяете вводу.
Английский текст имеет много подсказок, таких как расстояние и дефисация, которые обеспечивают красивые и читаемые разрывы линий. Тем не менее, некоторым языкам CJK не хватает этих подсказок, и поэтому, как известно, их сложнее обрабатывать. Разрывы линий могут происходить случайным образом и обычно в середине слова или фразы без более осторожного подхода. Это давняя проблема в типографике в Интернете, которая приводит к деградации читабельности.
Буду был предложен в качестве решения этой проблемы в 2016 году. Он автоматически переводит предложения CJK в HTML с лексическими фразами, обернутыми в неразрывающуюся разметку, чтобы семантические разрывы линии управления. Буду в некоторой степени решил эту проблему, но у него все еще есть некоторые проблемы, интегрирующие с современным рабочим процессом веб -производства.
Самым большим барьером в применении Budou на веб-сайт является то, что он зависит от сторонних сегментов слов. Обычно сегмент слов - это большая программа, которая невозможно загружать для каждого запроса веб -страницы. Это также было бы нежелательным вариантом, который делает запрос на облачную службу сегментации слов для каждого предложения, учитывая скорость и стоимость. Вот почему нам нужен автономный инструмент организатора линии, оснащенный собственным двигателем сегментации, достаточно маленьким, чтобы быть в комплекте в коде JavaScript на стороне клиента.
Budou X является преемником Budou, разработанным для интеграции с вашим веб -сайтом без проблем.
Budoux использует алгоритм Adaboost для сегмента предложения на фразы, рассматривая задачу как проблему бинарной классификации, чтобы предсказать, сломаться или нет между всеми символами. Он использует такие функции, как персонажи вокруг точки разрыва, их блоки Unicode и их комбинации, чтобы сделать прогноз. Модель выходного машинного обучения, которая кодируется как файл JSON, хранит пары функции и ее оценку значимости. Парсер Budoux берет модельный файл для построения сегментатора и переводит входные предложения в список фраз.
Вы можете создать свою собственную модель для любого языка, подготовив данные обучения на целевом языке. Обучающий набор данных - это большой текстовый файл, который состоит из предложений, разделенных фразами с символом сепаратора «‘ (U+2581), как ниже.
私は▁遅刻魔で、▁待ち合わせに▁いつも▁遅刻してしまいます。
メールで▁待ち合わせ▁相手に▁一言、▁「ごめんね」と▁謝れば▁どうにか▁なると▁思っていました。
海外では▁ケータイを▁持っていない。
Предполагая, что текстовый файл сохраняется как mysource.txt , вы можете создать свою собственную пользовательскую модель, выполнив следующие команды.
$ 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 Обратите внимание, что train.py требует времени, чтобы заполнить в зависимости от ваших компьютерных ресурсов. Хорошей новостью является то, что алгоритм обучения является алгоритмом в любое время, поэтому вы можете получить файл веса, даже если вы прерываете выполнение. Вы можете создать действительный файл модели, передавая этот файл веса в build_model.py даже в таком случае.
Модель по умолчанию для японцев ( budoux/models/ja.json ) построена с использованием корпуса KNBC. Вы можете создать учебный набор данных, который мы называем source_knbc.txt ниже, например, из корпуса, выполнив следующие команды:
$ 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
Это не официально поддерживаемый продукт Google.