Bag of Words (BoW) là một kỹ thuật phổ biến trong Xử lý Ngôn ngữ Tự nhiên (NLP) để biểu diễn văn bản thành dạng số. Mô hình này đơn giản nhưng hiệu quả trong nhiều bài toán như phân loại văn bản, tìm kiếm thông tin và phân tích cảm xúc.
Bag of Words là gì?
Bag of Words là một phương pháp biểu diễn văn bản bằng cách đếm số lần xuất hiện của các từ trong một tài liệu. Trong mô hình này, thứ tự từ không quan trọng, chỉ quan tâm đến sự có mặt và tần suất của từ.
Ví dụ:
Câu 1: "Tôi yêu học máy và xử lý ngôn ngữ tự nhiên." Câu 2: "Học máy là một lĩnh vực quan trọng của trí tuệ nhân tạo."
Với Bag of Words, hai câu trên có thể được biểu diễn thành:
| Tôi | yêu | học | máy | và | xử | lý | ngôn | ngữ | tự | nhiên | là | một | lĩnh | vực | quan | trọng | của | trí | tuệ | nhân | tạo |
| Câu 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Câu 2 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Cách tạo Bag of Words bằng Python
Sử dụng CountVectorizer từ scikit-learn

CountVectorizer() giúp chuyển đổi văn bản thành ma trận số.
fit_transform(documents) tạo ma trận tần suất từ.
get_feature_names_out() lấy danh sách từ vựng.
X.toarray() hiển thị ma trận BoW dưới dạng mảng số.
Từ vựng: ['của' 'học' 'là' 'lý' 'lĩnh' 'máy' 'một' 'ngôn' 'ngữ' 'nhiên' 'nhân' 'quan' 'trí' 'trọng' 'tuệ' 'tôi' 'tạo' 'tự' 'và' 'vực' 'xử' 'yêu'] Biểu diễn BoW: [[0 1 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 1] [1 1 1 0 1 1 1 0 0 0 1 1 1 1 1 0 1 0 0 1 0 0]]
Loại bỏ stopwords
Trong văn bản, một số từ như "và", "của", "là" thường không mang nhiều ý nghĩa. Chúng ta có thể loại bỏ chúng bằng cách sử dụng danh sách stopwords.
kết quả thu được:
Tần suất - Inverse Document Frequency (TF-IDF)
Mô hình BoW chỉ đơn thuần đếm số lần xuất hiện của từ, nhưng không đánh giá mức độ quan trọng của từ trong văn bản. Để giải quyết vấn đề này, ta có thể sử dụng TF-IDF
Kết quả thu được:Từ vựng: ['của' 'học' 'là' 'lý' 'lĩnh' 'máy' 'một' 'ngôn' 'ngữ' 'nhiên' 'nhân'
'quan' 'trí' 'trọng' 'tuệ' 'tôi' 'tạo' 'tự' 'và' 'vực' 'xử' 'yêu']
Biểu diễn TF-IDF:
[[0. 0.2248583 0. 0.3160305 0. 0.2248583
0. 0.3160305 0.3160305 0.3160305 0. 0.
0. 0. 0. 0.3160305 0. 0.3160305
0.3160305 0. 0.3160305 0.3160305 ]
[0.28852505 0.20528795 0.28852505 0. 0.28852505 0.20528795
0.28852505 0. 0. 0. 0.28852505 0.28852505
0.28852505 0.28852505 0.28852505 0. 0.28852505 0.
0. 0.28852505 0. 0. ]]
Lợi ích của TF-IDF:
Giảm trọng số của từ phổ biến.
Tăng trọng số của từ quan trọng trong tài liệu.
Ưu điểm và Nhược điểm của Bag of Words
Ưu điểm:
Đơn giản, dễ hiểu, dễ triển khai.
Hiệu quả với các mô hình học máy cơ bản.
Nhược điểm:
Không quan tâm đến ngữ cảnh của từ.
Ma trận BoW có thể rất lớn nếu từ vựng phong phú.
Không xử lý tốt các từ đồng nghĩa và đa nghĩa.
Như vậy, Bag of Words là một phương pháp cơ bản nhưng hữu ích trong NLP. Tuy nhiên, để cải thiện hiệu quả, ta có thể kết hợp BoW với các kỹ thuật khác như TF-IDF hoặc sử dụng các mô hình học sâu như Word2Vec, BERT. Hy vọng bài viết giúp bạn hiểu rõ hơn về cách biểu diễn văn bản trong NLP và cách áp dụng BoW vào các bài toán thực tế.
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.

