เริ่มต้นใช้งาน
kham v0.5.0 — เลือกแพลตฟอร์มที่ต้องการและเริ่มใช้งานได้ภายในไม่กี่นาที
🦀
Rust
Native crate — zero-copy, no_std core
ติดตั้ง
[dependencies]
kham-core = "0.5" การใช้งาน
use kham_core::Tokenizer;
fn main() {
let tok = Tokenizer::new();
let tokens = tok.segment("กินข้าวกับปลา");
println!("{:?}", tokens);
// ["กิน", "ข้าว", "กับ", "ปลา"]
} 🐍
Python
PyO3 bindings — segment() และ segment_tokens()
ติดตั้ง
pip install kham การใช้งาน
import kham
words = kham.segment("กินข้าวกับปลา")
print(words)
# ['กิน', 'ข้าว', 'กับ', 'ปลา']
for tok in kham.segment_tokens("Hello กรุงเทพ 2024"):
print(tok.text, tok.kind, tok.char_start, tok.char_end) 🌐
WebAssembly / npm
ทำงานในเบราว์เซอร์และ Node.js — ไม่ต้องใช้เซิร์ฟเวอร์
ติดตั้ง
npm install kham-wasm การใช้งาน
import init, { segment, segment_tokens } from 'kham-wasm';
await init();
const words = segment("กินข้าวกับปลา");
console.log(words);
// ["กิน", "ข้าว", "กับ", "ปลา"] 💻
CLI
โปรแกรมตัดคำจาก command line
ติดตั้ง
cargo install kham-cli การใช้งาน
# ตัดคำภาษาไทย
kham "กินข้าวกับปลา"
# กิน|ข้าว|กับ|ปลา
# โหมด FTS
kham --fts "กินข้าวกับปลา"
# FTS + phonetic code
kham --fts --soundex lk82 "กินข้าวกับปลา" 🐘
PostgreSQL FTS
extension ค้นหาข้อความแบบ Full-Text สำหรับ PostgreSQL 14+
ติดตั้ง
cargo build -p kham-pg --release
make -C kham-pg install การใช้งาน
LOAD 'kham';
CREATE TEXT SEARCH CONFIGURATION kham_cfg (PARSER = kham);
ALTER TEXT SEARCH CONFIGURATION kham_cfg
ADD MAPPING FOR thai WITH simple;
UPDATE docs SET tsv = to_tsvector('kham_cfg', body);
SELECT id FROM docs WHERE tsv @@ to_tsquery('kham_cfg', 'ข้าว'); 🗃️
SQLite FTS5
Loadable tokenizer extension สำหรับ SQLite FTS5
ติดตั้ง
cargo build -p kham-sqlite --release
# macOS: brew install sqlite การใช้งาน
.load ./target/release/libkham_sqlite
CREATE VIRTUAL TABLE docs USING fts5(body, tokenize = 'kham');
INSERT INTO docs VALUES ('กินข้าวกับปลา');
SELECT * FROM docs WHERE docs MATCH 'ปลา';