Chuyển đến nội dung chính

Tách từ trong tiếng Việt Word Segmentation

Tách từ tiếng Việt là bài toán xác định ranh giới giữa các từ trong một chuỗi văn bản. Khó khăn nằm ở chỗ khoảng trắng trong tiếng Việt thường phân cách các âm tiết, nhưng một từ hoàn chỉnh có thể gồm nhiều âm tiết như “sinh viên”, “đại học”, “công nghệ” hay “tự nhiên”.

Tách từ đúng giúp các hệ thống NLP dựa trên từ biểu diễn văn bản hợp lý hơn, đặc biệt trong tìm kiếm, TF-IDF, phân loại văn bản, gán nhãn từ loại và một số mô hình ngôn ngữ tiếng Việt. Tuy nhiên, với các Transformer sử dụng tokenizer dưới mức từ như subword hoặc SentencePiece, tách từ thủ công không phải lúc nào cũng là bước bắt buộc. Việc có cần tách từ trước hay không phụ thuộc vào mô hình và pipeline cụ thể.

Tóm tắt nội dung
  • Khoảng trắng trong tiếng Việt không phải lúc nào cũng là ranh giới từ; nhiều từ gồm hai hoặc nhiều âm tiết.
  • Word segmentation và tokenization có liên quan nhưng không hoàn toàn đồng nghĩa.
  • Ba hướng chính gồm dựa trên từ điển, mô hình thống kê và mô hình học sâu.
  • Trong thực tế có thể sử dụng Underthesea, VnCoreNLP hoặc PyVi, nhưng cách tiền xử lý phải phù hợp với mô hình phía sau.
Minh họa bài toán tách từ tiếng Việt Từ chuỗi âm tiết đến các đơn vị từ sinh viên nghiên cứu xử lý ngôn ngữ tự nhiên sinh_viên nghiên_cứu xử_lý ngôn_ngữ tự_nhiên Dấu gạch dưới chỉ dùng để minh họa các âm tiết thuộc cùng một từ
Tách từ xác định những âm tiết nào cần được nhóm thành cùng một đơn vị từ.

Tách từ tiếng Việt thực sự là bài toán gì?

Tiếng Việt thường được xếp vào nhóm ngôn ngữ đơn lập hoặc thiên về phân tích. Vì vậy, không nên mô tả tiếng Việt là một ngôn ngữ chắp dính. Đặc điểm quan trọng đối với bài toán tách từ là một từ tiếng Việt có thể gồm một hoặc nhiều âm tiết, trong khi các âm tiết thường được viết cách nhau bằng khoảng trắng.

Ví dụ, câu:

Sinh viên nghiên cứu xử lý ngôn ngữ tự nhiên.

Nếu chỉ dùng hàm chia theo khoảng trắng, ta nhận được các đơn vị “sinh”, “viên”, “nghiên”, “cứu”, “xử”, “lý”... Tuy nhiên, ở cấp độ từ, cách biểu diễn hợp lý hơn có thể là:

sinh_viên   nghiên_cứu   xử_lý   ngôn_ngữ   tự_nhiên

Dấu gạch dưới ở đây không phải một phần của cách viết tiếng Việt. Nó chỉ là quy ước thường được dùng trong dữ liệu NLP để biểu diễn rằng nhiều âm tiết thuộc cùng một từ.

Word segmentation khác tokenization như thế nào?

Hai thuật ngữ này thường bị dùng thay thế cho nhau nhưng về kỹ thuật không hoàn toàn giống nhau. Tách từ (word segmentation) tập trung vào việc xác định ranh giới từ. Tokenization là khái niệm rộng hơn: nó biến văn bản thành các token mà mô hình sẽ xử lý.

Quy trình Word Segmentation trong xử lý ngôn ngữ tự nhiên (NLP) 


Token có thể là từ, âm tiết, ký tự hoặc các đơn vị dưới mức từ. Vì vậy một tokenizer hiện đại không nhất thiết phải tạo ra token tương ứng với từ hoàn chỉnh.

Khái niệm Mục tiêu Đơn vị đầu ra
Word segmentation Xác định ranh giới từ Từ
Whitespace splitting Chia theo khoảng trắng Thường gần với âm tiết trong tiếng Việt
Subword tokenization Chia văn bản thành đơn vị phù hợp với vocabulary của mô hình Subword

Vì sao tách từ tiếng Việt khó hơn split theo khoảng trắng?

Nếu mỗi khoảng trắng luôn là ranh giới từ thì bài toán có thể giải quyết bằng một dòng code. Trong tiếng Việt, vấn đề phức tạp hơn vì ranh giới âm tiết và ranh giới từ không trùng nhau hoàn toàn.

Một từ có thể gồm nhiều âm tiết

Các chuỗi như “sinh viên”, “máy tính”, “học máy” hay “trí tuệ” đều chứa khoảng trắng nhưng có thể được xử lý như một từ trong các hệ thống tách từ.

Nếu một mô hình dựa trên từ coi “học” và “máy” là hai đơn vị độc lập thay vì “học_máy”, thống kê tần suất và biểu diễn đặc trưng của văn bản có thể thay đổi đáng kể.

Ranh giới từ phụ thuộc vào ngữ cảnh

Một chuỗi âm tiết đôi khi có thể được phân tích theo nhiều cách. Ví dụ, xét hai câu:

Câu 1: Tôi mua một chiếc bàn là mới.
Câu 2: Cái bàn là đồ gỗ.

Trong câu thứ nhất, “bàn là” có thể được xem là một từ chỉ dụng cụ dùng để là quần áo. Trong câu thứ hai, “bàn” và “là” thuộc hai đơn vị khác nhau. Chỉ nhìn vào hai âm tiết “bàn là” là chưa đủ; hệ thống cần sử dụng ngữ cảnh xung quanh.

Từ mới, tên riêng và ngôn ngữ mạng xã hội

Từ vựng thay đổi liên tục. Văn bản thực tế có thể chứa tên sản phẩm, tên người, tên tổ chức, thuật ngữ chuyên ngành, từ viết tắt, từ mượn, hashtag hoặc cách viết không chuẩn.

Một hệ thống chỉ dựa vào từ điển cố định dễ gặp các chuỗi chưa từng có trong vocabulary. Đây là một trong những lý do các mô hình học từ dữ liệu và mô hình ngữ cảnh thường linh hoạt hơn các luật từ điển thuần túy.

Một điểm cần phân biệt: phát hiện từ mới và tách từ có liên hệ chặt chẽ nhưng không hoàn toàn là cùng một bài toán. Các chỉ số như Mutual Information hoặc entropy có thể hữu ích cho phát hiện ứng viên từ mới, nhưng không đại diện cho toàn bộ bài toán word segmentation hiện đại.

Ba hướng chính để tách từ tiếng Việt

1. Phương pháp dựa trên từ điển

Phương pháp dựa trên từ điển sử dụng một tập từ đã biết và tìm cách ghép các âm tiết thành những từ có trong từ điển. Một thuật toán đơn giản là Maximum Matching: tại mỗi vị trí, ưu tiên chuỗi dài nhất xuất hiện trong từ điển.

Ví dụ, giả sử từ điển chứa:

sinh_viên    nghiên_cứu    học_máy

Với câu “sinh viên nghiên cứu học máy”, thuật toán có thể thử ghép nhiều âm tiết liên tiếp và chọn chuỗi dài nhất tồn tại trong từ điển.

dictionary = {
    "sinh viên",
    "nghiên cứu",
    "học máy"
}


def maximum_matching(text, dictionary, max_len=3):
    syllables = text.split()
    result = []
    i = 0

    while i < len(syllables):
        matched = None

        for size in range(
            min(max_len, len(syllables) - i),
            0,
            -1
        ):
            candidate = " ".join(syllables[i:i + size])

            if candidate in dictionary:
                matched = candidate
                break

        if matched is None:
            matched = syllables[i]

        result.append(matched.replace(" ", "_"))
        i += len(matched.split())

    return result


text = "sinh viên nghiên cứu học máy"

print(maximum_matching(text, dictionary))

Với từ điển trên, kết quả là các đơn vị sinh_viên, nghiên_cứu và học_máy. Ví dụ cho thấy nguyên lý của Maximum Matching nhưng cũng bộc lộ hạn chế lớn: hệ thống chỉ nhận ra những từ mà từ điển đã biết và khó giải quyết trường hợp nhập nhằng cần ngữ cảnh.

2. Phương pháp thống kê và gán nhãn chuỗi

Một cách tổng quát hơn là biến tách từ thành bài toán gán nhãn chuỗi. Thay vì cố gắng tìm từ trực tiếp, mô hình xác định vai trò của từng âm tiết trong cấu trúc từ.

Ví dụ, một hệ thống có thể sử dụng bộ nhãn B-M-E-S:

  • B — Begin: âm tiết bắt đầu một từ nhiều âm tiết.
  • M — Middle: âm tiết nằm giữa từ.
  • E — End: âm tiết kết thúc từ.
  • S — Single: một từ chỉ gồm một âm tiết.

Ví dụ với chuỗi “sinh viên học máy”:

sinh viên học máy
B E B E

Các mô hình như Conditional Random Fields (CRF) có thể học xác suất của chuỗi nhãn dựa trên đặc trưng của các âm tiết và ngữ cảnh xung quanh. Ưu điểm quan trọng của CRF là không chỉ dự đoán từng nhãn riêng lẻ mà còn mô hình hóa quan hệ giữa các nhãn liên tiếp.

3. Học sâu và mô hình ngữ cảnh

Các mô hình học sâu có thể học biểu diễn của âm tiết hoặc ký tự trực tiếp từ dữ liệu. BiLSTM, BiLSTM-CRF và các kiến trúc Transformer có khả năng khai thác ngữ cảnh rộng hơn so với phương pháp chỉ dựa vào từ điển.

Một pipeline gán nhãn chuỗi có thể được hình dung như sau:

Câu đầu vào
Chuỗi âm tiết
→
Encoder
BiLSTM / Transformer
→
Nhãn biên
B / M / E / S
→
Kết quả
Các từ đã tách

Ưu điểm của cách tiếp cận dựa trên ngữ cảnh là mô hình có thể đưa ra quyết định khác nhau cho cùng một chuỗi âm tiết nếu phần còn lại của câu thay đổi. Đây là điều các luật Maximum Matching đơn giản khó thực hiện.

Tách từ có còn cần thiết khi dùng Transformer?

Đây là điểm dễ gây nhầm lẫn nhất khi xây dựng hệ thống NLP hiện đại. Transformer không đồng nghĩa với việc luôn phải tách từ trước, cũng không có nghĩa tách từ đã trở nên vô ích.

Nhiều mô hình sử dụng subword tokenizer. Tokenizer này có thể tiếp tục chia một chuỗi thành các đơn vị nhỏ hơn từ dựa trên vocabulary đã học. Vì vậy, đầu vào cuối cùng của mô hình không nhất thiết tương ứng với các từ ngôn ngữ học.

Nguyên tắc quan trọng: hãy sử dụng đúng quy trình tiền xử lý mà mô hình đã dùng khi huấn luyện. Nếu mô hình được pretrain trên văn bản đã word-segment, đầu vào downstream nên giữ cách xử lý tương thích. Nếu tokenizer được thiết kế cho văn bản tiếng Việt thô, không nên tự ý chèn một bước tách từ chỉ vì đó là pipeline truyền thống.

Đối với các pipeline cổ điển như Bag-of-Words, TF-IDF hoặc các hệ thống tìm kiếm lexical dựa mạnh vào từ, word segmentation thường có ảnh hưởng trực tiếp tới vocabulary và thống kê tần suất.

Với embedding model hoặc hệ thống RAG dùng Transformer, word segmentation không mặc định là bước bắt buộc. Embedding model thường có tokenizer riêng. Tuy nhiên, nếu hệ thống kết hợp BM25, keyword extraction hoặc các đặc trưng cấp từ, tách từ vẫn có thể là một phần quan trọng của pipeline.

Pipeline Tách từ trước? Lý do
TF-IDF / Bag-of-Words Thường hữu ích Feature phụ thuộc trực tiếp vào đơn vị token
BM25 tiếng Việt Thường nên xem xét Thống kê term frequency phụ thuộc vào cách xác định term
Transformer Phụ thuộc mô hình Cần theo đúng tokenizer và preprocessing của pretrained model
RAG dùng dense embedding Không mặc định bắt buộc Embedding model thường có tokenizer riêng
RAG hybrid BM25 + dense Có thể quan trọng Nhánh lexical chịu ảnh hưởng của word segmentation

Thực hành tách từ tiếng Việt bằng Python

Trong ứng dụng thực tế, thông thường không cần tự huấn luyện một word segmenter từ đầu. Các thư viện tiếng Việt đã cung cấp sẵn giao diện để xử lý văn bản.

Underthesea

Underthesea cung cấp hàm word_tokenize và có thể trả kết quả dưới dạng danh sách từ hoặc dạng văn bản, trong đó các âm tiết thuộc cùng một từ được nối bằng dấu gạch dưới.

from underthesea import word_tokenize

text = "Sinh viên nghiên cứu xử lý ngôn ngữ tự nhiên."

tokens = word_tokenize(text)
segmented_text = word_tokenize(text, format="text")

print(tokens)
print(segmented_text)

Biến tokens chứa các đơn vị từ mà bộ tách nhận diện. Với format="text", các âm tiết thuộc cùng một từ được nối lại để thuận tiện cho những pipeline cần văn bản đã word-segment.

VnCoreNLP

VnCoreNLP là một bộ công cụ NLP tiếng Việt cung cấp nhiều tác vụ như word segmentation, gán nhãn từ loại, nhận dạng thực thể và phân tích cú pháp. Đây là lựa chọn thường gặp khi cần một pipeline ngôn ngữ học gồm nhiều bước thay vì chỉ tách từ.

PyVi

PyVi cung cấp giao diện tương đối đơn giản cho một số tác vụ xử lý tiếng Việt, trong đó có word segmentation. Với những dự án nhỏ hoặc pipeline cần tích hợp nhanh, đây cũng là một lựa chọn có thể thử nghiệm.

Không nên chọn thư viện chỉ theo mức độ phổ biến. Khi xây dựng hệ thống thật, nên kiểm tra tốc độ, độ chính xác trên chính miền dữ liệu của mình, định dạng đầu ra và mức độ tương thích với mô hình downstream.

Cách đánh giá và sử dụng word segmentation đúng trong pipeline NLP

Một bộ tách từ không nên chỉ được đánh giá bằng vài câu ví dụ. Nếu có tập dữ liệu gán nhãn chuẩn, có thể xem các ranh giới từ hoặc các token dự đoán như những đối tượng cần so sánh với ground truth.

Các chỉ số Precision, Recall và F1 có thể được tính ở mức từ hoặc ranh giới tùy cách thiết kế bộ đánh giá:

Precision = Correct / Predicted
Recall = Correct / Gold
F1 = 2 × Precision × Recall / (Precision + Recall)

Trong đó Correct là số đơn vị được dự đoán đúng theo tiêu chuẩn đánh giá, Predicted là số đơn vị hệ thống sinh ra và Gold là số đơn vị trong dữ liệu chuẩn.

Tuy nhiên, chất lượng word segmentation cuối cùng nên được xem cùng với tác vụ downstream. Hai bộ tách từ có F1 gần nhau vẫn có thể tạo ra kết quả khác nhau đối với tìm kiếm, sentiment analysis hoặc NER nếu chúng thường sai ở những loại từ khác nhau.

Pipeline thực tế nên được kiểm tra theo chuỗi:

Văn bản thô → chuẩn hóa → tách từ nếu cần → tokenizer của mô hình → mô hình downstream → đánh giá cuối cùng.

Cũng cần tránh tiền xử lý quá mức. Việc xóa dấu câu, viết thường toàn bộ, bỏ stopword hoặc tách từ trước khi đưa vào Transformer không phải lúc nào cũng giúp mô hình. Mỗi bước biến đổi đều có khả năng làm mất thông tin và chỉ nên được sử dụng khi phù hợp với thuật toán phía sau.

Kết luận

Tách từ tiếng Việt không phải là thao tác chia câu theo khoảng trắng mà là bài toán xác định những âm tiết nào cấu thành cùng một từ. Các phương pháp có thể đi từ Maximum Matching dựa trên từ điển đến CRF, BiLSTM và Transformer sử dụng ngữ cảnh để xử lý các trường hợp nhập nhằng.

Quan trọng hơn, word segmentation không phải bước bắt buộc cho mọi hệ thống NLP hiện đại. Với mô hình cấp từ hoặc truy hồi lexical, nó có thể rất quan trọng; với Transformer và dense embedding, cần tuân theo tokenizer và quy trình tiền xử lý của chính mô hình. Hiểu rõ sự khác nhau giữa âm tiết, từ, token và subword giúp thiết kế pipeline tiếng Việt chính xác hơn thay vì áp dụng một bước tách từ cho mọi bài toán.

© The CS Note · THE CS NOTE

Nội dung gốc thuộc tác giả. Vui lòng không đăng lại toàn văn khi chưa được phép, trừ trường hợp pháp luật hoặc giấy phép áp dụng cho phép. Nội dung của bên thứ ba tuân theo quyền và giấy phép tương ứng.

Nguồn gốc: Tách từ trong tiếng Việt Word Segmentation

Về trang chủ Về đầu bài

Bài Đăng Phổ Biến

Bài toán tháp Hà nội

Trải nghiệm Tháp Hà Nội Kéo thả đĩa hoặc chạm vào các nút bên dưới để di chuyển. Bạn phải chuyển toàn bộ đĩa sang cột ngoài cùng bên phải (Cột 3) mà không đặt đĩa to lên đĩa nhỏ. Cột 1 Cột 2 Cột 3 Điều khiển & Chế độ Số lượng đĩa 4 Tốc độ máy giải ↪ Undo ↻ Chơi lại 🤖 Máy tự giải Thống kê ván chơi Nước đã đi 0 Thời gian 00:00 Tối thiểu cần 15 Kỷ lục của bạn - Lịch sử và Nguồn gốc Truyền thuyết Bài toán Tháp Hà Nội (hay Tháp Brahma) là một trò chơi xếp hình toán học kinh điển được giới thiệu lần đầu vào năm 1883 bởi nhà toán học người Pháp Édouard L...

Bài toán phân tích cảm xúc trong văn bản

Bài toán phân tích cảm xúc (sentiment analysis) là một bài toán NLP nhằm xác định thái độ hoặc cảm xúc được thể hiện trong văn bản. Ví dụ, từ một đánh giá như “Điện thoại đẹp, chạy nhanh nhưng pin hơi yếu”, hệ thống có thể nhận biết rằng người dùng có cả nhận xét tích cực và tiêu cực. Điểm thú vị của bài toán nằm ở khoảng cách giữa cách con người hiểu ngôn ngữ và cách máy tính xử lý dữ liệu. Một hệ thống phân tích cảm xúc cần biến văn bản tự nhiên thành dữ liệu có cấu trúc, học được các mẫu ngôn ngữ từ dữ liệu huấn luyện và đưa ra dự đoán hợp lý trên những câu chưa từng gặp. 1. Bài toán phân tích cảm xúc bắt đầu từ đâu? Hãy tưởng tượng một cửa hàng trực tuyến có hàng nghìn đánh giá mỗi ngày. Con người có thể đọc từng đánh giá để biết khách hàng hài lòng hay không, nhưng việc này nhanh chóng trở nên tốn thời gian khi dữ liệu tăng lên. NLP có thể biến bài toán đó thành một bài toán phân loại. Với mỗi văn bản, hệ thống nhận vào một chuỗi ký...

KAN cho phân đoạn khối u não với bộ BraTS 2020

Kolmogorov-Arnold Network (KAN) mở ra một hướng khác với MLP truyền thống: thay vì chỉ học các trọng số vô hướng trên mỗi kết nối, KAN có thể học những hàm phi tuyến một biến trên các cạnh . Khi đưa ý tưởng này vào kiến trúc encoder-decoder như U-Net, ta có thể sử dụng convolution để giữ cấu trúc không gian của ảnh MRI và dùng KAN để thực hiện các phép biến đổi phi tuyến mạnh hơn trên representation trung gian. Một bài toán phù hợp để nghiên cứu hướng này là phân đoạn u thần kinh đệm trên BraTS 2020 . Dataset cung cấp MRI đa mô thức và yêu cầu xác định các vùng Whole Tumor (WT), Tumor Core (TC) và Enhancing Tumor (ET). Đây là bài toán 3D có sự mất cân bằng voxel lớn, hình dạng khối u rất đa dạng và ranh giới giữa các mô bệnh lý không đơn giản. Lưu ý học thuật quan trọng: U-KAN gốc được công bố cho nhiều benchmark phân đoạn ảnh y tế nhưng không báo cáo kết quả BraTS 2020. Một công trình sau đó đã mở rộng U-KAN sang 3D MRI brain tumor segmentation , nhưng đánh giá trên BraTS 2...

KAN là gì? Mạng Kolmogorov-Arnold khác MLP thế nào?

Kolmogorov-Arnold Network (KAN) là một kiến trúc mạng nơ-ron trong đó mỗi cạnh không chỉ chứa một trọng số vô hướng mà mang một hàm một biến có thể học được . Đây là khác biệt cốt lõi so với Multi-Layer Perceptron (MLP), nơi các cạnh chủ yếu thực hiện phép nhân với trọng số còn hàm kích hoạt thường được áp dụng tại các node. KAN được lấy cảm hứng từ định lý biểu diễn Kolmogorov-Arnold và đặc biệt đáng chú ý trong các bài toán xấp xỉ hàm, mô hình hóa khoa học và symbolic regression. Tuy nhiên, KAN không nên được hiểu là kiến trúc đã thay thế MLP trong mọi bài toán Deep Learning; khả năng biểu diễn, chi phí tính toán và mức độ phù hợp của hai kiến trúc khác nhau theo từng nhiệm vụ. Tóm tắt nội dung MLP học chủ yếu trọng số trên các cạnh , còn KAN đặt hàm một biến học được trên từng cạnh . Một KAN layer cộng kết quả của nhiều hàm cạnh để tạo activation của node tiếp theo. KAN gốc sử dụng B-spline để tham số hóa các hàm phi tuyến trên cạnh. KAN có lợi thế đáng chú ý về trực...