獨立。小的。語言中立。
Budoux是Budou的繼任者,Budou是機器學習動力的線路斷路組織者工具。
它是獨立的。它不依賴於第三方單詞細分器,例如Google Cloud自然語言API。
它很小。它僅需大約15 KB,包括其機器學習模型。即使在客戶端,也可以使用它。
這是語言中立。您可以通過將數據集饋送到Budoux的培訓腳本來培訓任何語言的模型。
最後但並非最不重要的一點是,Budoux支持HTML輸入。
https://google.github.io/budoux
韓國人在單詞之間使用空間,因此您通常可以通過應用CSS屬性word-break: keep-all段落保留到段落中,以防止單詞跨行題,這應該比安裝Budoux更具性能。就是說,如果上述解決方案不足,我們很樂意探索專用的韓國語言支持。
$ 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模塊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消毒劑。 Budoux不會消毒任何輸入。惡意HTML輸入產生惡意HTML輸出。如果您不信任輸入,請與適當的消毒劑庫一起使用。
英文文字有許多線索,例如間距和連字符,可以使美麗而可讀的線路斷裂。但是,一些CJK語言缺乏這些線索,因此眾所周知,很難處理。線斷裂可以隨機發生,通常在單詞或短語中間發生,而無需更仔細的方法。這是網絡上排版的一個長期問題,這導致可讀性的降解。
Budou在2016年被提議作為解決此問題的解決方案。它自動將CJK句子轉換為HTML,其中包含在非破壞標記中的詞彙短語,以便通過語義控制線路斷裂。布都在某種程度上解決了這個問題,但是它仍然存在與現代網絡生產工作流程集成在一起的問題。
將Budou應用於網站的最大障礙是它依賴第三方單詞細分器。通常,單詞分段器是一個大型程序,每個網頁請求都無法下載。考慮到速度和成本,這也是一個不希望的選擇,請求每個句子的基於雲的單詞細分服務。這就是為什麼我們需要配備其自己的分割引擎的獨立線路斷路組織器工具,足夠小,可以捆綁在客戶端的JavaScript代碼中。
Budou X是Budou的繼任者,該繼任者旨在與您的網站集成而沒有麻煩。
Budoux使用Adaboost算法將任務視為二進制分類問題,以預測是否在所有字符之間中斷,將句子分為短語。它使用諸如突發點周圍的字符,其Unicode塊以及它們的組合之類的功能來做出預測。輸出計算機學習模型被編碼為JSON文件,該模型存儲了該功能的對及其顯著性評分。 Budoux Parser採用模型文件來構建細分器,並將輸入句子轉換為短語列表。
您可以通過準備目標語言的培訓數據來為任何語言構建自己的自定義模型。培訓數據集是一個大型文本文件,由以下句子組成,該句子由分隔符符號“ r”(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產品。