Skip to main content

ThaiBreak — Fast Thai Word Segmenter & Typographic Line Breaker

CI License Packagist Version Go Reference npm version crates.io PyPI version

ระบบตัดคำและตัดแบ่งบรรทัดภาษาไทยประสิทธิภาพสูงแบบ Multi-Language Engine รองรับ PHP / Laravel, Go, TypeScript / Node.js, Rust Core, C / C++, Python, และ WebAssembly

ใช้อัลกอริทึม Shortest Path Viterbi DAG ร่วมกับ Theeramunkong 30-Rule Thai Character Cluster (TCC) บนพจนานุกรมมาตรฐานภาษาไทย (data/words.txt 25,907 คำ)

🚀 Zero External Corpus Dependency: ไม่พึ่งพาคลังข้อความที่มีข้อจำกัดทางลิขสิทธิ์ เป็น Open Source Apache-2.0 แท้ 100% ใช้งานเชิงพาณิชย์ได้อย่างสบายใจ
⚡ ความเร็วสูงระดับไมโครวินาที: ~30-45 µs ใน Go/Rust, ~0.3 ms ใน PHP/Node.js (~25,000 ประโยค/วินาทีต่อ core)
💾 Ultra-Lightweight & Low Memory: ใช้หน่วยความจำน้อยมากเพียง ~10-15 MB ขนาดพจนานุกรมเพียง ~500 KB
📄 Typographic Line Breaker & Soft Wrapping: ตัดแบ่งบรรทัดป้องกันสระลอย/ตกขอบ ตาม Unicode UAX #14 (Unicode 16.0) ครบทุกกฎ ผ่านชุดทดสอบทางการของ Unicode และ W3C tlreq สำหรับ PDF (dompdf, mPDF, TCPDF, Typst) และ Web
🔥 พร้อมใช้งานกับ Laravel: Auto-Discovery, Facade, Blade Directives (@thaibreak, @thaiwrap), Str Macros


คุณสมบัติเด่น

  1. Shortest Path Graph Viterbi Algorithm: อัลกอริทึมค้นหาเส้นทางคำที่เหมาะสมที่สุดบนกราฟ ค้นหาคำที่ยาวและถูกต้องสมบูรณ์ตามธรรมชาติ
  2. Theeramunkong et al. TCC Grammar (30 Rules): คำนวณจุดตัดคลัสเตอร์ภาษาไทยระดับไบต์ออฟเซ็ต ป้องกันการตัดแยกสระ สระบน-ล่าง วรรณยุกต์ หรือพยัญชนะนำ 100%
  3. Flat Prefix Hash Map Trie: โครงสร้างข้อมูลแบบ Flat Hash Map ค้นหาคำได้เร็วกว่า Nested Tree 2 เท่า พร้อมประหยัด RAM ลงกว่า 80%
  4. Smart OOV & Abbreviation Handling: รู้จักคำย่อภาษาไทย (รพ., พ.ศ., มิ.ย.), ตัวเลขคั่นจุลภาค (10,000), ทศนิยม (3.14), เปอร์เซ็นต์ (40%)
  5. ThaiLineBreaker (UAX #14 & W3C Thai Text Layout): ตัดแบ่งบรรทัดสำหรับทำ PDF หรือเว็บด้วย Unicode Line Breaking Algorithm ครบทุกกฎ (LB1–LB31) ใช้พจนานุกรมตัดคำเฉพาะภายในช่วงอักษรไทย ไม่ตัดกลางคำ ตัวเลข คำย่อ หรืออีเมล ไม่ทิ้งวรรคไว้หน้าบรรทัดใหม่ ป้องกันเครื่องหมายตกค้าง (ๆ, ฯ, วงเล็บ, อัญประกาศ)
  6. HTML / EPUB Safe: รักษาแท็ก HTML (<p>, <b>, <span>) และ HTML Entities (&amp;, &quot;) ให้คงอยู่สมบูรณ์ ไม่แทรกสัญลักษณ์ตัดคำเข้าไปภายในแท็ก

รองรับหลายภาษาโปรแกรม (Multi-Language Architecture)

ThaiBreak ได้รับการออกแบบสถาปัตยกรรมแบบ Monorepo เพื่อรองรับการใช้งานในทุก Stack โดยใช้คลังคำศัพท์มาตรฐาน (data/words.txt: 25,907 คำ) เป็น Single Source of Truth:

PHPThaiNLP / ThaiBreak
├── data/                 # Shared Dictionary (data/words.txt)
├── php/                  # Native PHP & Laravel Package (Composer: kamthorn/thai-break)
│   ├── src/              # PHP Source & Laravel Integration
│   ├── tests/            # PHPUnit & Integration Tests
│   └── examples/         # Demo Scripts
├── go/                   # Native Go Package (go get github.com/kamthorn/thai-break/go)
├── typescript/           # Native TypeScript / Node.js Package (npm: thai-break)
├── rust/                 # High-Performance Rust Core (Cargo: thaibreak)
│   ├── include/          # C / C++ Header (thaibreak.h)
│   └── src/              # Core Engine + C FFI + Python (PyO3) + Wasm (wasm-bindgen)
└── python/               # Python Package (pip: thaibreak)

1. PHP & Laravel

การติดตั้งผ่าน Composer

composer require kamthorn/thai-break

การใช้งานทั่วไป (One-liner Quick Start)

use ThaiBreak\ThaiBreak;

// 1. ตัดคำเป็น Array
$words = ThaiBreak::words('ฉันรักภาษาไทย');
// → ['ฉัน', 'รัก', 'ภาษา', 'ไทย']

// 2. ตัดคำคั่นด้วยเครื่องหมาย
$joined = ThaiBreak::join('สวัสดีครับคุณลูกค้า', '|');
// → "สวัสดี|ครับ|คุณ|ลูกค้า"

// 3. แทรกจุดตัดบรรทัด (Zero-Width Space U+200B) สำหรับ Render PDF/HTML
$lines = ThaiBreak::lines('ข้อความยาวๆ ที่ต้องการจัดหน้าใน PDF');

// 4. ตัดแบ่งบรรทัดสำหรับ HTML (รักษาแท็กและ entities)
$html = ThaiBreak::lines('<p>สวัสดี <b>ประเทศไทย</b> &amp; กรุงเทพมหานคร</p>', isHtml: true);

// 5. Hard Wrap ตัดข้อความขึ้นบรรทัดใหม่ตามความกว้างคอลัมน์ (Display Width)
$wrapped = ThaiBreak::wrap('ข้อความภาษาไทยขนาดยาว...', width: 40);

การใช้งานใน Laravel

ThaiBreak รองรับ Laravel Package Auto-Discovery อัตโนมัติ:

use ThaiBreak; // Facade

// เรียกผ่าน Facade
$words = ThaiBreak::words('ข้อความ');

// หรือเรียกผ่าน Str Macro
$words = Str::thaiWords('ฉันรักภาษาไทย');
$html  = Str::thaiLines('ข้อความในหน้าเว็บ');
$pdf   = Str::thaiWrap($text, 40);

ใน Blade Template:

{{-- แทรก Zero-Width Space เพื่อให้ Browser/PDF ตัดคำได้สวยงาม --}}
@thaibreak($post->content)

{{-- ตัดบรรทัดจำกัดความกว้าง 40 ตัวอักษร --}}
@thaiwrap($report->summary, 40)

2. Go (Golang) — Native Implementation

เขียนด้วย Pure Go 100% ไม่พึ่งพา CGO (CGO_ENABLED=0) ความเร็วสูง ~30-45 µs ต่อประโยค:

go get github.com/kamthorn/thai-break/go
package main

import (
    "fmt"
    tb "github.com/kamthorn/thai-break/go"
)

func main() {
    // ตัดคำ
    words := tb.Words("ฉันรักภาษาไทย")
    fmt.Println(words) // [ฉัน รัก ภาษา ไทย]

    // แทรกจุดตัดบรรทัด (Zero-Width Space U+200B)
    lines := tb.Lines("สวัสดีครับคุณลูกค้า", false)

    // ป้องกันแท็ก HTML และ Entity
    html := tb.Lines("<b>สวัสดี</b> &amp; ประเทศไทย", true)

    // ตัดบรรทัดตามความกว้างหน้าจอ (คำนวณสระ/วรรณยุกต์ไม่คิดความกว้าง)
    wrapped := tb.Wrap("ข้อความภาษาไทยยาวๆ...", 40)
    fmt.Println(wrapped)
}

3. TypeScript & JavaScript (Node.js / Browser) — Native Implementation

เขียนด้วย TypeScript (ES2022 / NodeNext) ทำงานได้ทั้ง Node.js, Bun, Deno และ Browser:

npm install thai-break
import { words, lines, wrap, displayWidth } from 'thai-break';

// ตัดคำ
const tokens = words('ฉันรักภาษาไทย');
console.log(tokens); // ['ฉัน', 'รัก', 'ภาษา', 'ไทย']

// ตัดบรรทัดสำหรับ HTML (รักษาแท็กและ entities ไม่เสียหาย)
const htmlWithZwsp = lines('<div class="header"><b>สวัสดี</b> &amp; ประเทศไทย</div>', true);

// ตัดบรรทัดจำกัดความกว้างคอลัมน์ (Display Width)
const wrapped = wrap('ฉันรักภาษาไทยมากที่สุดในโลก', 12);
console.log(wrapped);

// คำนวณความกว้างตัวอักษรจริง (สระบน-ล่าง/วรรณยุกต์ = 0, CJK = 2)
console.log(displayWidth('ภาษาไทย')); // 7

4. Rust Core Engine (thaibreak)

ประสิทธิภาพสูงสุดระดับ Native Machine Code ผ่าน Cargo:

[dependencies]
thaibreak = { path = "./rust" }
use thaibreak::{words, lines, wrap, display_width, DEFAULT_BREAK_MARKER};

fn main() {
    let tokens = words("ฉันรักภาษาไทย");
    println!("{:?}", tokens); // ["ฉัน", "รัก", "ภาษา", "ไทย"]

    let html = lines("<p>สวัสดีชาวโลก</p>", DEFAULT_BREAK_MARKER, true);
    println!("{}", html);

    let width = display_width("ภาษาไทย");
    println!("Width: {}", width); // 7
}

5. C & C++ (ผ่าน C-ABI Shared / Static Library)

เชื่อมต่อได้ทั้ง C, C++, Qt, หรือภาษาใดๆ ที่รองรับ C-ABI:

#include <stdio.h>
#include "thaibreak.h"

int main() {
    // โหลดพจนานุกรม
    thaibreak_init("data/words.txt", NULL);

    // ตัดคำ
    size_t count = 0;
    char **tokens = thaibreak_tokenize("ฉันรักภาษาไทย", &count);
    for (size_t i = 0; i < count; i++) {
        printf("[%zu] %s\n", i, tokens[i]);
    }
    thaibreak_free_tokens(tokens, count);

    // แทรกจุดตัดบรรทัดใน HTML
    char *broken = thaibreak_lines("<b>สวัสดี</b> ประเทศไทย", NULL, 1);
    printf("%s\n", broken);
    thaibreak_free_string(broken);

    return 0;
}

คอมไพล์ด้วย GCC / Clang:

gcc -I rust/include main.c -L rust/target/release -lthaibreak -o app

6. Python (ผ่าน C-FFI / PyO3)

pip install ./python
import thaibreak

# เริ่มต้นด้วยพจนานุกรม
thaibreak.init("data/words.txt")

# ตัดคำ
tokens = thaibreak.words("ฉันรักภาษาไทย")
print(tokens) # ['ฉัน', 'รัก', 'ภาษา', 'ไทย']

# แทรกจุดตัดบรรทัดสำหรับ HTML
html = thaibreak.lines("<b>สวัสดี</b> &amp; ประเทศไทย", is_html=True)

# ตัดบรรทัดตามความกว้าง
wrapped = thaibreak.wrap("ฉันรักภาษาไทยมากที่สุดในโลก", width=12)
print(wrapped)

7. WebAssembly (Wasm)

คอมไพล์เป็น Wasm สำหรับ Edge/Cloudflare Workers หรือเบราว์เซอร์:

cd rust && wasm-pack build --target web --features wasm
import init, { WasmThaiBreak } from './pkg/thaibreak.js';

await init();
const tb = new WasmThaiBreak(dictTextString);
console.log(tb.words("ฉันรักภาษาไทย"));

กฎเกณฑ์สำคัญของการตัดบรรทัด (ThaiLineBreaker)

ปัญหาคลาสสิกของการ Render PDF และ EPUB ภาษาไทยคือโปรแกรมตัดคำไทยไม่เป็น ทำให้ข้อความล้นตกขอบ หรือตัดคำแยกกลางสระ/กลางพยางค์

ThaiBreak ใช้ Unicode Line Breaking Algorithm (UAX #14) ของ Unicode 16.0 ครบทุกกฎ (LB1–LB31) โดยอ่านคลาส Line_Break ของทุกอักขระจากฐานข้อมูล Unicode (UCD) และตรวจกับชุดทดสอบทางการ LineBreakTest.txt ผ่านครบทั้ง 16,672 กรณีในทั้ง 4 ภาษา (PHP, Go, Rust, TypeScript; Python ใช้ Rust):

  1. พจนานุกรมเฉพาะในช่วงอักษรไทย (SA, LB1): UAX #14 กำหนดให้ตัดภายในช่วงอักษรไทยด้วยพจนานุกรม ThaiBreak ใช้ผลตัดคำเป็นจุดตัดบรรทัดเฉพาะระหว่างอักษรไทยกับอักษรไทย เมื่ออักษรไทยอยู่ติดกับอักขระอื่นจะถือเป็นตัวอักษร (AL) จึงไม่ตัด ราคา100บาท, ปี๒๕๖๗นะ, ภาษาPHPเป็น, ไทย(สยาม)เป็น, «ไทย»ไทย
  2. ส่วนขยายเฉพาะภาษาไทย (Tailoring): ไม้ยมก (ๆ) และไปยาลน้อย (ฯ, รวมถึง ฯลฯ) ไม่ขึ้นต้นบรรทัดใหม่ แม้มีวรรคคั่นอยู่ข้างหน้า (เด็ก ๆ) ตาม W3C tlreq เป็นกฎเดียวที่เพิ่มเติมจาก UAX #14
  3. ห้ามขึ้นต้นบรรทัด: เครื่องหมายปิดและวรรคตอน (), ], }, 、, 。, !, ?, ,, ., :, ;, /; LB13, LB15d) ยัติภังค์และขีด (-, –, ๚, ๛; LB21)
  4. ห้ามลงท้ายบรรทัด: วงเล็บเปิดแม้มีวรรคตามหลัง (( ไทย ); LB14) อัญประกาศเปิด (LB15a, LB19) และสัญลักษณ์นำหน้า เช่น ฿, $ เมื่อตามด้วยตัวเลขหรือตัวอักษร (LB24, LB25)
  5. ไม่ตัดกลางตัวเลข คำย่อ อีเมล: 1/2/2567, 10:30, 10-20, -5, 40%, พ.ศ.2567, รพ.ศิริราช, e.g., user@example.com (LB23, LB25, LB28, LB29)
  6. จุดตัดภายในคำที่ไม่ใช่ภาษาไทย: ตัดหลังยัติภังค์หรือทับใน URL ได้ตามมาตรฐาน เช่น state-|of-|the-|art, https://|example.com/|a-|b
  7. ป้องกัน Orphan Spaces: ช่องว่าง ( ) เป็นจุดตัดบรรทัดอยู่แล้ว จึงไม่ใส่ break marker ติดกับช่องว่าง ป้องกันไม่ให้เกิดวรรคนำหน้าในบรรทัดใหม่
  8. คงความถูกต้องของ HTML/EPUB: แท็ก HTML (<p>, <b>, <span>), บล็อกสคริปต์/สไตล์ (<script>, <style>, <!-- คอมเมนต์ -->) และ HTML Entities (&amp;, &quot;) จะถูกรักษาไว้อย่างสมบูรณ์ ตรวจว่าเป็น HTML เฉพาะเมื่อพบแท็กจริง (< ตามด้วยตัวอักษร / ! หรือ ?) ข้อความอย่าง x < 5 และ y > 3 จึงไม่ถูกมองเป็นแท็ก (ข้อจำกัด: ข้อความแต่ละช่วงระหว่างแท็กประมวลผลแยกกัน จึงไม่มีจุดตัดตรงรอยต่อแท็ก)
  9. wrap() ใช้จุดตัดชุดเดียวกัน: ตัดบรรทัดเฉพาะจุดที่ insertLineBreaks() อนุญาตหรือหลังช่องว่าง และเมื่อเปิด cutLongWords จะตัดคำที่ยาวเกินบรรทัดตามขอบเขต Thai Character Cluster (TCC) ไม่แยกสระหน้าหรือวรรณยุกต์ออกจากพยัญชนะ
  10. คำนวณความกว้างคอลัมน์ถูกต้อง: สระบน-ล่าง วรรณยุกต์ ไม่นับความกว้างคอลัมน์ (thaiDisplayWidth) ทำให้ตัดบรรทัดได้พอดีความกว้างจริง

ตาราง Line_Break สร้างจาก UCD ด้วย php tools/generate-linebreak-data.php <UNICODE_VERSION> ซึ่งเขียนไฟล์ตารางของทั้ง 4 ภาษาพร้อมกัน


ผลการประเมินความแม่นยำและประสิทธิภาพ (Accuracy & Performance Benchmarks)

ThaiBreak ได้รับการออกแบบให้มีความสมดุลสูงสุดระหว่าง ความแม่นยำทางภาษาศาสตร์ (Linguistic Accuracy), ความเร็วระดับไมโครวินาที (High Throughput), และ ความปลอดภัยทางลิขสิทธิ์ (Commercial Clean Data)

1. ความแม่นยำในการตัดคำ (Accuracy Benchmark)

วัดด้วย scripts/benchmark.py ของ thai-break-dict-extra โดยใช้พจนานุกรมเริ่มต้น data/words.txt (25,907 คำ) เพียงอย่างเดียว เทียบกับคำตอบที่ตัดคำไว้แล้ว (Gold Standard):

ชุดทดสอบ Word F1 Boundary F1
LST20 test (NECTEC, ข่าว) 85.2% 92.6%
LST20 eval 81.6% 90.0%
Blackboard Treebank (ระดับคำย่อย, ไม่รวมประโยคที่ซ้ำกับ LST20 train) 85.1% 93.1%
Wisesight-1000 (โซเชียลมีเดีย, CC0) 83.0% 90.3%
  • Word F1: นับคำที่ตำแหน่งต้นและท้ายตรงกับคำตอบ Boundary F1: เทียบตำแหน่งจุดตัดระหว่างคำ ข้อความแบ่งเป็นท่อนที่ช่องว่างและขอบเขตประโยค และไม่นับช่องว่าง
  • คำที่ตัดผิดส่วนใหญ่ไม่มีในพจนานุกรม: บน LST20 eval ประมาณสองในสามของคำที่ตัดผิด เช่นคำประสมภาษาข่าวตามแนวทางของ LST20 (มีการ, วันที่, ดังกล่าว) การเพิ่มคำด้วย addCustomWords() หรือพจนานุกรมเสริมจึงมีผลมากที่สุด พจนานุกรมแบบ TSV ที่มีน้ำหนักความถี่ของคำจะถูกใช้เป็นความน่าจะเป็นของคำ (unigram) โดยตรง
  • คลังข้อมูลไม่ได้รวมอยู่ในโปรเจกต์: LST20 ต้องขอจาก NECTEC และใช้ได้ตามข้อตกลงการใช้งาน (งานวิจัย ไม่ใช่เชิงพาณิชย์ และโอเพนซอร์ส ห้ามแจกจ่ายต่อ) Blackboard Treebank มาจากแหล่งข่าวเดียวกัน ส่วน Wisesight-1000 มาจาก PyThaiNLP/wisesight-sentiment
# ในโฟลเดอร์ thai-break-dict-extra ที่อยู่ข้าง PHPThaiNLP
python3 scripts/benchmark.py --corpus lst20 --corpus-dir ../LST20_Corpus/test \
    --dict ../PHPThaiNLP/data/words.txt --segmenter-cmd "php ../PHPThaiNLP/tools/segment.php {dict}"

2. ประสิทธิภาพและการใช้ทรัพยากร (Performance & Resource Benchmarks)

ทดสอบการประมวลผลจริงบน PHP 8.4 (Native In-Memory) ด้วยการรันข้อความซ้ำ 1,000 รอบ:

ก. การใช้หน่วยความจำและเวลาเตรียมระบบ (Footprint & Startup)

  • เวลาในการโหลดพจนานุกรม (data/words.txt 25,907 คำ): ~21.6 ms (เสร็จสิ้นก่อนเริ่มรับ Request)
  • หน่วยความจำ RAM ที่ใช้จัดเก็บ Trie โครงสร้างคำ: ~7.0 MB เท่านั้น (เบามาก ไม่เปลืองทรัพยากรเซิร์ฟเวอร์)
  • การติดตั้งเสริม: ไม่ต้องใช้ APCu หรือ C-Extension เสริมใดๆ ทำงานบน Pure PHP ได้ทันที

ข. ความเร็วในการตัดคำและตัดบรรทัด (Throughput & Latency)

ขนาดข้อความทดสอบ ความยาว คำที่ได้ เวลาประมวลผล (Latency) ความเร็ว (Throughput)
ประโยคสั้น (ข้อความแชท/ค้นหา) 16 ตัวอักษร 5 คำ 0.011 ms (11 ไมโครวินาที) ~1,440,000 chars/s
ประโยคทั่วไป (ข้อความเอกสาร/ข่าว) 67 ตัวอักษร 15 คำ 0.044 ms (44 ไมโครวินาที) ~1,530,000 chars/s
ย่อหน้ายาว (บทความ 1 พารากราฟ) 351 ตัวอักษร 78 คำ 0.213 ms (0.2 มิลลิวินาที) ~1,650,000 chars/s
บทความเต็มหน้า (ข้อความขนาดยาว) 3,520 ตัวอักษร 780 คำ 2.630 ms (2.6 มิลลิวินาที) ~1,340,000 chars/s
HTML Typographic Line Breaking (แทรก ZWSP ตาม UAX #14) 210 ตัวอักษร - 0.170 ms ~1,240,000 chars/s

การรันชุดทดสอบ (Tests Across All Languages)

# 1. PHP & Laravel Tests (รวม Unicode LineBreakTest conformance จาก testdata/)
./vendor/bin/phpunit
php php/tests/TokenizerTest.php

# 2. Go Tests & Benchmarks
cd go && go test -v ./... && go test -bench=. ./...

# 3. TypeScript / Node.js Tests
cd typescript && npm run build && npm test

# 4. Rust Core Tests & Build
cd rust && cargo test && cargo build --release

# 5. Python Tests
cd python && python3 -m unittest tests/test_thaibreak.py

การจัดทำโค้ดและการเปิดเผยบทบาทของ AI (AI Disclosure & Attribution)

โครงการ ThaiBreak ได้รับการพัฒนา วางสถาปัตยกรรม และกำกับดูแลทิศทางโดยมนุษย์ (Kamthorn Krairaksa) โดยมีการใช้เทคโนโลยีปัญญาประดิษฐ์ (Generative AI) ในรูปแบบ Pair Programming & Multi-Agent Engineering ร่วมจัดทำโค้ดอย่างโปร่งใส ดังนี้:

  • Claude Sonnet 4.6 (Anthropic): ร่วมออกแบบโครงสร้างอัลกอริทึมหลัก (Thai Character Cluster: TCC, DAG Word Graph, Viterbi Forward/Backward Dynamic Programming, W3C/Unicode Typographic Line Breaking Rules) และการพัฒนาโค้ด Native ในภาษา PHP, Go, TypeScript รวมถึง Rust Core Engine
  • Gemini 3.8 Flash (Google DeepMind): ร่วมวิเคราะห์ประสิทธิภาพ (Performance Optimization), การตรวจสอบความถูกต้องข้ามภาษา (Cross-language Verification), การจัดทำชุดทดสอบรอบด้าน (Test Suites across all 5+ languages), การตรวจสอบความปลอดภัยและการจัดการหน่วยความจำ (Memory Safety & C-FFI Hardening) และการคัดกรองฐานข้อมูลพจนานุกรมให้เป็น Public Domain 100%

โค้ดทุกโมดูลได้รับการออกแบบ ตรวจทาน ปรับแก้สถาปัตยกรรม และผ่านการทดสอบอัตโนมัติ (Automated Unit & Integration Tests) ครบถ้วนทุกภาษา ทั้ง PHP, Go, TypeScript, Rust, C/C++ และ Python เพื่อความมั่นใจในคุณภาพ ความปลอดภัย และความถูกต้องตามหลักภาษาศาสตร์


เอกสารอ้างอิง

  • Royal Institute Dictionary: พจนานุกรมฉบับราชบัณฑิตยสถาน (Public Domain Standard Thai Wordlist)
  • Thai Character Cluster (TCC): Theeramunkong et al., Multi-segmentation for Thai word extraction, 2000
  • Unicode Line Breaking Algorithm: Unicode Standard Annex #14 (UAX #14)
  • W3C Requirements for Thai Text Layout: W3C Working Group Note (tlreq)
  • License: Apache-2.0

Release files for thaibreak 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for thaibreak 1.0.3
File Size Uploaded
thaibreak-1.0.3.tar.gz 21.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for thaibreak 1.0.3
File Interpreter ABI Platform
thaibreak-1.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 33.6 kB

Release files / thaibreak-1.0.3.tar.gz

Download URL thaibreak-1.0.3.tar.gz
Size 21.6 kB
Tags Source
SHA-256 checksum
How to use checksums
da75f2098661da26c6c65cf193850a04b656697023d2ea04873c8c0edad1a548
BLAKE2b-256 checksum
How to use checksums
7eebfcfed6b445b8956ea5d580b307e1d24fe39f4bd0c83feb2e7b7a32dbc24f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release files / thaibreak-1.0.3-py3-none-any.whl

Download URL thaibreak-1.0.3-py3-none-any.whl
Size 12.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f749868413b1538ba729b5b9c8795887cb684e23cf1f2c7c23acf5bca893474c
BLAKE2b-256 checksum
How to use checksums
eb5cdf2da1b252b4fdfb605bb8fc1202fbf4d9907615bfeeca6ed8b327c5d7b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page