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ờ:
- Đào tạo mô hình phát hiện bình luận không liên quan bằng lớp học lập trình TensorFlow Lite Maker Maker
- Tạo một ứng dụng Flutter để phát hiện lớp học lập trình về bình luận không liên quan
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 đã xây dựng trong Đào tạo mô hình phát hiện bình luận không liên quan bằng mã lớp học của Trình tạo mô hình TensorFlow Lite.
- Cách tùy chỉnh mô hình để chặn mô hình vi phạm 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 dựa trên các hoạt động trước đó.
2. Phân loại văn bản nâng cao
- 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
. - 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.
Ứ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!
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 commenttext
và spam
. Mỗi hàng tiếp theo tuân theo định dạng này:
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:
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
- 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
- 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ế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ó. - 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.
- Chạy lệnh
'flutter run'
trong thiết bị đầu cuố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 (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!