Skip to content

Trích xuất thực thể ​

Tìm và phân loại các tên thực thể trong đoạn văn tiếng Việt — người, tổ chức, nơi chốn, ngày, tiền tệ, điều luật, CMND/CCCD, số điện thoại VN. Trang này tập trung vào giao diện trích xuất; xem nlp.md cho thư viện đầy đủ (NER + cảm xúc + nhận diện ngôn ngữ).

TL;DR — gợi ý của chúng tôi ​

Hai bộ thực thể, chọn theo nhu cầu:

BộBao gồmKhi nào chọn
Chuẩn (mặc định)PER, ORG, LOC, DATE, MONEYHồ sơ doanh nghiệp, tin tức, hồ sơ y tế
Pháp lýChuẩn + LAW_REF, ID_VN, PHONE_VNHợp đồng, công văn, đơn từ pháp lý

Backend mặc định: regex (nhanh, deterministic, không cần model). Cần độ chính xác cao hơn, đổi sang HF model qua plugin doanh nghiệp.

Trạng thái thật (2026-05-03): v0 mới chỉ ship phần biểu thức chính quy. Bộ kiểm thử xác minh đúng các mẫu do chính chúng tôi viết — đây là kiểm tra cấu trúc, không phải số đo học từ dữ liệu. Hướng tinh chỉnh PhoBERT cho LAW_REF + CONTRACT_PARTY (mục tiêu F1 ≥ 0,85) cần ~70-90 giờ chú thích thủ công và xếp lịch sau theo docs/sota_vn_2026q2_expansion.md. Đến lúc đó, biểu thức chính quy bắt được hầu hết hợp đồng VN hiện đại nhưng sẽ bỏ sót các mẫu không chuẩn.

Cách dùng ​

Trong giao diện web ​

Mở Trích xuất thực thể ở thanh điều hướng bên trái. Dán đoạn văn hoặc bấm một trong các nút mẫu (HOÁ ĐƠN, HỢP ĐỒNG PHÁP LÝ, HỢP ĐỒNG + LUẬT SỐ). Chọn Bộ thực thể ở cột phải:

  • Chuẩn — PER / ORG / LOC / DATE / MONEY.
  • Pháp lý — Chuẩn cộng LAW_REF (luật, điều, khoản), ID_VN (CMND / CCCD), và PHONE_VN.

Bấm Trích.

Kết quả hiển thị mỗi span tô màu theo loại, kèm vị trí ký tự (start, end) và độ tin cậy.

Gọi trực tiếp qua API HTTP ​

bash
curl -X POST http://localhost:8080/api/tools/nlp/ner \
  -H "Content-Type: application/json" \
  -d '{
        "text": "Theo Nghị định 13/2023/NĐ-CP, ông Nguyễn Văn A (CMND 012345678901) chuyển 1.500.000 VND ngày 02/05/2026.",
        "preset": "legal"
      }'

Trả về:

json
{
  "spans": [
    {"label": "LAW_REF", "text": "Nghị định 13/2023/NĐ-CP", "start": 5, "end": 28},
    {"label": "PER",     "text": "Nguyễn Văn A",            "start": 33, "end": 45},
    {"label": "ID_VN",   "text": "012345678901",            "start": 52, "end": 64},
    {"label": "MONEY",   "text": "1.500.000 VND",           "start": 75, "end": 88},
    {"label": "DATE",    "text": "02/05/2026",              "start": 95, "end": 105}
  ]
}

Bộ pháp lý — chi tiết ​

Ba lớp thực thể bổ sung được thêm vì thực tế hợp đồng VN cần chúng:

LAW_REF ​

Phát hiện tham chiếu pháp luật theo mẫu: <Loại> <số>/<năm>/<cơ quan>.

MẫuBắt đượcBỏ qua
Luật 134/2025/QH15✓
Nghị định 13/2023/NĐ-CP✓
Thông tư 02/2024/TT-BTTTT✓
Điều 8 Luật 134/2025✓ (gộp một LAW_REF)
Điều 8 (không có số luật)✗ — bỏ qua, ngữ cảnh không đủ

ID_VN ​

CMND 9 chữ số, CCCD 12 chữ số. Lọc bằng độ dài + checksum khi áp dụng được:

Đầu vàoPhát hiện
CMND: 012345678✓ ID_VN
CCCD 012345678901✓ ID_VN
024089001234 (12 chữ số đầu)✓ ID_VN
01234567 (8 chữ số)✗ — không khớp độ dài

PHONE_VN ​

Số điện thoại VN — di động 10 chữ số bắt đầu bằng 03/05/07/08/09, hoặc đầu số quốc gia +84:

Đầu vàoPhát hiện
0987654321✓ PHONE_VN
+84 987 654 321✓ PHONE_VN
0241234567 (cố định Hà Nội)✓ PHONE_VN
1234567890✗ — không khớp đầu số VN

Cách hoạt động ​

nom.nlp.ner dùng RegexNERModel ở v0:

  1. Chạy regex song song cho mỗi loại thực thể.
  2. Khử chồng lấn — nếu hai span chồng nhau, chọn loại có thứ tự ưu tiên cao hơn (LAW_REF > ORG > MONEY > DATE > PHONE_VN > ID_VN

    PER > LOC).

  3. Trả về danh sách NERSpan(label, text, start, end, confidence).

Không dùng model trong v0 — nhanh (~5 ms/đoạn), deterministic, không cần GPU. Thiếu sót: không bắt được PER (tên người) tốt vì regex tên VN khó. Khi cần PER chính xác, đổi sang HFNERModel(model_id="vinai/phobert-large-finetune-vi-ner") — xem nlp.md.

Giới hạn đã biết ​

  • PER kém. Regex không phân biệt "Nguyễn Văn A" (tên) với "Nguyễn Du" (tên người mất từ thế kỷ 18 đang được trích trong văn bản pháp lý). Cần PhoBERT-NER cho production.
  • LAW_REF chỉ bắt mẫu chuẩn. Tham chiếu pháp luật có cấu trúc bất thường (viết tắt, gộp số) có thể bị bỏ sót. Bao phủ ~85 % công văn VN hiện đại.
  • ID_VN không xác minh mã kiểm tra CCCD. Có thể có dương tính giả với chuỗi 12 chữ số ngẫu nhiên. Hợp lý cho khai phá văn bản; khi cần xác minh chính thức phải dùng API VNeID.
  • PHONE_VN bỏ qua đầu số quốc tế ngoài VN. Chỉ tập trung +84.

Tích hợp với tác vụ khác ​

PipelineNER ở đâu
Hợp đồng → bảng tóm tắtOCR → NER pháp lý → Tóm tắt với ngữ cảnh thực thể
Đơn từ y tếOCR → NER chuẩn (PER + DATE) → Phân loại rủi ro
Nhật ký kiểm toán nội bộChat → NER chuẩn (PER + ORG + DATE) → Lưu vào space

Liên quan ​

  • nlp.md — toàn bộ thư viện NLP (NER + cảm xúc + nhận diện ngôn ngữ) + cách gắn HF model qua plugin.
  • Phân loại rủi ro — pipeline xuôi dòng dùng NER.
  • Tóm tắt — gợi ý thực thể quan trọng cho prompt.