สแตนด์อโลน เล็ก. ภาษาที่เป็นกลาง
Budoux เป็นผู้สืบทอดของ Budou ซึ่งเป็นเครื่องมือการจัดระเบียบสายไฟการเรียนรู้ด้วยเครื่อง
มันเป็น แบบสแตนด์อโลน มันทำงานโดยไม่ต้องพึ่งพาผู้แบ่งส่วนคำบุคคลที่สามเช่น Google Cloud Natural Language API
มัน เล็ก ใช้เวลาเพียงประมาณ 15 KB รวมถึงรูปแบบการเรียนรู้ของเครื่อง มันสมเหตุสมผลที่จะใช้มันแม้ในฝั่งไคลเอ็นต์
มันเป็น ภาษาที่เป็นกลาง คุณสามารถฝึกอบรมแบบจำลองสำหรับภาษาใด ๆ โดยป้อนชุดข้อมูลไปยังสคริปต์การฝึกอบรมของ Budoux
สุดท้าย แต่ไม่ท้ายสุด Budoux รองรับอินพุต HTML
https://google.github.io/budoux
เกาหลีใช้ช่องว่างระหว่างคำศัพท์ดังนั้นคุณสามารถป้องกันไม่ให้คำแยกต่างหากข้ามเส้นโดยการใช้ word-break: keep-all ในวรรคซึ่งควรมีประสิทธิภาพมากกว่าการติดตั้ง Budoux ที่กล่าวว่าเรายินดีที่จะสำรวจการสนับสนุนภาษาเกาหลีโดยเฉพาะหากโซลูชันข้างต้นพิสูจน์ได้ว่าไม่เพียงพอ
$ pip install budouxคุณสามารถรับรายการวลีได้โดยให้อาหารประโยคกับตัวแยกวิเคราะห์ วิธีที่ง่ายที่สุดคือการรับ parser คือการโหลดตัวแยกวิเคราะห์เริ่มต้นสำหรับแต่ละภาษา
ญี่ปุ่น:
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 ได้รับการเสนอให้เป็นวิธีแก้ปัญหานี้ในปี 2559 มันจะแปลประโยค CJK โดยอัตโนมัติเป็น HTML ด้วยวลีคำศัพท์ที่ห่อหุ้มด้วยมาร์กอัปที่ไม่ทำลาย Budou ได้แก้ไขปัญหานี้ในระดับหนึ่ง แต่ก็ยังมีปัญหาบางอย่างที่รวมเข้ากับเวิร์กโฟลว์การผลิตเว็บที่ทันสมัย
อุปสรรคที่ใหญ่ที่สุดในการใช้ Budou ไปยังเว็บไซต์คือการพึ่งพาผู้แบ่งส่วนคำของบุคคลที่สาม โดยปกติแล้ว Word Segmenter เป็นโปรแกรมขนาดใหญ่ที่ไม่สามารถดาวน์โหลดได้สำหรับการร้องขอทุกหน้าเว็บ นอกจากนี้ยังเป็นตัวเลือกที่ไม่พึงประสงค์ในการขอบริการแบ่งส่วนคำบนคลาวด์สำหรับทุกประโยคโดยพิจารณาจากความเร็วและค่าใช้จ่าย นั่นเป็นเหตุผลที่เราต้องใช้เครื่องมือตัวจัดระเบียบแบบแยกสายแบบสแตนด์อโลนพร้อมกับเอ็นจิ้นการแบ่งส่วนของตัวเองเล็กพอที่จะรวมอยู่ในรหัส JavaScript ฝั่งไคลเอ็นต์
Budou X เป็นผู้สืบทอดของ Budou ที่ออกแบบมาเพื่อรวมเข้ากับเว็บไซต์ของคุณโดยไม่ต้องยุ่งยาก
Budoux ใช้อัลกอริทึม Adaboost เพื่อแบ่งส่วนประโยคเป็นวลีโดยพิจารณาจากงานเป็นปัญหาการจำแนกประเภทไบนารีเพื่อทำนายว่าจะทำลายหรือไม่ระหว่างตัวละครทั้งหมด มันใช้คุณสมบัติเช่นตัวละครรอบจุดพักบล็อก Unicode ของพวกเขาและการรวมกันของพวกเขาเพื่อทำการทำนาย รูปแบบการเรียนรู้ของเครื่องส่งออกซึ่งเข้ารหัสเป็นไฟล์ JSON เก็บคู่ของคุณสมบัติและคะแนนความสำคัญ ตัวแยกวิเคราะห์ Budoux ใช้ไฟล์โมเดลเพื่อสร้าง segmenter และแปลประโยคอินพุตลงในรายการวลี
คุณสามารถสร้างแบบจำลองที่กำหนดเองของคุณเองสำหรับภาษาใด ๆ โดยการเตรียมข้อมูลการฝึกอบรมในภาษาเป้าหมาย ชุดข้อมูลการฝึกอบรมเป็นไฟล์ข้อความขนาดใหญ่ที่ประกอบด้วยประโยคคั่นด้วยวลีที่มีสัญลักษณ์ตัวคั่น "" (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 Corpus คุณสามารถสร้างชุดข้อมูลการฝึกอบรมซึ่งเราตั้งชื่อ 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 ที่ได้รับการสนับสนุนอย่างเป็นทางการ