Closed rain1024 closed 1 year ago
1/ Với TV có lẽ cần bước tiền xử lý các âm tiết trước khi cho vào bộ wordpiece (của BERT). vì nhiều khi mình có nhiều cách bỏ dấu khác nhau và mã hóa (unicode) khác nhau. Nên chuẩn hoá về 1 dạng trước
2/ Giả sử tập huấn luyện chỉ toàn âm tiết tiếng Việt thì mình tìm hiểu các cách bẻ âm tiết thanh các đơn vị nhỏ hơn anh nghĩ là bài toán thú vị, vì lúc đó wordpiece (BPE based) sẽ ko còn nhiều giá trị (bởi dùng BPE để handle OOV mà tập âm tiết TV hầu như ko đổi - ko có OOV).
ví dụ nhé: nếu áp dụng BPE thì "á, à, ả, ã, ạ” là 5 symbols khác nhau hoàn toàn nhưng với tiếng Việt chúng có điểm chung: là nguyên âm a
kết hợp với thanh điệu
(tone). Và trong trường hợp viết ko dấu, gõ nhầm dấu thì việc giữ lại thể hiện nguyên âm + thanh điệu
sẽ giúp máy tận dụng nguyên âm và sửa sai tốt hơn.
Kiểu như: Hà Lán
, mà BPE bước 1 thì thành H à L á n
, convert theo biểu diễn Telex thành Haf LAns
chẳng hạn thì BPE bước 1 sẽ thành H a f L a n s
... tức là ta có symbols f và s
để biểu diễn thanh điệu.
Ta có thể dùng bất kỳ cách biểu diễn nào miễn nó có lợi nhất
cho tiếng Việt, Telex, VIQR, IPA hoặc tự nghĩ ra 1 cách riêng dễ nhớ, dễ dùng hơn ...
@tiendung
Với TV có lẽ cần bước tiền xử lý các âm tiết trước khi cho vào bộ wordpiece (của BERT). vì nhiều khi mình có nhiều cách bỏ dấu khác nhau và mã hóa (unicode) khác nhau. Nên chuẩn hoá về 1 dạng trước
Cái này em cũng đang làm một bộ chuẩn hoá, anh xem thử xem okie không nhé
pip install underthesea==1.3.5a3
Run text_normalize
>>> from underthesea import text_normalize
>>> text_normalize('Ðảm baỏ chất lựơng phòng thí nghịêm hoá học')
'Đảm bảo chất lượng phòng thí nghiệm hóa học'
Giả sử tập huấn luyện chỉ toàn âm tiết tiếng Việt thì mình tìm hiểu các cách bẻ âm tiết thanh các đơn vị nhỏ hơn anh nghĩ là bài toán thú vị, vì lúc đó wordpiece (BPE based) sẽ ko còn nhiều giá trị.
Cái này có gì benchmark được không anh nhỉ?
>>> from underthesea import text_normalize >>> text_normalize('Ðảm baỏ chất lựơng phòng thí nghịêm hoá học') 'Đảm bảo chất lượng phòng thí nghiệm hóa học'
Cool :)
Giả sử tập huấn luyện chỉ toàn âm tiết tiếng Việt thì mình tìm hiểu các cách bẻ âm tiết thanh các đơn vị nhỏ hơn anh nghĩ là bài toán thú vị, vì lúc đó wordpiece (BPE based) sẽ ko còn nhiều giá trị.
Cái này có gì benchmark được không anh nhỉ?
Được chứ bằng cách so sánh perf của BERT trên nhiều cách tknz khác nhau.
Tiếng Trung họ đã có thử nghiệm rồi Sub-Character Tokenization for Chinese Pretrained Language Models
Họ có thử nghiệm Char-based encoding
(tương đương với syllable-based trong tiếng Việt) vs Pronunciation-based encoding
(chữ tượng thanh) vs Glyph-based encoding
(nét chữ tượng hình).
Họ có thử nghiệm Char-based encoding (tương đương với syllable-based trong tiếng Việt) vs Pronunciation-based encoding (chữ tượng thanh) vs Glyph-based encoding (nét chữ tượng hình).
Kết quả thế nào anh nhỉ?
Kết quả thế nào anh nhỉ? more efficient and more robust.
more efficient: giảm số lượng tokens trong 1 câu, giúp tăng tốc huấn luyện ... more robust: chịu được typo tốt hơn ...
Em nên đọc hết paper để nắm được hết các khía cạnh thú vị. Ví dụ nhé:
1/ SubChar-Pinyin là biểu diễn dưới dạng phát âm, cho kq tốt nhất.
2/ Họ dùng sentence-piece để phân tách tokens nên các token vượt qua ranh giới từ (điểm khác biệt lớn với wordpiece). Trong hình trên phân tách kiểu sub-word có 12 tokens. Còn phân tách sub-char thì giảm còn 7 tokens.
3/ Trong SubChar-Pinyin, các con số khoanh tròn (1), (2), (3), (4) chính là thanh điệu. Họ để ở cuối âm tiết.
This issue was closed because it has been inactive for 7 days since being marked as stale.
Please feel free to reopen it if you need any further support.
Ideas for tokenizer improvement