Chào tất cả các bạn, sau một thời gian ngắn tìm hiểu về machine learning - NLP. Nhóm của mình đã có những kết quả bước đầu đó là 1 ứng dụng trả lời tự động thông minh (chatbot smartFAQ), có thể tự động trả lời các câu hỏi liên quan đến việc mua bán cung cấp dịch vụ tên miền, hosting...Mặc dù kết quả ban đầu chưa được tốt lắm (accuracy ~ 70%), nhưng sắp tới nhóm mình sẽ làm tiếp tục phase2 để cải thiện kết quả. Dưới đây là tóm tắt về các kỹ thuật và công nghệ được sử dụng trong ứng dụng chatbot này. Hy vọng sẽ nhận được nhiều ý kiến đóng góp từ các bạn để nhóm có thêm định hướng cho các phase sau.

Trước tiên là sơ đồ tổng quát các bước nhóm mình đã áp dụng vào dự án

nhìn vào sơ đồ này chúng ta có thể nhận thấy dự án về cơ bản chia làm 3 phần:

  1. Tiền xử lý (Preprocessing)
  2. Learning
  3. Evaluation và Web for UX

Tiền xử lý (Preprocessing)

Trong phần tiền xử lý, có rất nhiều công việc phải làm để đưa raw data về Clean data. Một vài bước mình đã giới thiệu chi tiết trong slide bên dưới như:

  • Loại bỏ noise data
  • Word Segment
  • Loại bỏ StopWords
  • Tạo vector cho từ

Trong đó, loại bỏ noise data là loại bỏ các tag html, các script tag có xuất hiện trong văn bản, Word Segment để tách từ, có 2 phần mềm bọn mình sử dụng trong dự án để tách từ là

2 thư viện trên đều có ưu điểm và nhược điểm. Mọi người có thể tự cài đặt và trải nghiệm để xem thư viện nào phù hợp với dự án của mình. Sau khi các công việc trên đã hoàn thành, chúng ta vào tiếp phần Learning

Learning

Trong phần này chúng ta cần sử dụng các thuật toán Machine Learning (ML) giúp máy có thể học được từ data đã được xử lý trong phần PreProcessing bên trên. Để có thể sử dụng được các thuật toán ML, chúng ta cần vector hóa văn bản, hay các đoạn text đầu vào (Feature Extracting). Có nhiều cách để vector hóa văn bản. Ở đây, bọn mình sử dụng Bag-of-words và sau đó là TF-IDF. Các bạn có thể tham khảo trên slide để biết các khái niệm và cách sử dụng chúng như thế nào nhé.

Sau khi Feature Extracting, chúng ta sẽ bước sang phần Training (Huấn luyện mô hình), trong phần này chúng mình sử dụng 4 thuật toán

  • SVM (Support Vector Machine)
  • NVB (Naive Bayes)
  • SGDClassifier
  • Random forest

Về cách sử dụng và các kiến thức cơ bản của 4 thuật toán trên đã được trình bày trong slide, các bạn có thể đọc thêm các nguồn trên internet để hiểu hơn về 4 thuật toán trên nhé. Về cơ bản, Scikit-Learn đã có cài đặt và chúng ta chỉ việc sử dụng thôi.

Evaluation và Web UX

Đúng rồi, đây là bước cuối cùng trong dự án, sau khi thực hiện training và có được kết quả, chúng ta phải đánh giá xem mô hình nào hoạt động tốt, mô hình nào chưa...Chúng mình sử dụng 1 vài phương pháp như:

  • Accuracy
  • Precision và Recall
  • F1-Score

Sau khi đánh giá chúng ta sẽ quay lại tuning parameter để được kêt quả tốt hơn.

Trên đây là bước tóm tắt các bước bọn mình đã áp dụng vào app SmartFAQ. Dưới đây là slide chi tiết và link app demo. Hy vọng nhận được những ý kiến đóng góp từ các bạn để kết quả lần sau sẽ tốt hơn.

NLP - Ứng dụng chatbot from Nguyễn Anh