Mandiri. Kecil. Netral bahasa.
Budoux adalah penerus Budou, alat organizer Break Line Break Machine Learning.
Itu mandiri . Ini bekerja tanpa ketergantungan pada segmen kata pihak ketiga seperti Google Cloud Natural Language API.
Itu kecil . Hanya membutuhkan sekitar 15 kb termasuk model pembelajaran mesinnya. Masuk akal untuk menggunakannya bahkan di sisi klien.
Itu netral bahasa . Anda dapat melatih model untuk bahasa apa pun dengan memberi makan dataset ke skrip pelatihan Budoux.
Terakhir, Budoux mendukung input HTML.
https://google.github.io/budoux
Korea menggunakan spasi antara kata-kata, sehingga Anda umumnya dapat mencegah kata-kata dari garis-garis dengan menerapkan properti CSS word-break: keep-all ke paragraf, yang seharusnya jauh lebih berkinerja daripada memasang Budoux. Yang mengatakan, kami senang mengeksplorasi dukungan bahasa Korea yang berdedikasi jika solusi di atas terbukti tidak mencukupi.
$ pip install budouxAnda bisa mendapatkan daftar frasa dengan memberi makan kalimat ke parser. Cara termudah adalah dengan mendapatkan parser adalah memuat parser default untuk setiap bahasa.
Jepang:
import budoux
parser = budoux . load_default_japanese_parser ()
print ( parser . parse ( '今日は天気です。' ))
# ['今日は', '天気です。']China yang disederhanakan:
import budoux
parser = budoux . load_default_simplified_chinese_parser ()
print ( parser . parse ( '今天是晴天。' ))
# ['今天', '是', '晴天。']Cina Tradisional:
import budoux
parser = budoux . load_default_traditional_chinese_parser ()
print ( parser . parse ( '今天是晴天。' ))
# ['今天', '是', '晴天。']Thai:
import budoux
parser = budoux . load_default_thai_parser ()
print ( parser . parse ( 'วันนี้อากาศดี' ))
# ['วัน', 'นี้', 'อากาศ', 'ดี']Anda juga dapat menerjemahkan string HTML untuk membungkus frasa dengan markup non-breaking. Parser default menggunakan ruang nol-lebar (U+200b) untuk memisahkan frasa.
print ( parser . translate_html_string ( '今日は<b>とても天気</b>です。' ))
# <span style="word-break: keep-all; overflow-wrap: anywhere;">今日は<b>u200bとてもu200b天気</b>です。</span> Harap dicatat bahwa pemisah dilambangkan sebagai u200b dalam contoh di atas untuk tujuan ilustrasi, tetapi output aktual adalah string yang tidak terlihat karena merupakan ruang nol-lebar.
Jika Anda memiliki model khusus, Anda dapat menggunakannya sebagai berikut.
with open ( '/path/to/your/model.json' ) as f :
model = json . load ( f )
parser = budoux . Parser ( model )File model untuk Budoux adalah file JSON yang berisi pasangan fitur dan skornya diekstraksi oleh pelatihan pembelajaran mesin. Setiap skor mewakili pentingnya fitur dalam menentukan apakah akan melanggar kalimat pada titik tertentu.
Untuk detail lebih lanjut dari model JavaScript, silakan merujuk ke JavaScript Module ReadMe.
Anda juga dapat memformat input di terminal Anda dengan perintah 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> Harap dicatat bahwa pemisah dilambangkan sebagai u200b dalam contoh di atas untuk tujuan ilustrasi, tetapi output aktual adalah string yang tidak terlihat karena merupakan ruang nol-lebar.
Jika Anda ingin melihat bantuan, jalankan 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 mendukung input dan output HTML dengan markup yang membungkus frasa, tetapi itu tidak dimaksudkan untuk digunakan sebagai pembersih HTML. Budoux tidak membersihkan input apa pun. Input HTML berbahaya menghasilkan output HTML berbahaya. Harap gunakan dengan perpustakaan pembersih yang sesuai jika Anda tidak mempercayai inputnya.
Teks bahasa Inggris memiliki banyak petunjuk, seperti jarak dan tanda hubung, yang memungkinkan istirahat garis yang indah dan mudah dibaca. Namun, beberapa bahasa CJK tidak memiliki petunjuk ini, dan karenanya lebih sulit diproses. Jeda garis dapat terjadi secara acak dan biasanya di tengah kata atau frasa tanpa pendekatan yang lebih hati -hati. Ini adalah masalah lama dalam tipografi di web, yang menghasilkan degradasi keterbacaan.
Budou diusulkan sebagai solusi untuk masalah ini pada tahun 2016. Ini secara otomatis menerjemahkan kalimat CJK ke dalam HTML dengan frasa leksikal yang dibungkus dengan markup yang tidak memecahkan, sehingga dapat secara semantik mengontrol jeda garis. Budou telah memecahkan masalah ini sampai batas tertentu, tetapi masih memiliki beberapa masalah yang berintegrasi dengan alur kerja produksi web modern.
Hambatan terbesar dalam menerapkan Budou ke situs web adalah bahwa ia memiliki ketergantungan pada segmenter kata pihak ketiga. Biasanya Segmenter Word adalah program besar yang tidak layak untuk diunduh untuk setiap permintaan halaman web. Ini juga akan menjadi opsi yang tidak diinginkan yang membuat permintaan ke layanan segmentasi kata berbasis cloud untuk setiap kalimat, mengingat kecepatan dan biaya. Itu sebabnya kami membutuhkan alat organizer istirahat garis mandiri yang dilengkapi dengan mesin segmentasi sendiri yang cukup kecil untuk dibundel dalam kode JavaScript sisi klien.
Budou X adalah penerus Budou, yang dirancang untuk diintegrasikan dengan situs web Anda tanpa kerumitan.
Budoux menggunakan algoritma Adaboost untuk segmen kalimat menjadi frasa dengan mempertimbangkan tugas sebagai masalah klasifikasi biner untuk memprediksi apakah akan pecah atau tidak di antara semua karakter. Ini menggunakan fitur seperti karakter di sekitar titik break, blok unicode mereka, dan kombinasi dari mereka untuk membuat prediksi. Model pembelajaran mesin output, yang dikodekan sebagai file JSON, menyimpan pasangan fitur dan skor signifikansinya. Budoux Parser mengambil file model untuk membangun segmenter dan menerjemahkan kalimat input ke dalam daftar frasa.
Anda dapat membangun model khusus Anda sendiri untuk bahasa apa pun dengan menyiapkan data pelatihan dalam bahasa target. Dataset pelatihan adalah file teks besar yang terdiri dari kalimat yang dipisahkan oleh frasa dengan simbol pemisah "" (U+2581) seperti di bawah ini.
私は▁遅刻魔で、▁待ち合わせに▁いつも▁遅刻してしまいます。
メールで▁待ち合わせ▁相手に▁一言、▁「ごめんね」と▁謝れば▁どうにか▁なると▁思っていました。
海外では▁ケータイを▁持っていない。
Dengan asumsi file teks disimpan sebagai mysource.txt , Anda dapat membangun model kustom Anda sendiri dengan menjalankan perintah berikut.
$ 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 Harap dicatat bahwa train.py membutuhkan waktu untuk menyelesaikan tergantung pada sumber daya komputer Anda. Berita baiknya adalah bahwa algoritma pelatihan adalah algoritma kapan saja, sehingga Anda bisa mendapatkan file bobot bahkan jika Anda mengganggu eksekusi. Anda dapat membangun file model yang valid dengan meneruskan file bobot itu ke build_model.py bahkan dalam kasus seperti itu.
Model default untuk bahasa Jepang ( budoux/models/ja.json ) dibangun menggunakan KNBC Corpus. Anda dapat membuat dataset pelatihan, yang kami beri nama source_knbc.txt di bawah ini misalnya, dari corpus dengan menjalankan perintah berikut:
$ 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
Ini bukan produk Google yang didukung secara resmi.