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ờ:
- Huấn luyện mô hình phát hiện bình luận rác bằng lớp học lập trình Trình tạo mô hình TensorFlow Lite
- Lớp học lập trình về cách tạo ứng dụng Flutter để phát hiện bình luận rác
Kiến thức bạn sẽ học được
- Cách cập nhật mô hình phân loại văn bản mà bạn đã tạo trong Lớp học lập trình về cách huấn luyện mô hình phát hiện bình luận rác bằng Trình tạo mô hình TensorFlow Lite.
- Cách tuỳ chỉnh mô hình để chặn nội dung rác phổ biến nhất trong ứng dụng của bạn.
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
- 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
. - 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.
Ứ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!
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 commenttext
và spam
. Mọi hàng tiếp theo đều tuân theo định dạng này:
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:
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
- 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
- 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ếninputTensorName
vàoutTensorName
:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
- Chỉ định lại biến
inputTensorName
cho giá trị "input_1'
và biếnoutputTensorName
cho giá trị'dense_1'
:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
- Sao chép tệp
vocab.txt
mà bạn đã tải xuống vào thư mụclib/assets/
để thay thế tệp hiện có. - Xoá ứng dụng Text Classification Flutter theo cách thủ công khỏi trình mô phỏng Android.
- Chạy lệnh
'flutter run'
trong dòng lệnh để khởi chạy ứng dụng. - 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!