Tăng cường dữ liệu (data augmentation) là kỹ thuật giúp tăng kích thước của tập dữ liệu huấn luyện bằng cách tạo ra các phiên bản khác nhau của bộ dữ liệu thực mà không cần thiết phải thu thập thêm dữ liệu.
Kỹ thuật này được sử dụng trong Xử lý ngôn ngữ tự nhiên và thị giác máy tính nhằm giải quyết tình trạng khan hiếm dữ liệu và không đủ đa dạng dữ liệu. Đối với thị giác máy tính, sẽ tương đối dễ dàng để tạo ra các hình ảnh tăng cường, nhưng điều tương tự không xảy ra với xử lý ngôn ngữ tự nhiên do tính phức tạp vốn có trong ngôn ngữ.
Vậy làm thế nào để tăng cường dữ liệu văn bản trong NLP?
FriData tuần này sẽ gợi mở các kỹ thuật giúp bạn tạo ra dữ liệu văn bản tăng cường, từ đó cải thiện hiệu suất của mô hình. Chú ý, các kỹ thuật tăng cường dữ liệu được áp dụng theo bốn cấp độ: ký tự, từ, cụm từ, tài liệu.
Các kỹ thuật tăng cường dữ liệu văn bản. Nguồn ảnh: analyticsvidhya.
Easy Data Augmentation (EDA)
Trong kỹ thuật này, một từ được chọn ngẫu nhiên và được thay thế bằng từ đồng nghĩa hoặc hai từ được chọn hoán đổi vị trí cho nhau. Các kỹ thuật EDA bao gồm:
- Thay thế từ đồng nghĩa (Synonym replacement)
- Thay thế dựa trên embedding của từ (Word Embedding based Replacement): Có thể sử dụng mô hình nhúng từ được huấn luyện trước như GloVe, Word2Vec, fastText để tìm các vectơ gần nhất với vectơ biểu diễn của từ cần thay thế trên không gian ngữ nghĩa (semantic space). Các từ có véc-tơ biểu diễn càng gần nhau thì có độ tương đồng về mặt ngữ pháp trong câu nói càng lớn. Chúng ta có thể tận dụng đặc điểm này để thay thế một số từ hoặc cụm từ ở câu gốc.
- Thay thế dựa trên từ vựng: Wordnet là một cơ sở dữ liệu từ vựng cho tiếng Anh bao gồm nghĩa của từ, từ trái nghĩa, các quan hệ ngữ nghĩa khác, v.v. Wordnet có thể được sử dụng để tìm từ đồng nghĩa cho token/từ mong muốn từ câu gốc cần được thay thế. NLTK, Spacy là các thư viện NLP viết bằng python có thể được sử dụng để tìm và thay thế các từ đồng nghĩa từ câu gốc.
Backtranslation
Backtranslation là kỹ thuật ở đó một câu được dịch sang ngôn ngữ khác và sau đó tiếp tục dịch câu mới về ngôn ngữ gốc. Vì vậy, các câu khác nhau sẽ được tạo ra.
Nguồn ảnh: Amit Chaudhary “Back Translation for Text Augmentation with Google Sheets”
Generative Models
Mô hình sinh GAN là một kiến trúc học sâu bao gồm hai mạng nơ-ron cạnh tranh với nhau để sinh ra các ví dụ mới giống với dữ liệu thật. Một mạng được gọi là bộ sinh (generator), nhận đầu vào là các câu văn ngẫu nhiên và tạo ra dữ liệu giả. Mạng kia được gọi là bộ phân biệt (discriminator), nhận đầu vào là dữ liệu thật hoặc giả và cố gắng phân biệt chúng.
Để sinh các câu văn có tính tương đồng với tập dữ liệu tham chiếu bạn cần xây dựng và huấn luyện hai mạng nơ-ron để chúng có thể học được phân phối của tập dữ liệu và tạo ra các văn bản mới.
Thực hành tăng cường dữ liệu văn bản với TextAttack
TextAttack là một Python framework được sử dụng cho adversarial attacks (tấn công học máy đối nghịch), adversarial training (đào tạo mạng đối nghịch) và tăng cường dữ liệu trong NLP. Trong bài viết này, ta sẽ chỉ tập trung vào tăng cường dữ liệu văn bản.
Lớp textattack.Augmenter trong texattack cung cấp sáu phương thức khác nhau để tăng cường dữ liệu.
1) WordNetAugmenter
WordNetAugmenter tăng cường văn bản bằng cách thay thế các từ bằng từ đồng nghĩa do WordNet cung cấp.
Ví dụ:
Đầu ra: [‘start each day with positive thoughts and induce your day’]
2) EmbeddingAugmenter
EmbeddingAugmenter tăng cường văn bản theo cách thay thế các từ bằng neighbors trong không gian counter-fitted embedding, với một ràng buộc để đảm bảo độ tương tự cosin của chúng ít nhất là 0,8.
Ví dụ:
Đầu ra: [‘start each day with positive idea and make your day’]
3) CharSwapAugmenter
CharSwapAugmenter tăng cường văn bản bằng cách thay thế, xóa, chèn và hoán đổi các ký tự liền kề
Ví dụ:
Đầu ra: [‘start each day with positive thoughts and amke your day’]
4) EasyDataAugmenter
EDA tăng cường văn bản bằng cách kết hợp chèn, thay thế và xóa từ
Ví dụ:
Đầu ra: [‘start each day with positive thoughts make your day’,
‘start each day with positive thoughts and form your day’,
‘start each day with positive thoughts and make your daytime day’,
‘start make day with positive thoughts and each your day’‘]
5) CheckListAugmenter
CheckListAugmenter tăng cường văn bản bằng cách thu gọn/mở rộng và thay thế tên, vị trí và số.
Ví dụ:
Đầu ra: [‘start each day with positive thoughts and make your day’]
6) CLAREAugmenter
CLAREAugmenter tăng cường văn bản bằng cách thay thế, chèn và hợp nhất với masked language model được đào tạo trước.
Ví dụ:
Đầu ra: [‘start each day with positive thoughts and make your finest day’]
Kết luận
Tăng cường dữ liệu mang lại nhiều lợi ích như sau:
- Giảm chi phí thu thập và gán nhãn dữ liệu
- Cải thiện độ chính xác dự đoán của mô hình bằng cách
- Tăng kích thước dữ liệu đào tạo
- Giải quyết tình trạng khan hiếm dữ liệu cho các mô hình
- Giảm data overfitting và tạo ra sự phong phú trong dữ liệu
- Tăng khả năng khái quát hóa của các mô hình
- Giải quyết vấn đề mất cân bằng dữ liệu trong tác vụ phân loại
Bài viết cũng đã cung cấp kiến thức tổng quan về cách hoạt động của các kỹ thuật Tăng cường dữ liệu khác nhau và 6 công thức TextAttack cùng với ví dụ minh họa. Hãy lưu lại và thử nghiệm nhé!