Có thể tóm lược gồm những công đoạn sau. Các công đoạn này bạn làm càng đẹp càng tốt. Và các công đoạn sau sẽ đỡ mất công sức:

– Xem từ đó có phải là ĐÚNG trong từ điển 73K từ Việt chuẩn ko: Cái này cứ lấy bản từ điển ra duyệt qua.
– Xem từ đó có dấu không -> có một bạn đã làm việc này. Nhưng thú thật trong quá trình đọc hiểu. Nếu không có dấu, có khi có chữ mà ng Việt còn không hiểu, huống chi máy học. Nên bỏ qua loại này.
– Tách câu theo pattern: từ đoạn văn, tách ra câu: có thể có kiểu (.) hoặc …. tùy các bạn định nghĩa
– Bỏ teencode, emotion: cái này thì cứ mảng mà duyệt. Tát nhiên phải định nghĩa một từ điển thế nào là icon, emotion
– Bỏ shortword, slang word, teencode, chữ viết tắt, chữ kiểu blogging: cái này thì mình giới thiệu dưới đây theo cách duyệt từ điển của cây nhi phân Patrick Tree kèm BiGram và TriGram. Mình nghĩ là nhanh: cỡ 28s cho ~1600 câu (ko rõ như thế nhanh hay chậm). Tất nhiên bạn phải định nghĩa từ điển theo cấu trúc Patrick Trie, cho việc duyệt cây cho nhanh.
– Chuyển các số thành “NUMBER”
– Chuyển chuỗi “http” và liên đới sau nó, thành “WEBSITE”
– Bỏ dấu chấm cuối câu
– Đưa sang Parquet, map với 4 coogn đoạn trên.

Vì các công đoạn trên cũng ít mấy ai share kinh nghiệm. Xong có vài bài viết của các kỹ sư khá hay:

– Kết hợp Pos Bigram và Ngữ Bigram: https://www.researchgate.net/publication/282937386_Using_Large_N-gram_for_Vietnamese_Spell_Checking
– Tìm trị quan hệ Ngram:  https://vntelecom.org/diendan/attachment.php?attachmentid=2024

Và 4 công đoạn cuối có rất nhiều bài viết cũng như bài nói về cách làm, cụ thể:
– https://github.com/vncorenlp/VnCoreNLP

Về cách áp dụng NLP preprocessing slang word, teencode, shortword, theo cây nhị phân Patrick Trie xử như sau:

1. Tạo một từ điển duyệt theo cây nhị phân Patrick Trie, để mục tiêu tìm cụm từ liên quan nhanh và ko phải lúc nào cũng duyệt cả từ điển (xem ảnh). ví dụ:
sn,0,1,sn năm, sinh nhật năm,
sn,0,1,sn bao,sinh năm bao,
sn,1,0,mừng sn,mừng sinh nhật,
dc,0,0,dc, được,
đk,1,1,thì đk nhé,thì đăng ký nhé,
đk,1,0,gồm đk, gồm điều kiện,
đk,1,0,các đk, các đăng ký,

(một chút về cách tổ chức dữ liệu Patricia Trie trong blockchain: https://github.com/ethereum/wiki/wiki/Patricia-Tree)

2. Tạo loop duyệt cây (như ảnh), giải thích:
(có thể tham khảo từ điển 73K từ để bao phủ nhánh con của từ tắt)
– step 1: Duyệt cây để tìm lớp root, cột 0
– step 2: Lấy số lượng nhánh trên và nhánh dưới theo từ điển, cột 1, 2
– step 3: duyệt nhánh trên, duyệt BiGram và TriGram (2-3 từ trong từ điển) so sánh với cột 5 là kết quả
– step 4: duyệt nhánh dưới, duyệt BiGram và TriGram (2-3 từ trong từ điển) so sánh với cột 5 là kết quả

Comments

comments