Bhasha thực hiện gán nhãn ngôn ngữ cho từng từ trong các văn bản đa ngôn ngữ (code-mixed) tại Ấn Độ. Kết quả thử nghiệm ghi nhận tiếng Tamil đạt điểm 0,87; trong khi dữ liệu bình luận do con người gán nhãn đạt 0,72.
Tác giả: Arun Prabhakaran · @LatentAILabs
Tóm tắt
Bhasha (arunp0/bhasha-lid-indic) là mô hình mã nguồn mở miễn phí, có khả năng gán nhãn ngôn ngữ cho từng từ trong văn bản, bao gồm: tiếng Hindi, Bengali, Tamil, Telugu, Marathi, Gujarati, Kannada, Malayalam, Punjabi, Urdu, Odia hoặc tiếng Anh, cùng tên riêng và các thành phần khác. Mô hình có thể nhận diện chữ cái Latinh, chữ viết bản địa và các văn bản kết hợp cả hai hệ chữ.
Hiện chưa ghi nhận mô hình cấp độ từ nào được cấp phép và phát hành dành cho tiếng Tamil, Malayalam hoặc Kannada La-tinh hóa pha trộn với tiếng Anh. Trên dữ liệu thực tế từ Yo
Bhasha gán nhãn ngôn ngữ cho từng từ trong văn bản trộn ngôn ngữ (code-mixed) tại Ấn Độ. Kết quả thử nghiệm ban đầu đạt điểm số 0,87 đối với tiếng Tamil; trong khi trên tập bình luận do con người gán nhãn, điểm số thực tế là 0,72.
Tác giả: Arun Prabhakaran · @LatentAILabs
Tóm tắt
Bhasha (arunp0/bhasha-lid-indic) là mô hình mã nguồn mở miễn phí, có chức năng gán nhãn ngôn ngữ cho từng từ trong văn bản: tiếng Hindi, Bengali, Tamil, Telugu, Marathi, Gujarati, Kannada, Malayalam, Punjabi, Urdu, Odia hoặc tiếng Anh, cùng với tên riêng và các thành phần khác. Mô hình có khả năng xử lý chữ cái Latinh, chữ viết bản địa và các văn bản kết hợp cả hai hệ thống chữ viết này.
Hiện chưa ghi nhận mô hình cấp độ từ nào được cấp phép và phát hành chính thức cho tiếng Tamil, Malayalam hoặc Kannada viết bằng chữ Latinh trộn lẫn với tiếng Anh. Trên các bình luận thực tế từ YouTube (được gán nhãn bằng LLM), những mô hình cấp độ từ tiếng Hindi/Bengali đã công bố đạt điểm từ 0,28 đến 0,44; các mô hình thử nghiệm khác đạt 0,64–0,79; trong khi Bhasha đạt 0,87–0,89.
Mô hình không đạt kết quả tối ưu trong mọi trường hợp: một mô hình tiếng Kannada từ nhiệm vụ chung (shared-task) năm 2022 đạt kết quả cao hơn Bhasha trên tập kiểm thử cùng chuỗi nhiệm vụ này (0,954 so với 0,903), dù Bhasha chiếm ưu thế trên các bình luận độc lập (0,888 so với 0,724).
Trên các tập dữ liệu do con người gán nhãn, mô hình đạt điểm macro-F1 từ 0,84 đến 0,90 đối với tiếng Kannada, 0,91–0,95 đối với tiếng Malayalam và 0,90 đối với cặp ngôn ngữ Hindi–Anh.
Tiếng Tamil là điểm hạn chế của mô hình: chỉ đạt 0,72 trên các bình luận do con người gán nhãn, dù tập kiểm thử tự xây dựng trước đó ghi nhận 0,87. Khoảng một phần ba số từ tiếng Tamil bị nhận diện nhầm thành tiếng Telugu. Cập nhật: phiên bản Bhasha v2 đã khắc phục vấn đề này, nâng điểm số lên 0,94.
Toàn bộ dữ liệu huấn luyện được tạo lập tự động bằng mã nguồn từ các văn bản công khai: không sử dụng nhãn thủ công và không có văn bản do LLM tạo. Mô hình áp dụng giấy phép Apache-2.0, quy mô 278 triệu tham số và có thể vận hành trên CPU.
Một phần bài viết được soạn thảo với sự hỗ trợ của các công cụ AI; mọi số liệu đều đã được đối chiếu kỹ lưỡng với thẻ mô hình (model card) và nhật ký đánh giá.
Vấn đề: một thông điệp, hai ngôn ngữ, một hệ chữ viết
Dưới đây là một bình luận giả định thường thấy dưới các đoạn giới thiệu phim tiếng Tamil:
“padam semma mass bro, second half konjam slow but climax vera level”Một nửa câu là tiếng Tamil, một nửa là tiếng Anh và toàn bộ được viết bằng ký tự Latinh. Nếu thay chủ đề điện ảnh bằng môn cricket, hiện tượng tương tự cũng xuất hiện ở tiếng Hinglish, Manglish (Malayalam) hoặc Kanglish (Kannada). Đây là cách soạn thảo phổ biến trên điện thoại của nhiều người dân Ấn Độ.
Phần lớn các công cụ nhận dạng ngôn ngữ (language-ID) chỉ cung cấp một nhãn duy nhất cho toàn bộ thông điệp. Phương pháp này phù hợp để điều hướng tổng thể văn bản, nhưng không đáp ứng được yêu cầu xác định cụ thể từng từ tiếng Tamil nhằm:
Chuyển từng từ đến đúng công cụ chuyển tự hoặc kiểm tra chính tả;
Lựa chọn đúng bộ tách từ (tokenizer) hoặc mô hình dịch thuật;
Đo lường mức độ trộn ngôn ngữ trong tập dữ liệu;
Lọc ngữ liệu theo ngôn ngữ khi một nửa số từ trong mỗi câu là tiếng Anh.
Hiện đã có các mô hình cấp độ từ hoạt động hiệu quả đối với tiếng Hinglish. Tuy nhiên, đối với tiếng Tamil, Malayalam và Kannada pha trộn tiếng Anh, quá trình khảo sát chỉ ghi nhận hai checkpoint có thể tải xuống nhưng đều không kèm giấy phép: mô hình đạt giải năm 2022 cho tiếng Kannada (dựa trên DistilBERT, phân loại từng từ đơn lẻ) và một mô hình tiếng Malayalam không có thẻ mô hình. Các mô hình mới hơn của MIT như MixLID chỉ hỗ trợ các ngôn ngữ này ở hệ chữ viết bản địa. Chưa có công cụ nào xử lý được tiếng Tamil viết bằng chữ Latinh, do đó mô hình này đã được phát triển. Tên gọi "Bhasha" có nghĩa đơn giản là "ngôn ngữ".
Mô hình vận hành tốt với tiếng Kannada và Malayalam. Tuy nhiên, kết quả xử lý tiếng Tamil mang lại phát hiện bất ngờ: trên tập bình luận do con người gán nhãn, Bhasha nhận diện nhầm khoảng một phần ba số từ tiếng Tamil thành tiếng Telugu, bao gồm toàn bộ các từ tiếng Tamil trong ví dụ nêu trên. Nội dung bài viết chủ yếu phân tích nguyên nhân phát hiện ra vấn đề này và lý do tập kiểm thử ban đầu không ghi nhận sai sót.
Đây là mô hình thứ tư trong bộ công cụ mở dành cho các ngôn ngữ Ấn Độ, tiếp sau Yama (phân loại zero-shot), Chitragupta (phát hiện thông tin nhận dạng cá nhân - PII) và Nandi (điều hướng khiếu nại).
Kết quả trả về của Bhasha
# pip install transformers torch huggingface_hub
import os, sys
from huggingface_hub import hf_hub_download
sys.path.insert(0, os.path.dirname(hf_hub_download("arunp0/bhasha-lid-indic", "lid_wrapper.py")))
from lid_wrapper import LID
lid = LID("arunp0/bhasha-lid-indic")
lid("ನಾಳೆ meeting ಇದೆ")
# {'words': [('ನಾಳೆ', 'kn'), ('meeting', 'en'), ('ಇದೆ', 'kn')],
# 'main': 'kn', 'script': 'mixed', 'mixed': True, 'share': {'kn': 0.667, 'en': 0.333}}
lid("bro naan nalaiku office varala", langs=["ta"]) # xác định trước văn bản gồm tiếng Tamil + tiếng Anh
# {'words': [('bro', 'en'), ('naan', 'ta'), ('nalaiku', 'ta'), ('office', 'en'), ('varala', 'ta')], 'main': 'ta', ...}Bên cạnh nhãn định danh cho từng từ, mô hình cung cấp phần tóm tắt văn bản: ngôn ngữ chính, hệ chữ viết (bản địa, Latinh hóa hoặc hỗn hợp), xác định văn bản có trộn ngôn ngữ hay không và tỷ lệ của từng ngôn ngữ. Tiếng Hindi và tiếng Urdu khi Latinh hóa thường có các từ tương tự nhau; do đó, khi không thể phân biệt, mô hình sẽ trả về kết quả hi/ur thay vì phỏng đoán.
Tham số langs đóng vai trò quan trọng, và phần phân tích tiếng Tamil sẽ giải thích rõ điều này. Người dùng nên cung cấp tham số này nếu đã xác định được cặp ngôn ngữ trong văn bản.
Dữ liệu huấn luyện: 1,65 triệu câu, được trộn bằng mã nguồn
Do chưa có ngữ liệu trộn ngôn ngữ (code-mixed) nào được dán nhãn theo từng từ và có giấy phép mở cho các ngôn ngữ này, toàn bộ các dòng dữ liệu huấn luyện đều được tạo bằng mã nguồn:
Bắt đầu từ các câu bản địa thực tế. Bộ dữ liệu IndicCorp v2 (giấy phép CC0) có văn bản báo chí và mạng Internet bằng cả 11 ngôn ngữ và tiếng Anh.
Latinh hóa theo cách người dùng gõ phím. Với mỗi từ bản địa, mã nguồn lựa chọn cách viết chữ Latinh từ Aksharantar (giấy phép CC-BY), mô hình chuyển tự IndicXlit (giấy phép MIT) cùng các quy tắc đơn giản, có tính trọng số dựa trên tần suất xuất hiện của từng cách viết trong văn bản Latinh hóa thực tế trên mạng (thống kê số lượng từ của FineWeb-2). Do đó, từ "नहीं" phần lớn được chuyển thành "nahi", và đôi khi thành "nahin" hoặc "nhi".
Trộn tiếng Anh vào câu. Mã nguồn chèn các đoạn tiếng Anh có độ dài 1-6 từ vào câu và ghi nhận ngôn ngữ của từng từ; nhờ vậy, toàn bộ nhãn ngôn ngữ đều do mã nguồn thiết lập, không phải phỏng đoán. (Các nhãn tên riêng và từ mượn tiếng Anh áp dụng các quy tắc đơn giản nên độ chính xác thấp hơn.)
Bổ sung các yếu tố gây nhiễu. Bổ sung tên riêng từ Wikidata, biểu tượng cảm xúc (emoji), lượt nhắc (@mentions), chữ số, từ kéo dài ("superrr"), từ giản lược nguyên âm ("nhi"), chữ hoa ngẫu nhiên và các từ dùng hệ chữ bản địa xen lẫn trong văn bản Latinh.
Kết quả tạo ra 1,65 triệu dòng dữ liệu thuộc 11 ngôn ngữ: Latinh hóa, trộn ngôn ngữ, bản địa, bản địa trộn ngôn ngữ, hỗn hợp hệ chữ viết và tiếng Anh thuần túy. Không có dòng dữ liệu huấn luyện nào trùng lặp với tập đánh giá (hai câu kiểm thử dùng hệ chữ bản địa trùng với dữ liệu huấn luyện đã được loại bỏ khỏi bài đánh giá đó); kết quả rà soát sau đó cũng cho thấy không có sự trùng lặp với các tập dữ liệu do con người dán nhãn. Tiếp đó, mô hình XLM-RoBERTa-base được tinh chỉnh trong một epoch, mất khoảng một giờ trên một GPU L4.
Dữ liệu huấn luyện hoàn toàn không có nhãn thủ công và không có văn bản do LLM tạo ra. Điều này bảo đảm tính pháp lý của giấy phép mở, song cũng có hạn chế: toàn bộ văn bản tiếng Ấn Độ ban đầu đều xuất phát từ báo chí và nội dung trên mạng. Điều này c
Nguồn tin: Medium Towards AI — Tác giả: Latent AI Labs. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.