Tạo mô hình phân loại văn bản tuỳ chỉnh bằng Trình tạo mô hình TensorFlow Lite

1. Trước khi bắt đầu

Trong lớp học lập trình này, bạn sẽ tìm hiểu cách cập nhật mô hình phân loại văn bản được tạo từ tập dữ liệu bình luận rác trên blog ban đầu, nhưng được tăng cường bằng các bình luận của riêng bạn để bạn có thể có một mô hình hoạt động với dữ liệu của mình.

Điều kiện tiên quyết

Lớp học lập trình này nằm trong lộ trình Bắt đầu phân loại văn bản trong ứng dụng Flutter. Các lớp học lập trình trong lộ trình này được sắp xếp theo trình tự. Ứng dụng và mô hình mà bạn sẽ làm việc phải được xây dựng trước đó, trong khi bạn đang theo dõi các lớp học lập trình. Nếu bạn chưa hoàn thành các hoạt động trước đó, vui lòng dừng lại và hoàn thành ngay bây giờ:

Kiến thức bạn sẽ học được

Bạn cần có

  • Ứng dụng Flutter và mô hình bộ lọc thư rác mà bạn đã quan sát và xây dựng trong các hoạt động trước.

2. Nâng cao tính năng phân loại văn bản

  1. Bạn có thể lấy mã cho lớp học lập trình này bằng cách sao chép kho lưu trữ này và tải ứng dụng từ thư mục tfserving-flutter/codelab2/finished.
  2. Sau khi khởi động hình ảnh Docker TensorFlow Serving, trong ứng dụng mà bạn đã tạo, hãy nhập buy my book to learn online trading rồi nhấp vào gRPC > Phân loại.

8f1e1974522f274d.png

Ứng dụng tạo ra điểm số rác thấp vì không có nhiều trường hợp giao dịch trực tuyến trong tập dữ liệu ban đầu và mô hình chưa học được rằng đó là nội dung rác. Trong lớp học lập trình này, bạn sẽ cập nhật mô hình bằng dữ liệu mới để mô hình xác định câu đó là nội dung rác!

2bd68691a26aa3da.png

3. Chỉnh sửa tệp CSV

Để huấn luyện mô hình ban đầu, chúng tôi đã tạo một tập dữ liệu dưới dạng tệp CSV (lmblog_comments.csv) chứa gần một nghìn bình luận được gắn nhãn là nội dung rác hoặc không phải nội dung rác. (Mở tệp CSV trong trình chỉnh sửa văn bản bất kỳ nếu bạn muốn kiểm tra tệp đó.)

Cấu trúc của tệp CSV là có hàng đầu tiên mô tả các cột, được gắn nhãn commenttextspam. Mọi hàng tiếp theo đều tuân theo định dạng này:

62025273971c9a7f.png

Nhãn ở bên phải được chỉ định giá trị true cho thư rác và giá trị false cho thư không phải là thư rác. Ví dụ: dòng thứ ba được coi là nội dung rác.

Nếu mọi người gửi tin nhắn rác về giao dịch trực tuyến trên trang web của bạn, bạn có thể thêm ví dụ về bình luận rác ở cuối trang web. Ví dụ:

online trading can be highly highly effective,true
online trading can be highly effective,true
online trading now,true
online trading here,true
online trading for the win,true
  • Lưu tệp bằng tên mới, chẳng hạn như lmblog_comments.csv, để bạn có thể dùng tệp này để huấn luyện một mô hình mới.

Trong phần còn lại của lớp học lập trình này, bạn sẽ sử dụng ví dụ được cung cấp, chỉnh sửa và lưu trữ trên Cloud Storage cùng với các nội dung cập nhật về hoạt động giao dịch trực tuyến. Nếu muốn sử dụng tập dữ liệu của riêng mình, bạn có thể thay đổi URL trong mã.

4. Huấn luyện lại mô hình bằng dữ liệu mới

Để huấn luyện lại mô hình, bạn chỉ cần sử dụng lại mã từ (SpamCommentsModelMaker.ipynb), nhưng trỏ mã đó đến tập dữ liệu CSV mới có tên là lmblog_comments_extras.csv. Nếu muốn xem toàn bộ sổ tay có nội dung mới cập nhật, bạn có thể tìm thấy sổ tay đó dưới dạng SpamCommentsUpdateModelMaker.ipynb.

Nếu có quyền truy cập vào Colaboratory, bạn có thể chạy trực tiếp Colaboratory. Nếu không, hãy lấy mã từ kho lưu trữ rồi chạy mã đó trong môi trường sổ tay mà bạn chọn.

Đoạn mã mới có dạng như sau:

training_data = tf.keras.utils.get_file(fname='comments-spam-extras.csv',   
          origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/
                  lmblog_comments_extras.csv', 
          extract=False)

Khi huấn luyện, bạn sẽ thấy rằng mô hình vẫn huấn luyện đến độ chính xác cao:

96a1547ddb6edf5b.png

Nén toàn bộ thư mục /mm_update_spam_savedmodel và tải tệp mm_update_spam_savedmodel.zip đã tạo xuống.

# Rename the SavedModel subfolder to a version number
!mv /mm_update_spam_savedmodel/saved_model /mm_update_spam_savedmodel/123
!zip -r mm_update_spam_savedmodel.zip /mm_update_spam_savedmodel/

5. Khởi động Docker và cập nhật ứng dụng Flutter

  1. Giải nén tệp mm_update_spam_savedmodel.zip đã tải xuống vào một thư mục, sau đó dừng phiên bản vùng chứa Docker từ lớp học lập trình trước và khởi động lại, nhưng thay thế phần giữ chỗ PATH/TO/UPDATE/SAVEDMODEL bằng đường dẫn tuyệt đối của thư mục lưu trữ các tệp đã tải xuống):
docker run -it --rm -p 8500:8500 -p 8501:8501 -v "PATH/TO/UPDATE/SAVEDMODEL:/models/spam-detection" -e MODEL_NAME=spam-detection tensorflow/serving
  1. Mở tệp lib/main.dart bằng trình chỉnh sửa mã mà bạn yêu thích, sau đó tìm phần xác định các biến inputTensorNameoutTensorName:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
  1. Chỉ định lại biến inputTensorName cho giá trị "input_1' và biến outputTensorName cho giá trị 'dense_1':
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
  1. Sao chép tệp vocab.txt mà bạn đã tải xuống vào thư mục lib/assets/ để thay thế tệp hiện có.
  2. Xoá ứng dụng Text Classification Flutter theo cách thủ công khỏi trình mô phỏng Android.
  3. Chạy lệnh 'flutter run' trong dòng lệnh để khởi chạy ứng dụng.
  4. Trong ứng dụng, hãy nhập buy my book to learn online trading rồi nhấp vào gRPC > Classify (gRPC > Phân loại).

Giờ đây, mô hình này đã được cải thiện để phát hiện mua sách của tôi để giao dịch trực tuyến là nội dung rác.

6. Xin chúc mừng

Bạn đã huấn luyện lại mô hình bằng dữ liệu mới, tích hợp mô hình đó với ứng dụng Flutter và cập nhật chức năng để phát hiện các câu rác mới!

Tìm hiểu thêm