Tạo mô hình phân loại văn bản tùy 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 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 blog-spam nhận xét ban đầu, nhưng đã được nâng cao với nhận xét 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 là một phần của Bắt đầu phân loại văn bản trong lộ trình ứng dụng Flutter. Các lớp học lập trình trong lộ trình này tuần tự. Ứng dụng và mô hình mà bạn sẽ làm việc trước đó phải được xây dựng 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 đây, vui lòng dừng lại và làm 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 dựa trên các hoạt động trước đó.

2. Phân loại văn bản nâng cao

  1. Bạn có thể lấy mã cho mã 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 bắt đầu cung cấp hình ảnh Docker phân phát TensorFlow, trong ứng dụng mà bạn xây dựng, hãy nhập buy my book to learn online trading rồi nhấp vào gRPC > Classify.

8f1e1974522f274d.png

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

2bd68691a26aa3da.png

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

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

Thành phần của tệp CSV phải 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 tuân theo định dạng này:

62025273971c9a7f.png

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

Nếu mọi người gửi nội dung không liên quan trên trang web của bạn kèm theo thông báo về giao dịch trực tuyến, bạn có thể thêm ví dụ về nhận xét vi phạm ở cuối trang web của mình. 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 với tên mới, chẳng hạn như lmblog_comments.csv, để bạn có thể sử dụng tệp để đào tạo một mô hình mới.

Đối với phần còn lại của lớp học lập trình này, bạn sử dụng ví dụ được cung cấp, chỉnh sửa và lưu trữ trên Cloud Storage với các bản cập nhật 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. Đào tạo lại mô hình bằng dữ liệu mới

Để đào tạo lại mô hình này, bạn chỉ cần sử dụng lại mã từ (SpamCommentsModelMaker.ipynb) nhưng trỏ đến mã đó vào tập dữ liệu CSV mới (có tên là lmblog_comments_extras.csv). Nếu muốn tạo toàn bộ sổ tay có nội dung đã 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ể khởi chạy trực tiếp. 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.

Mã được cập nhật sẽ trông giống như đoạn mã 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 đào tạo, bạn sẽ thấy rằng mô hình vẫn huấn luyện ở mức độ chính xác cao:

96a1547ddb6edf5b.png

Nén toàn bộ thư mục /mm_update_spam_savedmodel và hạ cấp tệp mm_update_spam_savedmodel.zip đã tạo.

# 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 của bạn

  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 đó rồi bắt đầu lại, nhưng thay thế trình 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ã bạn yêu thích, sau đó tìm phần xác định 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. Xóa thủ công ứng dụng Flutter phân loại văn bản khỏi trình mô phỏng Android.
  3. Chạy lệnh 'flutter run' trong thiết bị đầu cuố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 (Phân loại).

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

6. Xin chúc mừng

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

Tìm hiểu thêm