VnCoreNLP

Giới thiệu

VnCoreNLP là một bộ công cụ (toolkit) Xử lý Ngôn ngữ Tự nhiên (NLP) dành riêng cho tiếng Việt, được phát triển và công bố năm 2018. Đây là một pipeline annotation nhanh, chính xác và dễ sử dụng, cung cấp các annotation ngôn ngữ học phong phú cho các nhiệm vụ cốt lõi. VnCoreNLP được xây dựng bằng Java, không yêu cầu dependencies bên ngoài phức tạp, và vẫn là một trong những công cụ nền tảng quan trọng cho nghiên cứu và ứng dụng NLP tiếng Việt.

Công cụ này được giới thiệu trong bài báo: “VnCoreNLP: A Vietnamese Natural Language Processing Toolkit” (NAACL 2018) bởi Thanh Vu, Dat Quoc Nguyen, Dai Quoc Nguyen, Mark Dras và Mark Johnson.

Mục tiêu chính là tạo ra một công cụ tương tự Stanford CoreNLP nhưng tối ưu cho tiếng Việt – ngôn ngữ low-resource với đặc thù đơn âm tiết và thanh điệu.

Các thành phần chính (Components)

VnCoreNLP hỗ trợ pipeline với các annotators sau (có thể chọn linh hoạt):

  1. wseg (Word Segmentation): Phân đoạn từ – nhiệm vụ quan trọng nhất của tiếng Việt vì văn bản thường viết liền âm tiết mà không có dấu cách rõ ràng giữa từ.
    • Sử dụng RDRSegmenter (Ripple Down Rules – mô hình rule-based học từ dữ liệu).
    • Hiệu suất: F1 ~97.90%, tốc độ 62K từ/giây (SOTA lúc bấy giờ).
  2. pos (Part-of-Speech Tagging): Gán nhãn từ loại.
    • Dựa trên MarMoT (CRF framework).
    • Độ chính xác ~95.88%, tốc độ 25K từ/giây.
  3. ner (Named Entity Recognition): Nhận diện thực thể có tên (Person, Location, Organization, Misc).
    • Sử dụng dynamic feature induction model.
    • F1 ~88.55% trên benchmark VLSP 2016 (vượt trội hơn các mô hình neural BiLSTM-CRF lúc đó, và nhanh gấp nhiều lần).
  4. parse (Dependency Parsing): Phân tích cú pháp phụ thuộc.
    • Dựa trên transition-based parsing model (greedy version).
    • Đạt kết quả tốt trên VnDT treebank.

Đặc điểm nổi bật:

  • Dễ sử dụng: Một file .jar duy nhất + thư mục models.
  • Nhanh: Phù hợp xử lý dữ liệu lớn và thiết bị tài nguyên hạn chế.
  • Chính xác: SOTA trên các benchmark VLSP khi ra mắt.
  • Output: Định dạng cột (word index, word form, POS, NER, head, dependency relation).

Kiến trúc và Cách sử dụng

Cài đặt:

  • Java 1.8+.
  • Tải VnCoreNLP-1.2.jar (khoảng 27MB) và thư mục models (115MB) từ GitHub.
  • Python wrapper: pip install py_vncorenlp.

Sử dụng Java (Command line):

Bash

java -Xmx2g -jar VnCoreNLP-1.2.jar -fin input.txt -fout output.txt -annotators wseg,pos,ner,parse

Sử dụng Python:

Python

import py_vncorenlp
model = py_vncorenlp.VnCoreNLP(annotators=["wseg", "pos", "ner", "parse"], save_dir="...")
text = "Ông Nguyễn Khắc Chúc đang làm việc tại Đại học Quốc gia Hà Nội."
print(model.annotate_text(text))

RDRSegmenter độc lập: Có thể dùng riêng cho word segmentation (rất phổ biến khi preprocess cho PhoBERT).

Hiệu suất và So sánh

Khi ra mắt (2018), VnCoreNLP đạt State-of-the-Art trên hầu hết các task:

  • Word Segmentation: Cao nhất về accuracy và speed.
  • POS Tagging: Vượt BiLSTM-CRF.
  • NER: Vượt các mô hình neural về cả F1 và tốc độ (nhanh gấp 10 lần một số model).

So với PhoBERT và các mô hình sau:

  • VnCoreNLP là pipeline truyền thống (feature-based), mạnh về tốc độ và dễ triển khai.
  • PhoBERT (2020, VinAI) là pre-trained Transformer, vượt trội hơn trên downstream tasks (POS, NER, Parsing) nhờ contextual embeddings, nhưng chậm và tốn tài nguyên hơn. Nhiều người vẫn dùng RDRSegmenter từ VnCoreNLP để preprocess dữ liệu cho PhoBERT.
  • Hiện nay, VnCoreNLP vẫn được sử dụng rộng rãi làm bước nền tảng, đặc biệt cho production hoặc low-resource environments.

Ứng dụng thực tiễn

  • Preprocessing cho các mô hình lớn (PhoBERT, BARTpho, LLMs tiếng Việt).
  • Xây dựng chatbot, phân tích văn bản hành chính, trích xuất thông tin.
  • Nghiên cứu học thuật và benchmark VLSP.
  • Tích hợp vào hệ thống của FPT, Viettel, VinAI và nhiều dự án cộng đồng.

Trạng thái hiện tại (2026)

  • Repo GitHub vẫn active (last major release 1.2 năm 2023), có ~669 stars, Python wrapper hỗ trợ tốt.
  • Không còn là SOTA tuyệt đối (các LLM lớn hơn đã vượt qua), nhưng vẫn là công cụ kinh điển, ổn định và hiệu quả cao.
  • Có các phiên bản nhẹ độc lập: RDRSegmenter (word seg) và VnMarMoT (POS).

Kết luận và Khuyến nghị

VnCoreNLP là một cột mốc quan trọng trong NLP tiếng Việt, chuyển từ các công cụ riêng lẻ sang một pipeline hoàn chỉnh, dễ tiếp cận. Nó thể hiện rõ triết lý “fast and accurate” cho ngôn ngữ low-resource: ưu tiên feature-based models truyền thống thay vì neural nặng khi chưa có dữ liệu lớn.

Để nghiên cứu sâu hơn:

 

  • Đọc paper NAACL 2018 và các paper liên quan (RDRSegmenter, From Word Segmentation to POS Tagging).
  • Thử nghiệm trên GitHub: https://github.com/vncorenlp/VnCoreNLP.
  • Kết hợp với PhoBERT cho pipeline hiện đại: RDRSegmenter → PhoBERT fine-tuning.

Viết một bình luận