Chuẩn hoá teencode API
Chuẩn hoá teencode, chữ viết tắt khi chat (ko, dc, j, z, ntn, iu…), chữ lặp và lỗi Telex sót, giữ nguyên chữ hoa. Trả danh sách thay đổi.
Gửi văn bản tiếng Việt kiểu chat ("ko dc j ạ, shop ơiiii, sp nàyyy bn z"), API trả về tiếng Việt chuẩn ("không được gì ạ, shop ơi, sản phẩm này bao nhiêu vậy") kèm danh sách từng chỗ thay đổi và vị trí. Bộ từ điển biên soạn sẵn khoảng 270 từ viết tắt thường gặp khi chat và mua bán (ko / k / hok → không, dc / đc → được, j → gì, z / dz → vậy, ntn → như thế nào, iu → yêu, sp → sản phẩm, sđt → số điện thoại, ck → chuyển khoản…). Từ ngắn dễ nhầm chỉ được thay khi ngữ cảnh rõ: "k" sau con số được giữ nguyên (50 k), "bn" thành "bao nhiêu" khi đứng trước tiền / tuổi hoặc cuối câu hỏi, còn lại là "bạn", "ck" là "chuyển khoản" khi đi với rồi / trước / stk và "chồng" khi đi với vk.
Chữ lặp từ ba lần trở lên được rút gọn (ơiiii → ơi), chữ cuối lặp đôi chỉ được rút khi kết quả là âm tiết có thật, và lỗi Telex sót "dd" thành "đ" (ddi → đi). Giữ nguyên kiểu chữ (KO → KHÔNG, Ko → Không). Emoji có thể giữ, xoá hoặc đổi thành nhãn ([cười], [đồng ý]). Thêm từ viết tắt riêng bằng dictionary; xử lý hàng loạt tới 200 đoạn bằng texts.
Phù hợp làm bước tiền xử lý trước khi tìm kiếm, phân loại, lọc từ tục hoặc tách đơn hàng. API không tự thêm dấu: với văn bản gõ không dấu, dùng thêm /v1/vn-diacritics.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
text | query|body | string | có | Văn bản (tối đa 20.000 ký tự). Hoặc texts: mảng tối đa 200 đoạn. | |
emoji | query|body | string | không | keep | keep (giữ), label ([cười], [đồng ý]…) hoặc remove (xoá). |
dictionary | body | object | không | Từ viết tắt riêng {"viết tắt": "thay bằng"} (tối đa 500), được ưu tiên. | |
squeeze | query|body | boolean | không | true | Rút gọn chữ lặp (ơiiii → ơi). |
telex | query|body | boolean | không | true | Sửa lỗi Telex sót dd → đ ở đầu từ. |
Ví dụ
curl "https://apibox.io.vn/v1/vn-teencode?text=ko%20dc%20j%20%E1%BA%A1%2C%20shop%20%C6%A1iiii%2C%20sp%20n%C3%A0yyy%20bn%20z" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/vn-teencode?text=ko%20dc%20j%20%E1%BA%A1%2C%20shop%20%C6%A1iiii%2C%20sp%20n%C3%A0yyy%20bn%20z', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/vn-teencode?text=ko%20dc%20j%20%E1%BA%A1%2C%20shop%20%C6%A1iiii%2C%20sp%20n%C3%A0yyy%20bn%20z",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-teencode?text=ko%20dc%20j%20%E1%BA%A1%2C%20shop%20%C6%A1iiii%2C%20sp%20n%C3%A0yyy%20bn%20z');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"input": "ko dc j ạ, shop ơiiii, sp nàyyy bn z",
"text": "không được gì ạ, shop ơi, sản phẩm này bao nhiêu vậy",
"changes": [
{
"from": "ko",
"to": "không",
"start": 0,
"end": 2,
"rule": "abbreviation"
},
{
"from": "dc",
"to": "được",
"start": 3,
"end": 5,
"rule": "abbreviation"
},
{
"from": "j",
"to": "gì",
"start": 6,
"end": 7,
"rule": "abbreviation"
},
{
"from": "ơiiii",
"to": "ơi",
"start": 16,
"end": 21,
"rule": "repeated letters"
},
{
"from": "sp",
"to": "sản phẩm",
"start": 23,
"end": 25,
"rule": "abbreviation (context)"
},
{
"from": "nàyyy",
"to": "này",
"start": 26,
"end": 31,
"rule": "repeated letters"
},
{
"from": "bn",
"to": "bao nhiêu",
"start": 32,
"end": 34,
"rule": "abbreviation (context)"
},
{
"from": "z",
"to": "vậy",
"start": 35,
"end": 36,
"rule": "abbreviation"
}
],
"count": 8,
"emojis": 0,
"dictionary_size": 273,
"note": "Rule-based: ambiguous short forms (k, v, bn, ck, s, h…) are replaced only in clear contexts. Add diacritics with /v1/vn-diacritics if the text has none."
}
Ứng dụng
- Tiền xử lý bình luận trước khi phân tích cảm xúc, kiểm duyệt
- Chuẩn hoá tin nhắn đầu vào của chatbot trước khi nhận ý định
- Làm sạch bình luận livestream trước khi tách đơn
- Tăng chất lượng tìm kiếm trên đánh giá sản phẩm viết tắt
Hỏi đáp
Từ dễ nhầm có bị thay sai không?
Các từ ngắn như k, v, bn, ck, s, h chỉ được thay khi các từ xung quanh làm rõ nghĩa; nếu không, chúng được giữ nguyên để kết quả an toàn.
Có thêm được từ viết tắt riêng không?
Có: gửi "dictionary": {"viết tắt": "thay bằng"} (tối đa 500 mục). Từ điển riêng được ưu tiên hơn danh sách sẵn có.
API có thêm dấu cho chữ không dấu không?
Không, API chỉ mở rộng chữ viết tắt và sửa chữ lặp. Dùng /v1/vn-diacritics để khôi phục dấu.
API liên quan
So sánh văn bản
So sánh hai đoạn văn bản theo dòng, từ, ký tự, câu hoặc JSON; nhận danh sách thay đổi, tỉ lệ giống nhau và bản diff dạng unified.
a-bTạo slug
Chuyển tiêu đề thành slug URL gọn gàng: bỏ dấu tiếng Việt (cả chữ đ), tuỳ chọn ký tự phân cách, giữ chữ hoa và giới hạn độ dài.
123Thống kê văn bản
Đếm số từ, ký tự, câu, đoạn và dòng; ước tính thời gian đọc và thời gian nói; liệt kê các từ xuất hiện nhiều nhất trong văn bản.