Tạo mô hình phân loại văn bản tùy chỉnh và cập nhật ứng dụng của bạn theo mô hình đó

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. Mô hình này được xây dựng từ tập dữ liệu bình luận rác ban đầu trên blog, nhưng nâng cao bằng các nhận xét của riêng bạn. Nhờ đó, bạn có thể có một mô hình xử lý 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 trong lộ trình Bắt đầu sử dụng phân loại văn bản trên thiết bị di động. Các lớp học lập trình trong lộ trình này theo tuần tự. Ứng dụng và mô hình mà bạn sẽ xử lý phải được xây dựng trước đó, trong khi bạn đang theo dõi lộ trình đầu tiên. 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à tiếp tục ngay:

  • Tạo ứng dụng nhắn tin cơ bản
  • Xây dựng mô hình học máy về bình luận rác
  • Cập nhật ứng dụng của bạn để sử dụng mô hình Học máy lọc thư 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 đã xây dựng trong lộ trình Bắt đầu sử dụng phân loại văn bản trên thiết bị di động
  • Cách tuỳ chỉnh mô hình để chặn những nội dung rác phổ biến nhất trong ứng dụng

Bạn cần có

  • Ứng dụng nhắn tin và mô hình 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. Cải thiện khả năng phân loại văn bản

Bạn có thể lấy mã cho việc này bằng cách sao chép kho lưu trữ này rồi tải ứng dụng từ TextClassificationStep2. Bạn có thể tìm thấy mã này trong đường dẫn TextClassificationOnMobile->Android.

Bạn cũng có thể sử dụng mã finished dưới dạng TextClassificationStep3.

Nếu bạn mở ứng dụng nhắn tin mà bạn đã tạo và thử tin nhắn này, ứng dụng sẽ cho điểm thư rác rất thấp:

f111e21903d6fd1f.png

Lỗi chính tả như thế này là một cách phổ biến để tránh bộ lọc thư rác. Và mặc dù thư không có hại, nhưng những kẻ gửi thư rác thường sẽ thêm một đường liên kết vào mã nhận dạng người dùng (thay vì thêm một đường liên kết vào chính thư, trong đó việc có một đường liên kết có thể kích hoạt bộ lọc).

Trong phòng thí nghiệm này, bạn sẽ tìm hiểu cách cập nhật mô hình bằng dữ liệu mới. Khi bạn hoàn tất, việc chạy với cùng một câu sẽ cho ra kết quả như bên dưới, trong đó thư này được xác định là spam!

c96613a0a4d1fef0.png

3. Chỉnh sửa tệp CSV của bạn

Để huấn luyện mô hình ban đầu, một tập dữ liệu đã được tạo 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à bình luận rác hoặc không phải bình luận rác. (Mở tệp CSV trong bất kỳ trình chỉnh sửa văn bản nào nếu bạn muốn kiểm tra.)

Cấu trúc của tệp CSV là hàng đầu tiên mô tả các cột – ở đây các cột được gắn nhãn commenttextspam.

Mọi hàng tiếp theo đều tuân theo định dạng sau:

64c0128548e1d082.pngS

Nhãn bên phải là đúng cho spam và false cho không phải spam. Trong trường hợp này, dòng 3 được coi là thư rác.

Để thêm nhận xét của riêng bạn, chẳng hạn như nếu bạn có nhiều người spam trang web của mình bằng các thông báo về giao dịch trực tuyến, bạn chỉ cần thêm các ví dụ về nhận xét spam ở 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

Khi bạn hoàn tất, hãy lưu tệp bằng tên mới (ví dụ: lmblog_comments.csv) và bạn sẽ có thể sử dụng tệp này để huấn luyện 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ụ do Google Cloud Storage cung cấp, chỉnh sửa và lưu trữ cùng với nội dung cập nhật về giao dịch trực tuyến. Bạn có thể thay đổi URL trong mã nếu muốn sử dụng tập dữ liệu của riêng mình!

4. Đào tạo 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ã trước đó (SpamCommentsModelMaker.ipynb), nhưng hãy trỏ mã này vào tập dữ liệu CSV mới có tên là lmblog_comments_extras.csv. Nếu muốn xem sổ tay đầy đủ với nội dung cập nhật, bạn có thể tìm trong sổ tay SpamCommentsUpdateModelMaker.ipynb.

Nếu có quyền truy cập vào Google Colab, bạn có thể chạy ứng dụng đó trực tiếp tại đây, hoặc lấy mã từ kho lưu trữ và chạy mã đó trong môi trường mà bạn chọn của sổ tay.

Dưới đây là mã đã cập nhật:

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 mô hình vẫn sẽ huấn luyện đến mức độ chính xác cao:

8886033d1f8161c.png.

Đọc sổ tay để tải các tệp mô hình, từ vựngnhãn xuống. Ở bước tiếp theo, bạn sẽ tích hợp những công cụ này trong Android.

5. Cập nhật ứng dụng Android

  1. Mở ứng dụng trong Android Studio và đảm bảo bạn chọn Android ở đầu trình khám phá dự án.
  2. Tìm tệp assets có chứa các nhãn, mô hình và từ vựng trong phiên bản cũ của tệp mô hình.

91116524e9016ed4.pngs

  1. Nhấp chuột phải vào thư mục thành phần.
  2. Trong trình đơn, hãy chọn lựa chọn mở thư mục bằng trình quản lý tệp của hệ điều hành. (Hiển thị trong Finder trên máy Mac, như minh hoạ. Mục này sẽ là Show in Explorer (Hiển thị trong Explorer) trên Windows và Open in Files (Mở trong tệp) hoặc tương tự trên Linux.)

25f63f9629657e85.pngs

  1. Thao tác này sẽ mở thư mục có chứa mô hình, từ vựng và nhãn trong trình quản lý tệp của hệ điều hành. Sao chép tệp mới mà bạn đã tạo ở bước trước sang các tệp này.

Bạn không cần phải thay đổi mã trong ứng dụng của mình. Chạy và thử nghiệm, bạn sẽ thấy các kết quả như các kết quả ở trên, trong đó mô hình đã được cải thiện để phát hiện "giao dịch trực tuyến" trường hợp văn bản.

Phiên bản đã hoàn tất của mã có sẵn trong kho lưu trữ dưới dạng TextClassesStep3.

6. Cập nhật ứng dụng iOS của bạn

Bạn có thể lấy mã cho việc này bằng cách sao chép kho lưu trữ này rồi tải ứng dụng từ TextClassificationStep2. Bạn có thể tìm thấy mã này trong đường dẫn TextClassificationOnMobile->Android.

Bạn cũng có thể sử dụng mã finished dưới dạng TextClassificationStep3.

Nếu đã tham gia lớp học lập trình trước, bạn sẽ có phiên bản Text pinStep2 cho iOS hoạt động với mô hình cơ sở. Nếu muốn bắt đầu lại từ phiên bản hiện có, bạn chỉ cần lấy một tệp đó trong kho lưu trữ. Tính năng này hoạt động với mô hình đầu tiên đã được huấn luyện dựa trên dữ liệu bình luận rác. Có thể bạn sẽ thấy các kết quả như sau:

553b845565b5b822.pngS

Việc cập nhật ứng dụng để sử dụng mô hình mới của bạn thực sự đơn giản. Cách dễ nhất là chỉ cần chuyển đến trình khám phá tệp, tải các phiên bản mới của model.tflite, vocablabels.txt rồi sao chép chúng vào thư mục dự án.

Sau khi bạn hoàn tất việc này, ứng dụng của bạn sẽ hoạt động với mô hình mới và bạn có thể dùng thử. Dưới đây là ví dụ về cùng một câu, nhưng sử dụng mô hình mới:

9031ec260b1857a3.pngS

7. Xin chúc mừng

Vậy là xong! Bằng cách huấn luyện lại mô hình này bằng dữ liệu mới và thêm dữ liệu đó vào cả ứng dụng Android và iOS, bạn đã có thể cập nhật chức năng của mô hình mà không cần viết mã mới!

Các bước tiếp theo

Mô hình này chỉ là một mô hình đồ chơi và chỉ được huấn luyện dựa trên 1.000 mục dữ liệu.

Khi khám phá xử lý ngôn ngữ tự nhiên, bạn có thể muốn làm việc với các tập dữ liệu lớn hơn. Bạn cũng có thể thiết lập một quy trình huấn luyện liên tục. Nhờ đó, khi có dữ liệu mới và bị gắn cờ là nội dung rác, hệ thống có thể tự động huấn luyện lại mô hình trên một phần phụ trợ, rồi triển khai mô hình đó bằng tính năng Lưu trữ mô hình Firebase.

Người dùng của bạn sẽ nhận được mô hình cập nhật một cách liền mạch mà không cần phải sao chép và dán mô hình đó dưới dạng thành phần, biên dịch lại và phân phối lại. Ví dụ: bạn cũng có thể sử dụng Cấu hình từ xa Firebase để quản lý giá trị ngưỡng gửi thư rác, thay vì 0.8 như hiện tại.

Có rất nhiều khả năng nên chúng ta sẽ tìm hiểu về những chủ đề này trong các lớp học lập trình sau này trong khoá học này!