Bài viết chuyên sâu

Kỹ thuật gia công dữ liệu text

Kỹ thuật gia công dữ liệu text

by Admin Dathoc -
Number of replies: 0

Đặt vấn đề

Dữ liệu thể hiện dưới dạng câu chữ, văn bản, log file, tracking … dưới định dạng text, đang dần trở nên vô cùng lớn đang được truyền tải trên các mạng viễn thông, internet sau mỗi giây thời gian, và việc các kỹ sư gia công muốn thu thập cũng như xử lý cần các hệ thống lớn, kiến trúc lớn để xử lý.


Các bài toán dự đoán, báo động, thông báo … dựa trên thông tin log, câu chữ, blog, chat… đã trở nên phổ biến vì nhiều cơ chế kiến trúc xử lý dữ liệu lớn đã hình thành và đáp ứng được phần nào.


Bài viết này mô tả các kiến thức cơ bản khi bạn mong muốn xử lý dữ liệu text, cần qua những bước cơ bản nào. Bạn cần sử dụng kỹ thuật gì. Các vai trò nào trong toàn bộ quy trình cần lưu tâm.

Quy trình xử lý

Preprocessing

p6YwYCFcJwJ8Ew7s2y4sX6xeyqZ40KNU2TLFgYwzzpKineU2Na0rEXXx9H8jJoPdxrBSbE9yko8oQ4_qT4c9UGWni-0tayzpvTuTVOTGqdFUlvJCJg3Ef2hQUrb37BCmyObl0z9S

Processing

F8iHvQqVX67A_1rtOx8vP0OtccJjlu9Y0CnGVFfQaI6IVkvnvCBYh9Fs0PLefXYsuZaAbbtlNRSXZGg2j-5vTjo9Sz60evAlG1PfCDCpLLCKRRkeMwx4g8c9le6UE2mlA5i0AnAi

Preprocessing

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:

1. 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. Tham khảo từ điển 73K từ: https://drive.google.com/file/d/14kJUQcUBSxZqDoyjaO_fM3fSWzwjnSlN/view?usp=sharing 

2. 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.

3. 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

4. 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

5. 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 nhị 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:

5a. 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)

iY7wMKtYDgoRZEU6W7eH9_YWIieXihfXQtWM_3bCQ030_P7vsMtS2XYm_rDMH2Sbr5e0QFSg3gsDwr41vR6raveX1bWRcHYHGll2Ch3nveockzM-Pdbn3A2llLQDoizstAXbc41x

5b. 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ả


Xem mã nguồn code duyệt cây kèm từ điển mẫu: https://1drv.ms/u/s!AoMt1NVPO04zg7YgvXZcrd2xJ79wjA?e=6rLLrl&fbclid=IwAR3iVOhOXWpuqPAZVFLtsmK6zzQHQ1yzNkeb8Avm5NlNxeU3xiY18e250Q0 


6. Chuyển các số thành "NUMBER"

7. Chuyển chuỗi "http" và liên đới sau nó, thành "WEBSITE"

8. Bỏ dấu chấm cuối câu

9. Đưa sang Parquet, map với 4 công đoạn trên.

10. Kết hợp Pos Bigram và Ngữ Bigram: file:///C:/Users/koolj/Documents/projects/vn_detecterror.pdf

11. Tìm trị quan hệ Ngram: http://repository.vnu.edu.vn/…/5215010371708351589350356123…

 

Nếu tìm các source VN trên mạng về nlp thì ko source nào hé ra từ điển cả, ví dụ: https://github.com/vncorenlp/VnCoreNLP 

Processing text, nlp

Segmentation: nhiệm vụ chính là tách một đoạn text (một chuỗi liên tiếp các ký tự) thành những từ (word hay token) riêng lẻ.


POS: là phân loại các từ trong một câu (danh từ, trạng từ, tính từ hay động từ, v.v..).


NER: xác định và phân loại các phần tử trong văn bản vào các danh mục được định nghĩa trước như tên người, tên tổ chức, địa điểm, giá trị tiền tệ, tỷ lệ phần trăm,…

Các công nghệ nổi trội hiện tại giải quyết vấn đề

Segmentation

Word segmentation - Phân đoạn từ

Phân đoạn từ là chia một chuỗi ngôn ngữ viết thành các từ thành phần của nó.


Trong tiếng Anh và nhiều ngôn ngữ khác sử dụng một số dạng của bảng chữ cái Latinh, khoảng trắng là một điều kiện tốt để chia từ (dấu phân cách từ), mặc dù khái niệm này có giới hạn vì ngữ pháp ngôn ngữ: có cái trừ trái sang phải, có cái từ phải sang trái; dưới lên, trên xuống. Nhiều danh từ ghép tiếng Anh được viết thay đổi và được hiểu nghĩa khác (ví dụ: ice box = ice-box = icebox; pig sty = pig-sty = pigsty) như cụm danh từ hay danh từ đơn; và lượng định mức loại từ được phân loại bởi từ điển lớn.


Tuy nhiên, không có phân đoạn từ thì đó là một vấn đề khó khăn. Các ngôn ngữ không có quy trình phân chia từ bao gồm tiếng Trung, tiếng Nhật, trong đó câu bị không phân định từ, tiếng Thái và tiếng Lào, các cụm từ và câu bị không phân định từ và tiếng Việt, các âm tiết bị lẫn nghĩa.


Tuy nhiên, trong một số hệ thống chữ viết, chẳng hạn như tập lệnh Ge'ez được sử dụng cho tiếng Amharic và Tigrinya trong số các ngôn ngữ khác, các từ được phân định rõ ràng (ít nhất là trong lịch sử) với một ký tự không phải khoảng trắng.


Có thể dùng Pip: https://pypi.org/project/wordsegmentation/

Hoặc Triangular Matrix: https://towardsdatascience.com/fast-word-segmentation-for-noisy-text-2c2c41f9e8da


Intent segmentation - Phân khúc chủ đạo

Là vấn đề phân chia các từ được viết thành các cụm từ khóa (2 hoặc nhiều nhóm từ).


Trong tiếng Anh và tất cả các ngôn ngữ khác, ý định hoặc mong muốn cốt lõi toàn câu, được xác định và trở thành nền tảng của Phân khúc chủ đạo cụm từ chính. Sản phẩm / dịch vụ cốt lõi, ý tưởng, hành động & hoặc suy nghĩ ở cụm từ khóa.


Ví dụ:

"[Tất cả mọi thứ được tạo ra từ các nguyên tử]. [Các hạt nhỏ chuyển động] [xung quanh trong chuyển động vĩnh viễn], [thu hút lẫn nhau] [khi chúng cách nhau một khoảng nhỏ], [nhưng đẩy lùi] [khi bị ép] [thành một khác]."


Có thể dùng SQuAD : https://github.com/deepmipt/DeepPavlov


Sentence segmentation - Phân đoạn câu

Phân đoạn câu là vấn đề chia một chuỗi ngôn ngữ viết thành các câu thành phần. Trong tiếng Anh và một số ngôn ngữ khác, sử dụng dấu câu, đặc biệt là ký tự dừng / dấu chấm. Tuy nhiên, ngay cả trong tiếng Anh, vấn đề này không phải là nhỏ do việc sử dụng ký tự chấm cho các từ viết tắt . Ví dụ, Mr. không phải là câu riêng của mình trong "Mr. Smith đã đi đến các cửa hàng ở Phố Jones". Khi xử lý văn bản thuần túy, các bảng viết tắt có chứa dấu chấm có thể giúp ngăn chặn việc gán ranh giới câu không chính xác.


Như với phân đoạn từ, không phải tất cả các ngôn ngữ viết đều chứa các ký tự dấu chấm câu rất hữu ích cho việc xấp xỉ các ranh giới câu.


Có thể dùng TF, IDF: https://github.com/deepmipt/DeepPavlov


Topic segmentation - Phân khúc chủ đề

Phân tích chủ đề bao gồm hai nhiệm vụ chính: xác định chủ đề và phân đoạn văn bản. Mặc dù đầu tiên là một phân loại đơn giản của một văn bản cụ thể, sau đó tài liệu có thể chứa nhiều chủ đề và nhiệm vụ của phân đoạn văn bản. Các ranh giới chủ đề có thể rõ ràng từ tiêu đề phần và đoạn văn. Trong các trường hợp khác, người ta cần sử dụng các kỹ thuật tương tự như các kỹ thuật được sử dụng trong phân loại chủ đạo.



POS

Cần từ điển đầy đủ phân cụm động từ danh từ, từ loại, ví dụ:

https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html


Gắn thẻ:

  • Lexical Based Methods : gắn nhãn POS mỗi từ theo dạng từ xuất hiện có tần suất cao nhất trong bộ dữ liệu.

  • Rule-Based Methods : gắn nhã POS dựa trên một quy tắc xác định. Ví dụ: trong tiếng anh, những từ có kết thúc bằng “ed” hoặc “ing” thường được gán là một động từ. Phương pháp Rule-Based Methods có thể kết hợp với phương pháp Lexical Based Methods để gắn nhãn những từ có trong bộ train nhưng không có trong bộ test.

  • Probabilistic Methods: Phương pháp dự theo xác suất. Phương pháp này gắn nhã POS dựa trên xác xuất xảy ra của một chuỗi nhãn cụ thể. Thuật toán Conditional Random Fields (CRFs) và Hidden Markov Models (HMMs) là hai phương pháp phổ biến nhất.

  • Deep Learning Methods: Sử dụng mạng nơ ron để gắn nhãn POS.


Một cách làm đơn giản với NLTK: 

https://www.nltk.org/book/ch05.html

https://medium.com/greyatom/learning-pos-tagging-chunking-in-nlp-85f7f811a8cb


Các thư viện mở:

http://nlpprogress.com/english/part-of-speech_tagging.html



NER

Nhận dạng ba loại thực thể định danh trong tiếng Việt được xác định tương thích với các loại thực thể được mô tả trong hệ thống NER của tiếng Anh và tiếng Đức.


Tên người (Person) gồm các loại tên sau:


- Tên, tên đệm và họ của một người: Nguyễn Văn A.

- Tên hiệu (biệt hiệu), bí danh (mật danh), biệt danh, v.v.

- Tên các nhân vật hư cấu: Ngọc Hoàng, Thiên Lôi, Sa Tăng, v.v.


Tên địa lí (Địa danh - Location) bao gồm các thực thể có toạ độ địa lí nhất định, ghi lại được trên bản đồ (trừ các địa danh tưởng tượng):


- Tên gọi các hành tinh: Mặt Trăng, Mặt Trời, Trái Đất, v.v.

- Tên gọi các thực thể mang yếu tố địa lí tự nhiên và địa lí lịch sử (quốc gia, vùng lãnh thổ, châu lục), các vùng quần cư (làng, thị trấn, thành phố, tỉnh, giáo khu, giáo xứ), v.v.

- Tên gọi các thực thể tự nhiên: đèo, núi, dãy núi, rừng, sông, suối, hồ, biển, vịnh, vũng, eo biển, đại dương, thung lũng, cao nguyên, đồng bằng, bãi biển, khu bảo tồn thiên nhiên, khu sinh thái, v.v.

- Tên gọi các thực thể là công trình xây dựng, công trình kiến trúc công cộng: cầu, đường, lâu đài, quảng trường, bảo tàng, trường học, nhà trẻ, thư viện, bệnh viện, nhà hát, nhà máy, v.v.

- Tên gọi địa điểm, địa chỉ thương mại: nhà hàng, khách sạn, hiệu thuốc, quán bar, v.v.


(xem thêm: http://www.vietlex.com/xu-li-ngon-ngu/152-NHAN_DANG_THUC_THE_DINH_DANH_TRONG_VAN_BAN_TIENG_VIET)


Dùng Spacy

https://towardsdatascience.com/named-entity-recognition-with-nltk-and-spacy-8c4a7d88e7da


Dùng Scikit-Learn

https://towardsdatascience.com/named-entity-recognition-and-classification-with-scikit-learn-f05372f07ba2

Các trở ngại khó khăn

Các công ty startup AI về text

  • Dịch ngôn ngữ chuyển đổi văn bản đang bị thách thức bởi các ông lớn Google, Microsoft, IBM

  • Tìm insight trong câu từ đang trở thành mục tiêu của kẻ xấu khi thâu tóm tiếng nói của dân mạng

  • Chatbot chuyên ngành, chuyên sâu một nghề lại hiếm

  • Chatbot bán nhiều, xong chưa thấy bán lẻ, giáo dục, y tế, cộng đồng sử dụng bằng Tiếng Việt: có những khó khăn trong xử lý Tiếng Việt vùng miền

Người mới làm: thực tập sinh

  • Rất sợ khi bị cho đi luyện chat với bot, vì công việc hết sức nhàm chán

  • Thu thập dữ liệu để chat, đôi khi bị negative: toàn câu thô tục, toàn câu negative và đưa và lịch sử training dẫn tới sai hướng trong training

Người làm có kinh nghiệm 1-2 năm:

  • Tạo những cơ sở tài nguyên riêng, xong không update hoặc tạo những tài nguyên mới theo xu thế, khiến kỹ thuật không cập nhật theo ngôn từ, câu nói, phong cách ứng xử mới

Ngành nghề cần kỹ sư, chuyên gia tại Việt Nam và Thế Giới

Nghề chuyển ngôn ngữ

  • Lương có thể lên 20-25 triệu. Thường là kỹ sư biết sâu về cơ chế chuyển đổi văn bản câu text trong ngành đặc thù, chuyển sang các ngôn ngữ khác

Nghề tìm insight trong dữ liệu text

  • Lương có thể lên 20-25 triệu. Thường là kỹ sư biết sâu về cơ chế thu thập dữ liệu trên mạng xã hội. Lưu chuyển đổi phân tích sentiment

Nghề training câu chữ chatbot cho chuyên ngành

  • Lương có thể lên 10-15 triệu. Công việc đơn giản

Nghề áp dụng và vận hành chatbot sang các tổ chức ngành nghề dịch vụ: bán lẻ, y tế, báo chí, giáo dục

  • Lương có thể lên 20-25 triệu. Thường là kỹ sư biết sâu về cơ chế chatbot thịnh hành RASA, WIT. Có thể tạo giao diện chat thân quen với người dùng. Tạo đầu cuối api tiện dụng cho câu chữ chat và voice.

Kết luận

Xử lý text, tìm sentiment, nlp luôn là đòi hỏi trong các ngành khai phá ý nghĩa của tài liệu học liệu, thông tin thu thập từ mạng xã hội. Mà tiên phong là các kỹ sư nlp text. Nhu cầu chuyển giọng nói thành văn bản và ngược lại cũng đang là cấp thiết cho các ứng dụng tự động, ứng dụng phản hồi, ứng dụng hỗ trợ khách hàng, ứng dụng trong y khoa trị liệu. Vậy với kỹ sư công nghệ thông tin, việc trang bị trở thành chuyên gia xử lý ngôn ngữ là một thách thức và nhiều cơ hội.