독립형. 작은. 언어 중립.
Budoux는 머신 러닝 전원 라인 브레이크 주최자 도구 인 Budou의 후임자입니다.
독립형 입니다. Google Cloud Natural Language API와 같은 타사 워드 세그먼트에 의존하지 않고 작동합니다.
작습니다 . 기계 학습 모델을 포함하여 약 15KB 만 필요합니다. 클라이언트 측에서도 사용하는 것이 합리적입니다.
언어 중립 입니다. 데이터 세트를 Budoux의 교육 스크립트에 공급하여 모든 언어 모델을 훈련시킬 수 있습니다.
마지막으로, Budoux는 HTML 입력을 지원합니다.
https://google.github.io/budoux
한국어는 단어 사이의 공간을 사용하므로 일반적으로 CSS 속성 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 소독제로 사용되는 것은 아닙니다. Budoux는 모든 입력을 소독하지 않습니다. 악의적 인 HTML 입력은 악의적 인 HTML 출력을 산출합니다. 입력을 신뢰하지 않으면 적절한 소독제 라이브러리와 함께 사용하십시오.
영어 텍스트에는 간격과 하이픈 화과 같은 많은 단서가있어 아름답고 읽기 쉬운 라인 브레이크를 가능하게합니다. 그러나 일부 CJK 언어에는 이러한 단서가 없으므로 처리하기가 더 어렵습니다. 라인 브레이크는보다 신중한 접근 방식없이 단어 나 문구의 중간에 무작위로 그리고 일반적으로 발생할 수 있습니다. 이것은 웹에서 타이포그래피에서 오랜 문제로 인해 가독성이 저하됩니다.
Budou는 2016 년 에이 문제에 대한 해결책으로 제안되었습니다. CJK 문장은 Semantically Control Line Break와 같은 어휘 문구를 사용하여 CJK 문장을 HTML로 자동 번역합니다. Budou는이 문제를 어느 정도 해결했지만 여전히 현대 웹 프로덕션 워크 플로와 통합하는 몇 가지 문제가 있습니다.
Budou를 웹 사이트에 적용 할 때 가장 큰 장벽은 타사 단어 세그먼트에 의존한다는 것입니다. 일반적으로 워드 세그먼터는 모든 웹 페이지 요청에 대해 다운로드 할 수없는 큰 프로그램입니다. 또한 속도와 비용을 고려하여 모든 문장에 대해 클라우드 기반 워드 세분화 서비스를 요청하는 바람직하지 않은 옵션입니다. 그렇기 때문에 클라이언트 측 JavaScript 코드에 번들로 묶을 수있을 정도로 작은 자체 세그먼테이션 엔진이 장착 된 독립형 라인 브레이크 주최자 도구가 필요합니다.
Budou X는 번거 로움없이 귀하의 웹 사이트와 통합되도록 설계된 Budou의 후임자입니다.
Budoux는 Adaboost 알고리즘을 사용하여 작업을 이진 분류 문제로 고려하여 모든 문자간에 파괴할지 여부를 예측하여 문장을 문구로 분류합니다. 중단 지점 주변 문자, 유니 코드 블록 및 조합과 같은 기능을 사용하여 예측을합니다. JSON 파일로 인코딩 된 출력 머신 러닝 모델은 기능의 쌍과 그 중요성 점수를 저장합니다. Budoux 파서는 모델 파일을 사용하여 세그먼트기를 구성하고 입력 문장을 문구 목록으로 변환합니다.
대상 언어로 교육 데이터를 준비하여 모든 언어에 대한 고유 한 사용자 정의 모델을 구축 할 수 있습니다. 훈련 데이터 세트는 아래와 같이 분리기 기호 "v"(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 제품이 아닙니다.