Bài toán phân loại văn bản (text classification)

classification

#1

Trong tiếng Anh bài toán này được biết đến với cái tên (text classification. E.g. sentiment classification). Mình xin chia sẻ một số kiến thức mình học được liên quan tới bài toán này (Mình thấy có bạn cũng hỏi về sentiment classification).

Trước hết đã là bài toán phân loại thì các bạn có thể dùng các thuật toán phân loại (trong machine learning hay deep learning). Mình xin được liệt kê một số cái tên: Naive Bayes, Decision Tree (Random Forest), Vector Support Machine (SVM), Convolution Neural Network (CNN), Recurrent Neural Network (RNN), Long Short-Term Memory (LSTM, Bi-LSTM)… Ví dụ: Naive Bayes được sử dụng rất nhiều trong bài toán Spam Classification, CNN được thử nghiệm cho bài toán Sentiment Classification cho độ chính xác tương đối cao, LSTM cũng được sử dụng cho Sentiment Classification.

Nhưng vấn đề mấu chốt ở đây là dữ liệu đầu vào, dữ liệu này là văn bản. Chúng ta cần đưa dữ liệu này về một dạng mà các mô hình nêu phía trên có thể học một cách dễ dàng. Theo mình được biết thì có 2 hướng tiếp cận: 1- Biểu diễn văn bản bằng các từ quan trọng, các từ này sẽ ảnh hưởng tới việc văn bản thuộc class nào. Để xem thêm code implement các bạn có thể tham khảo ở đây:

2 - Biểu diễn văn bản thành một ma trận (văn bản ngắn thì có thể biểu diễn thành một mảng 2 chiều) hoặc thành một vector (văn bản dài có thể thực hiện theo cách này - khá lý tưởng). Mình xin được giải thích thêm như sau: a. Biểu diễn thành ma trận:

  • Bước 1: Biến 1 từ (word) thành một vector (có thể sử dụng word2vec training sẵn)
  • Bước 2: Ghép các từ lại thành 1 mảng, như vậy ta được mảng 2 chiều (ma trận): l x d (l = length là chiều dài của văn bản hay số từ; d = dimension là chiều của không gian vector mà 1 từ (word) được biểu diễn). Xem thêm: https://medium.com/jatana/report-on-text-classification-using-cnn-rnn-han-f0e887214d5f

b. Biểu diễn thành vector: Cho một mô hình học từ nhiều văn bản khác nhau và có thể ánh xạ một văn bản thành 1 vector Xem thêm:

Chú ý: Đầu vào là text dài hay ngắn (short text) cũng ảnh hưởng tới việc chọn model. Ví dụ: short text thì có thể chọn các mô hình deep learning. Ở đây mình lấy link ví dụ toàn tiếng Anh nhưng các bạn có thể áp dụng cho tiếng Việt, chỉ cần tìm 1 thư viện tokenizer tiếng Việt, sau đó tìm 1 pre-trained Word2Vec, FastText tiếng Việt nữa là được.

Thêm một mô hình deep learning khá mới là Temporal Convolutional Network, cũng có thể dụng cho bài toán phân loại văn bản.


[VNLP Core] [3] Bài toán phân loại văn bản - Phân tích cảm xúc của bình luận (text classification)
Tìm giải pháp cho bài toán sentiments classification
#2

Cảm ơn bạn.

Mình vừa đổi bài viết về chuyên mục ‘Tutorials’ để tránh nhầm lẫn với các câu hỏi. Bạn có thể post lên Facebook group chia sẻ, hoặc mình cũng có thể giúp bạn.


#3

Ok bạn, giúp mình chia sẻ bài trên facebook nhé!