Skip to main content

เริ่มต้นใช้งาน

kham v0.8.2 — เลือกแพลตฟอร์มที่ต้องการและเริ่มใช้งานได้ภายในไม่กี่นาที

📦

มีไฟล์ binary สำเร็จรูปให้ดาวน์โหลด

ดาวน์โหลด binary พร้อมใช้ได้จาก หน้า GitHub Releases — ไม่ต้องติดตั้ง Rust toolchain

แพ็กเกจ แพลตฟอร์ม ไฟล์
kham-cli macOS arm64 / x86_64 · Linux x86_64 · Windows x86_64 kham-cli-<version>-<target>.tar.gz / .zip
kham-sqlite macOS · Linux · Windows · Android (arm64-v8a, armeabi-v7a, x86_64, x86) libkham_sqlite.dylib / .so / .dll
kham-pg Linux x86_64 & aarch64 · PostgreSQL 14–18 kham-pg-<version>-pg<N>-<arch>-unknown-linux-gnu.tar.gz
kham-pg Docker linux/amd64 & arm64 · PostgreSQL 14–18 nickmsft/kham-pg:<version>-pg<N>
🦀

Rust

Native crate — zero-copy, no_std core

ติดตั้ง

[dependencies]
kham-core = "0.8"

การใช้งาน

use kham_core::Tokenizer;

fn main() {
    let tok = Tokenizer::new();

    // ตัดคำเป็น &str slice (zero-copy)
    let tokens = tok.segment("กินข้าวกับปลา");
    println!("{:?}", tokens);
    // ["กิน", "ข้าว", "กับ", "ปลา"]

    // Token รายละเอียด พร้อม kind + byte/char span
    for t in tok.segment("Hello กรุงเทพ 2024") {
        println!("{:?}  kind={:?}  chars={}..{}", t.text, t.kind, t.char_span.start, t.char_span.end);
    }
}
คู่มือการใช้งานแบบเต็ม →
🐍

Python

PyO3 bindings — segment() และ segment_tokens()

ติดตั้ง

pip install kham

การใช้งาน

import kham

# ตัดคำเป็น list ของ string
words = kham.segment("กินข้าวกับปลา")
print(words)
# ['กิน', 'ข้าว', 'กับ', 'ปลา']

# Token object รายละเอียด
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';

// เรียกครั้งเดียวตอน load (ดาวน์โหลด .wasm)
await init();

const words = segment("กินข้าวกับปลา");
console.log(words);
// ["กิน", "ข้าว", "กับ", "ปลา"]

const tokens = segment_tokens("Hello กรุงเทพ 2024");
tokens.forEach(t => console.log(t.text, t.kind, t.char_start, t.char_end));
คู่มือการใช้งานแบบเต็ม →
💻

CLI

โปรแกรมตัดคำ ตรวจสอบการสะกด ดึงคำสำคัญ และแปลงเป็น RTGS จาก command line

ติดตั้ง

cargo install kham-cli

การใช้งาน

# ตัดคำภาษาไทย
kham "กินข้าวกับปลา"
# กิน|ข้าว|กับ|ปลา

# แสดง kind และ confidence score
kham --kind --confidence "กินข้าวกับปลา"
# กิน:Thai:conf=0.92|ข้าว:Thai:conf=0.98|…

# โหมด FTS — kind, POS, NE, stop, syn ต่อ token
kham --fts "กินข้าวกับปลา"

# ตรวจสอบการสะกด
kham --spell "กีนข้าว"

# ดึงคำสำคัญ
kham --keywords "นักวิทยาศาสตร์ค้นพบดาวเคราะห์ใหม่"

# แปลงเป็น RTGS
kham --romanize "กินข้าวกับปลา"
# kin khao kap pla
คู่มือการใช้งานแบบเต็ม →
🐘

PostgreSQL FTS

extension ค้นหาข้อความแบบ Full-Text สำหรับ PostgreSQL 14+

ติดตั้ง

# Build และติดตั้ง (ต้องมี pg_config ใน PATH)
cargo build -p kham-pg --release
make -C kham-pg install

การใช้งาน

-- โหลด extension
LOAD 'kham';

-- สร้าง text search configuration
CREATE TEXT SEARCH CONFIGURATION kham_cfg (PARSER = kham);
ALTER TEXT SEARCH CONFIGURATION kham_cfg
  ADD MAPPING FOR thai WITH simple;

-- Index และค้นหา
CREATE TABLE docs (id SERIAL, body TEXT, tsv TSVECTOR);
UPDATE docs SET tsv = to_tsvector('kham_cfg', body);
CREATE INDEX docs_tsv ON docs USING GIN(tsv);

SELECT id, ts_headline('kham_cfg', body, query) AS snippet
FROM docs, to_tsquery('kham_cfg', 'ข้าว') query
WHERE tsv @@ query;
คู่มือการใช้งานแบบเต็ม →
🗃️

SQLite FTS5

Loadable tokenizer extension สำหรับ SQLite FTS5

ติดตั้ง

# Build (ต้องมี SQLite headers)
cargo build -p kham-sqlite --release
# macOS: brew install sqlite  (system sqlite3 ปิด load_extension)

การใช้งาน

.load ./target/release/libkham_sqlite

CREATE VIRTUAL TABLE docs USING fts5(
  body,
  tokenize = 'kham'
);

INSERT INTO docs VALUES ('กินข้าวกับปลา');
INSERT INTO docs VALUES ('กรุงเทพมหานครเป็นเมืองหลวง');

SELECT * FROM docs WHERE docs MATCH 'ปลา';
คู่มือการใช้งานแบบเต็ม →