NLP: Roman Romanization sử dụng Seq2Seq

Tram Ho

Giới thiệu

Trong bài viết trước của chúng tôi, chúng tôi đã triển khai và ứng dụng để chuyển đổi từ tiếng Khmer sang tiếng La Mã bằng cách viết logic từ đầu theo giấy đã cho vì chúng tôi không có đủ dữ liệu để áp dụng tìm hiểu sâu cho vấn đề này. Tuy nhiên, chúng tôi nhận thấy rằng trong bản dịch của Google, họ cũng chuyển đổi từ tiếng Khmer sang tiếng La Mã. Do đó, chúng ta có thể dễ dàng sử dụng danh sách các từ tiếng Khmer trong bài viết trước của chúng tôi để có được danh sách La Mã hóa. Sau đó, chúng ta có thể sử dụng những dữ liệu này để đào tạo mô hình của mình để chuyển đổi từ tiếng Khmer sang tiếng La Mã.

Kế hoạch tấn công

Có nhiều máy học thuật toán mà chúng ta có thể sử dụng để giải quyết vấn đề của mình. Vì, vấn đề của chúng tôi là triển khai một mô hình để dịch từ tiếng Khmer sang tiếng La Mã, một thuật toán hạt rất nổi bật về vấn đề này. Đó là kiến ​​trúc Seq2Seq. Mô hình Seq2Seq là mô hình lấy một chuỗi đầu vào (từ, chữ cái, chuỗi thời gian, v.v.) và đưa ra chuỗi kết quả khác. Mô hình này đã đạt được rất nhiều thành công trong các nhiệm vụ như dịch máy, tóm tắt văn bản và chú thích hình ảnh. Google Dịch bắt đầu sử dụng một mô hình như vậy trong sản xuất vào cuối năm 2016. Hơn nữa, chúng tôi cũng đã sử dụng mô hình này để triển khai bài viết của mình về chatbot .

Thực hiện

Đối với thử nghiệm này, chúng tôi đang sử dụng Keras để phát triển mô hình Seq2Seq của chúng tôi. May mắn thay, Keras cũng có một hướng dẫn về xây dựng một mô hình để dịch tiếng Anh sang tiếng Pháp. Thay vào đó, chúng tôi sẽ sửa đổi các mã đó để dịch từ tiếng Khmer sang tiếng La Mã. Nếu không hiểu mã của tôi, bạn có thể kiểm tra mã gốc để được giải thích thêm tại đây .

Đầu tiên, chúng tôi nhập các gói cần thiết:

Sau đó, chúng tôi tải dữ liệu vào bộ nhớ bằng gấu trúc:

Khi dữ liệu được tải, chúng ta cần xóa chúng và tách nó thành ký tự riêng lẻ:

Tiếp theo, chúng tôi khởi tạo mảng cho chuỗi đầu vào và đầu ra dựa trên chiều dài tối đa của dữ liệu mẫu đầu vào và đầu ra.

Sau đó, chúng tôi mã hóa / giải mã dữ liệu đầu vào và đầu ra trước khi chuyển nó vào mô hình của chúng tôi:

Sử dụng Keras chúng ta có thể xây dựng một seq2seq một cách dễ dàng:

Sau đó, chúng ta có thể bắt đầu đào tạo mô hình của mình:

Và đừng quên lưu mô hình được đào tạo của chúng tôi nếu bạn không thử lại lần nữa:

Kiểm tra

Sau khi đào tạo hoàn tất, bây giờ chúng tôi có thể kiểm tra mô hình của chúng tôi và kiểm tra kết quả:

Hãy chạy nó.

Dựa trên kết quả, có vẻ như mô hình của chúng tôi đã bị lỗi thời. Vì vậy, đến lượt bạn cải thiện mô hình này để làm cho nó tuyệt vời hơn.

Tài nguyên

Cái gì tiếp theo?

Trong bài viết, chúng tôi đã học cách chuẩn bị dữ liệu văn bản của mình và chúng tôi tạo mô hình sẽ lấy dữ liệu chúng tôi xử lý và sử dụng nó để đào tạo dịch từ tiếng Khmer sang tiếng La Mã. Chúng tôi đã sử dụng một kiến ​​trúc gọi là (seq2seq) hoặc (Bộ giải mã mã hóa), Nó phù hợp để giải quyết vấn đề tuần tự. Trong trường hợp của chúng tôi, chuỗi đầu vào là các từ tiếng Khmer và chuỗi ra ngoài của chúng tôi là từ La Mã trong đó độ dài của nó là khác nhau. Tuy nhiên, mô hình của chúng tôi chưa tạo ra dự đoán tốt và đến lượt bạn cải thiện mô hình này để cạnh tranh với google.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo