独立。小的。语言中立。
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产品。