Giới thiệu chung
Hiện nay quá trình tuyển dụng đã và đang phát triển theo thời gian Bên trong mô hình tuyển dụng những thế hệ đầu tiên, các công ty sẽ quảng cáo vị trí tuyển dụng của họ trên báo chí và truyền hình Người tìm việc sẽ gửi hồ sơ của họ qua đường bưu điện và hồ sơ của họ sẽ được sắp xếp theo cách thủ công Sau khi lọt vào danh sách, nhóm tuyển dụng sẽ gọi ứng viên cho các vòng phỏng vấn tiếp theo Không cần phải nói, điều này là một thủ tục tốn thời gian nhưng các ngành công nghiệp bắt đầu ngày càng tăng và nhu cầu tuyển dụng cũng vậy, do đó các công ty bắt đầu cải tiến quá trình tuyển dụng của họ và từ đó tư vấn tuyển dụng đã ra đời Các cơ quan này yêu cầu người nộp đơn tải lên resume của họ trên các trang web của họ theo các định dạng cụ thể Các cơ quan này sau đó sẽ xem xét dữ liệu của ứng viên và gửi danh sách rút gọn ứng viên cho công ty Quá trình này có một hạn chế là có rất nhiều người tìm việc và mỗi người tìm việc đều có định dạng resume riêng Để khắc phục tất cả các vấn đề trên, một thuật toán thông minh được yêu cầu có thể phân tích cú pháp thông tin từ bất kỳ resume nào, cuối cùng sắp xếp nó theo từng cụm và xếp hạng Mô hình sử dụng xử lý ngôn ngữ tự nhiên để hiểu resume và sau đó phân tích cú pháp thông tin từ nó Sau khi trích xuất thông tin, nó sẽ được lưu trữ trong kho dữ liệu Khi nhà tuyển dụng đăng tin tuyển dụng, hệ thống xếp hạng hồ sơ dựa trên so sánh với từ khóa và hiển thị những cái phù hợp nhất với nhà tuyển dụng [3].
Mục tiêu đề tài
Trích xuất thông tin từ resume
Trích xuất thông tin từ resume là việc chuyển đổi dữ liệu resume dạng tự do thành một tập hợp thông tin có cấu trúc phù hợp để lưu trữ, báo cáo và thao tác bằng phần mềm Việc trích xuất thông tin từ resume giúp nhà tuyển dụng quản lý hiệu quả các dữ liệu resume Nhiều chuyên gia nhân sự sử dụng các công cụ trích xuất thông tin từ resume để tự động hóa việc lưu trữ, nhập và phân tích dữ liệu văn bản trên resume. Định dạng phổ biến nhất của resume mà nhà tuyển dụng nhận được là Word hoặc PDF Mặc dù những tài liệu này rất dễ đọc và dễ hiểu đối với con người nhưng việc biểu diễn cho máy tính hiểu quả là một thử thách.
Các nhà tuyển dụng sử dụng trình trích xuất thông tin để tối ưu hóa quá trình sàng lọc resume của ứng viên Công nghệ trích xuất thông tin cho phép các nhà tuyển dụng thu thập, lưu trữ và sắp xếp số lượng lớn hồ sơ xin việc một cách hiệu quả nhất Sau khi có được dữ liệu, resume có thể dễ dàng được tìm kiếm và phân tích Các công cụ phân tích resume là một phần của hầu hết các nền tảng Theo DõiNgười Nộp Đơn (Applicant Tracking Software - ATS) Theo một số ước tính, công
Hình 1: Việc sàn lọc resume thường gây khó khăn cho nhà tuyển dụng nghệ trích xuất thông tin từ resume tốt nhất không chỉ hoạt động nhanh hơn theo cấp số nhân so với quá trình trích xuất thông tin thủ công của con người, chuyển số giờ lao động thành giây mà còn có thể tái tạo độ chính xác của con người với tỷ lệ 95%
Mô hình trích xuất thông tin bắt đầu bằng cách tải lên, tự động hoặc thủ công, tất cả các resume cho một vị trí nhất định vào phần mềm trích xuất Sau khi các resume được tải lên, các công cụ trích xuất thông tin từ resume là chương trình được thiết kế để quét tài liệu, phân tích và trích xuất thông tin quan trọng đối với nhà tuyển dụng Đối với hầu hết các chuyên gia nhân sự, thông tin quan trọng cần được trích xuất bằng trình trích xuất bao gồm các kỹ năng, kinh nghiệm làm việc, thông tin liên hệ, thành tích, học vấn, chứng chỉ và một số chuyên môn nghiệp vụ nhất định.
Bằng cách xác định và tổ chức các resume với thông tin liên quan hoặc loại bỏ những ứng viên không có thông tin đó, phần mềm trích xuất thông tin giúp người quản lý tuyển dụng tiết kiệm vô số thời gian nếu không phải đọc qua từng resume theo cách thủ công [5]
Hình 2: Minh hoạ về cấu trúc trong resume
Hình 3: Minh hoạ sơ lược về quá trình trích xuất thông tin từ resume
Báo cáo này tập trung vào phương pháp được đề xuất để trích xuất thông tin từ resume là dùng phương pháp hỏi đáp dựa trên mô hình BERT.
Phương pháp hỏi đáp (Question Answering - QA) [4] là một phương pháp truy xuất thông tin trong đó một câu trả lời chính xác được tính toán để phản hồi cho một câu hỏi đã được yêu cầu, thay vì một tập hợp các phần có thể chứa các câu trả lời của một đoạn văn bản cho trước Ý tưởng cơ bản của phương pháp QA trong xử lý ngôn ngữ tự nhiên (NLP) là cung cấp câu trả lời chính xác của các câu hỏi cho người dùng Các phương pháp QA này được phân loại là phương pháp QA dựa trên văn bản, phương pháp Factoid QA, phương pháp QA dựa trên web, phương pháp QA dựa trên truy xuất thông tin hoặc trích xuất thông tin, phương pháp QA miền hạn chế và phương pháp QA dựa trên quy tắc.
Hình 4: Ví dụ về phương pháp hỏi đáp
Rất nhiều phương pháp QA đã xuất hiện từ những năm 1960 Các phương pháp
QA này đã cố gắng trả lời các câu hỏi của người dùng bằng các giải thuật khác nhau. Việc triển khai QA đã giải quyết các vấn đề của các lĩnh vực khác nhau Loại câu hỏi và cấu trúc câu trả lời cũng khá đa dạng Các phương pháp gần đây lấy và xử lý dữ liệu từ nhiều nguồn để trả lời các câu hỏi được trình bày bằng ngôn ngữ tự nhiên [5].
Phương pháp hỏi đáp nhằm cung cấp giải pháp cho các truy vấn được diễn đạt bằng ngôn ngữ tự nhiên một cách tự động Phương pháp này nhằm mục đích truy xuất các câu trả lời mong đợi cho các câu hỏi chứ không phải là một danh sách tài liệu được xếp hạng như hầu hết các phương pháp truy xuất thông tin hay làm Ý tưởng về phương pháp hỏi đáp cho thấy sự tiến bộ đáng chú ý trong công nghệ truy xuất thông tin, đặc biệt là khả năng truy cập các nguồn tri thức theo cách tự nhiên bằng cách truy vấn và truy xuất các câu trả lời phù hợp bằng những từ ngắn gọn.
Các chương trình hỏi đáp cổ điển có thể xây dựng câu trả lời thông qua truy vấn cơ sở kiến thức (cơ sở dữ liệu kiến thức có cấu trúc) hoặc một cơ sở dữ liệu kiến thức phi cấu trúc bằng ngôn ngữ tự nhiên Phương pháp trả lời câu hỏi có thể là miền đóng (trả lời các câu hỏi từ một miền cụ thể) hoặc miền mở (dựa trên các kiến thức phổ biến) từ việc phân loại câu hỏi IBM’s Watson là một ví dụ về kiểu phương pháp
QA sau này. Ở đề tài này chúng ta nghiên cứu phương pháp trả lời miền kín dựa trên những
Hình 5: Quá trình xử lí của một hệ thống hỏi đáp cổ điển phương pháp hiện đại Phương pháp nhận các câu hỏi ngôn ngữ tự nhiên và kết hợp với dữ liệu ngữ cảnh của câu hỏi Chúng ta sẽ tính toán để trích xuất câu trả lời trong dữ liệu ngữ cảnh phù hợp với câu hỏi Phương pháp sẽ có sử dụng những kĩ thuật hiện đại như word embedding, kiến trúc Transformer và mô hình BERT để giúp cho quá trình được tối ưu hoá và chính xác nhất có thể.
Giới hạn đề tài
Vì thời gian nghiên cứu đề tài có hạn nên phạm vi nghiên cứu cũng được giới hạn như sau:
• Ngôn ngữ của dữ liệu được sử dụng trong hệ thống này là tiếng Anh.
• Sử dụng dữ liệu thu thập được từ các resume từ đó xây dựng lên bộ câu hỏi - câu trả lời cho từng thông tin trong resume.
• Áp dụng các mô hình học sâu BERT dựa trên kiến trúc Transformer nhằm huấn luyện dữ liệu.
• Phương pháp chỉ có khả năng trả lời các câu hỏi liên quan đến nội dung dữ liệu đã được huấn luyện.
Tình hình nghiên cứu thế giới
Những tiến bộ gần đây trong công nghệ thông tin như Trích Xuất Thông Tin (Infor- mation Extraction - IE) [6] cung cấp những cải tiến đáng kể trong việc chuyển đổi thông tin văn bản dạng thô thành dữ liệu có cấu trúc, tạo thành dữ liệu đầu vào để khai phá các dạng dữ liệu phức tạp hơn trong tập dữ liệu văn bản Trích xuất thông tin từ resume, còn được gọi là phân tích cú pháp từ resume, cho phép trích xuất thông tin liên quan từ resume có hình thức tương đối có cấu trúc sang dữ liệu có cấu trúc.
Có hai phương pháp được sử dụng trong việc trích xuất thông tin từ resume:
• Semantic-based là nghiên cứu về ý nghĩa trong ngôn ngữ Nó có thể được áp dụng cho toàn bộ văn bản hoặc cho các từ đơn lẻ Có kể đến phương pháp tiêu biểu là Named Entity Recognition (NER) [6] v.v Các phương pháp trích xuất thông tin dựa trên ngữ nghĩa cố gắng xác định các từ, cụm từ và mẫu nhất định thường sử dụng cụm từ thông dụng hoặc từ điển Điều này thường được sử dụng như một bước thứ hai sau khi phân tích từ vựng của một tài liệu nhất định.
• Rule-based là trích xuất thông tin dựa trên quy tắc Phương pháp này so sánh và sử dụng biểu thức chính quy trên văn bản thô, các công cụ và thành phần so sánh dựa trên quy tắc không chỉ cho phép ta tìm thấy các từ và cụm từ ta đang tìm kiếm mà còn phân tích các từ xung quanh.
Hiện nay trên thế giới cũng có nhiều nghiên cứu về trích xuất dữ liệu từ resume. Chúng ta có thể lọc ra một số nghiên cứu tiêu biểu để xem qua về những phương pháp trích thông tin và có cái nhìn tổng quan về quá trình nghiên cứu của đề tài này.
Với hướng nghiên cứu về rule-based đề cập tới những kĩ thuật trích xuất thông tin cơ bản như phân tích văn bản (Text Analytics) kết hợp với rule-based và NER [7]. Bên cạnh đó những thông tin khi được trích xuất sẽ dùng kĩ thuật bigdata để thông tin đưa qua một lớp map-reduce để phân tách các cặp key-value liên quan tới các trường dữ liệu muốn trích xuất trong resume Từ đó đối chiếu với bộ dữ liệu công việc khổng lồ để tìm được công việc phù hợp cho ứng viên Đối với cách tiếp cận Rule-based ta có kể đến một số phương pháp chính:
• Dùng biểu thức chính quy: ta có thể dùng biểu thức chính quy để trích xuất cái thành phần như số điện thoại, email, ngày sinh, v.v.
• Các từ gợi ý: như giới từ (ví dụ: trong phân đoạn thông tin kinh nghiệm làm việc, từ đứng sau “at” rất có thể là tên công ty)
• Tên phổ biến hoặc nổi tiếng: thông qua từ điển dữ liệu của các tổ chức nổi tiếng, địa điểm nổi tiếng, công ty hoặc tổ chức, bằng cấp học thuật, v.v.
• Từ tiền tố và hậu tố của từ: dành cho các tổ chức (ví dụ: Đại học, Cao đẳng, v.v.) và công ty (ví dụ: Corp., Associates, v.v.)
• Cách viết tên người: nói chung tên của người được viết hoa chữ cái đầu tiên thì chúng ta sẽ đoán rằng từ này có thể là tên của người đó.
Một số nghiên cứu hướng đến phương pháp dựa trên ngữ nghĩa (Semantic-based) để trích xuất thông tin từ resume Bên cạnh đó cũng kết hợp một số phương pháp khác để có được một pipeline hoàn chỉnh cho quá trình trích xuất này Cụ thể phương pháp mà nghiên cứu này [3] đề xuất tới là dùng các kĩ thuật như phân tích từ vựng (lexical analysis) sau đó sử dụng phân tích ngữ pháp (syntactic analysis) tận dụng cây phân tích (parse tree) để xác định cú pháp tiếp theo là dùng kĩ thuật phân tích ngữ nghĩa để xác định nghĩa của từ và cuối cùng là kết hợp chúng lại (compile) để xác định từng thực thể trong resume Từ đó có thể rút trích được những thông tin mong muốn.
Bên cạnh đó một số nghiên cứu khác cũng sử dụng phương pháp dựa trên ngữ nghĩa (Semantic-based) nhưng với kỹ thuật mạng nơ-ron và CRF để phân đoạn và trích xuất các thông tin khác nhau từ resume Mô hình CNN được sử dụng để phân đoạn và so sánh với mô hình BiLSTM Mô hình dựa trên CRF được chọn để trích xuất thông tin và so sánh với mô hình BiLSTM-CNN [8] Nghiên cứu này đã phân đoạn và trích xuất một số phần thông tin từ các khối thông tin như thông tin cá nhân, giáo dục và nghề nghiệp Kết quả đầu ra là tệp JSON chứa 23 trường dữ liệu chưa thông tin của resume.
Ngoài ra còn có hướng nghiên cứu khác đề cập tới việc trích xuất dữ liệu từ re- sume kết hợp 2 phương pháp rule-based và semantic-based [6] Ban đầu sẽ dùng kĩ thuật phân đoạn văn bản (Text Segmentation) để có thể tách resume thành những đoạn nhỏ, dễ cho việc trích xuất dữ liệu Sau đó sẽ cho những đoạn dữ liệu này qua một cấu trúc trích xuất dữ liệu dựa trên quy tắc để trích xuất một số thông tin Cuối cùng là dùng kĩ thuật semantic-based để trích xuất ra những thông tin mong muốn. Ở giai đoạn cuối cùng nhóm tác giả đã sử dụng mô hình học sâu như ConvolutionalNeural Network (CNN), Bidirectional Long Short-Term Memory (BiLSTM), Con- ditional Random Field (CRF) để phục vụ cho nhiệm vụ phân tích Named EntityRecognition (NER).
Hình 6: Mô hình pipeline để trích xuất thông tin từ resume sử dụng semantic-based [3]
Đề xuất phương pháp nghiên cứu
Sơ lược qua những công trình nghiên cứu gần đây ta có thể thấy cả hai phương pháp là semantic-based và rule-based đều được pháp triển và mỗi phương pháp đều có sự hiệu quả riêng Với sự phát triển về phần cứng thì hiện nay các mô hình học sâu được phát triển rộng rãi và được sử dụng ở nhiều nơi, trên nhiều lĩnh vực nên những mô hình học sâu dường như đánh giá cao trong các nhiệm vụ về NLP và những mô hình học sâu thường đi kèm với phương pháp semantic-based vì vậy với nhiệm vụ lần này với bài toán trích xuất thông tin từ resume chúng ta cũng sẽ chọn một mô hình học sâu kết hợp với phương pháp semantic-based để giải quyết vấn đề được đặt ra.Những nghiên cứu liên quan đề cập tới các mô hình học sâu như BiLSTM, CRF,
Hình 7: Kiến trúc học sâu để trích xuất thông tin từ resume sử dụng semantic-based [8]
RNN để áp dụng trích xuất thông tin nhưng hiện tại có những mô hình đã ra đời để khắc phục những thiếu sót của những mô hình này và có những kết quả đáng ngạc nhiên Một trong số đó phải kể đến kiến trúc Transformer rất nổi tiếng hiện nay.
Hình 8: Mô hình trích xuất thông tin từ resume sử dụng rule-based [6]
Hiện tại kiến trúc Transformer đạt hiệu quả cao trên các task downtream nhờ có những cơ chế cải tiến đột phá trong xử lí ngôn ngữ tự nhiên như self-attention, encoder-decoder, multihead-attention Đây thực sự là một kiến trúc nên thử nghiệm để áp dụng cho bài toàn trích xuất thông tin nhằm cải thiện hiệu quả cho quá trình trích xuất Một trong những mô hình áp dụng kiến trúc Transformer khá thành công đó là mô hình BERT.
Phương pháp đề xuất được đưa ra ở đây là phương pháp hỏi đáp dựa trên BERT kết hợp sử dụng segmentation text để phân đoạn resume thành những segment của những phần thông tin cần trích xuất sau đó dựa vào kĩ thuật hỏi đáp để trích xuất ra những thông tin trên những segment chúng ta đã phân tách Mô hình hỏi đáp sẽ được xây dựng bằng các fine-tune mô hình bert.
Giới thiệu Word Representation
Khác với các mô hình xử lý ảnh khi các giá trị đầu vào là cường độ màu sắc đã được mã hoá thành giá trị số trong khoảng [0, 255] Mô hình xử lý ngôn ngữ tự nhiên có đầu vào chỉ là các chữ cái kết hợp với dấu câu Làm sao chúng ta có thể mã hoá được những từ ngữ để làm đầu vào cho mạng nơ ron? Một trong các kĩ thuật để biểu diễn từ là kĩ thuật one-hot vectơ [9] Trước khi đi vào phương pháp biểu diễn, chúng ta cần làm rõ một số khái niệm:
• Documents (Văn bản): Là tập hợp các câu trong cùng một đoạn văn có mối liên hệ với nhau Văn bản có thể được coi như một bài báo, bài văn v.v.
• Corpus (Bộ văn bản): Là một tập hợp gồm nhiều văn bản thuộc các đề tài khác nhau, tạo thành một nguồn tài nguyên dạng văn bản Một văn bản cũng có thể được coi là corpus của các câu trong văn bản Các bộ văn bản lớn thường có từ vài nghìn đến vài trăm nghìn văn bản trong nó.
• Character (kí tự): Là tập hợp gồm các chữ cái (nguyên âm và phụ âm) và dấu câu Mỗi một ngôn ngữ sẽ có một bộ các kí tự khác nhau.
• Word (từ vựng): Là các kết hợp của các kí tự tạo thành những từ biểu thị một nội dung, định nghĩa xác định, chẳng hạn con người có thể coi là một từ vựng.
Từ vựng có thể bao gồm từ đơn có 1 âm tiết và từ ghép nhiều hơn 1 âm tiết.
• Dictionary (từ điển): Là tập hợp các từ vựng xuất hiện trong văn bản.
• Volcabulary (từ vựng): Tập hợp các từ được trích xuất trong văn bản Tương tự như từ điển.
Trước khi biểu diễn từ chúng ta cần xác định từ điển của văn bản Số lượng từ là hữu hạn và được lặp lại trong các câu Do đó thông qua từ điển gồm tập hợp tất cả các từ có thể xuất hiện, ta có thể mã hoá được các câu dưới dạng ma trận mà mỗi dòng của nó là một vectơ one-hot của từ. Định nghĩa One-hot vectơ của từ: Giả sử chúng ta có từ điển là tập hợp gồm từ vựng anh, em, gia đình, bạn bè, Khi đó mỗi từ sẽ được đại diện bởi một giá trị chính là index của nó Từ anh có index = 0, gia đình có index = 2 One-hot vectơ của từ vựng thứ i, i≤(n-1) sẽ là vectơ e = [0, , 0, 1, 0, , 0] sao cho phần từ thứ i = 1 Lúc đó vectơ e = [0, , 0, 1, 0, , 0] là vectơ biểu diễn của từ thông qua kĩ thuật one-hot vectơ.
Kỹ thuật Word Embedding
Trong cuốn sách Introduction to Information Retrieval [10] xuất bản năm 2008, các tác giả đã giải thích về các kỹ thuật khai thác thông tin từ nhiều nguồn dữ liệu khác nhau, đặc biệt là ở dạng văn bản Có hai kỹ thuật cổ điển nổi tiếng cho mục tiêu khai thác thông tin được thảo luận trong cuốn sách này, bao gồm Count-Vectorization hoặc Bag of words (BOW) [11] và trọng số của Term Frequency - Inverse Document Frequency (TFIDF) [12] Đặc biệt trong hai phương pháp này là trọng số TF-IDF đã được chứng minh là hiệu quả trong việc xác định các từ khóa quan trọng trong tài liệu Tuy nhiên, chúng không thể phản ánh thông tin về vị trí từ trong tài liệu và hầu như không truyền tải được ngữ nghĩa của từ cũng như toàn bộ tài liệu.
Word Embedding là một kỹ thuật sau này nổi lên như một phương pháp hiệu quả hơn để biểu diễn từ Thuật ngữ này lần đầu tiên được đặt ra bởi Yoshua Bengio trong bài báo nổi tiếng có tên "Neural Probabilistic Language Models" [13] xuất bản năm 2003 Bài báo khuyến nghị rằng một vectơ từ có thể "embed" ngữ nghĩa của từ trong một số vectơ để chúng được máy tính xử lý một cách hiệu quả Lấy cảm hứng từ ý tưởng đó, một số kỹ thuật embedding sau đó đã được báo cáo như Word2vec[14], GloVe [15], fastText [16], ELMO [17] và BERT [2] Nói chung, một kỹ thuật embedding cần đáp ứng các điều kiện sau.
• Chỉ có một biểu diễn duy nhất cho mỗi từ, tức là hai từ khác nhau nên được biểu diễn bằng hai vectơ khác nhau.
• Hai từ giống nhau, về mặt ngữ nghĩa của chúng, nên được biểu diễn bằng hai vectơ giống nhau, xét về khoảng cách của chúng trong không gian embedding.
Word2vec - Mô hình Skip-Gram
Word2vec là viết tắt của từ word to vector Word2vec là một trong những kỹ thuật phổ biến trong lĩnh vực xử lý ngôn ngữ tự nhiên Nó đã được công bố công khai vào năm 2013 bởi một nhóm các nhà nghiên cứu do Tomas Mikolov đứng đầu và đã được đăng ký bảo hộ phương thức của sáng chế [14] Dựa trên AutoEncoder [18], Word2vec đã giải quyết các vấn đề liên quan đến ý nghĩa ngữ cảnh của mô hình AutoEncoder bằng cách chuyển đổi mỗi từ trong kho ngữ liệu thành một vectơ dựa trên thông tin ngữ cảnh của chúng trong corpus đó Do đó, mô hình có thể học để tạo ra một vectơ tương tự cho những từ chia sẻ cùng một thông tin ngữ cảnh Thông tin ngữ cảnh của từ tiêu điểm là một cửa sổ chứa các từ ở bên trái và bên phải của từ tiêu điểm, chúng được gọi là các từ ngữ cảnh Kích thước của cửa sổ, ký hiệu là k, đại diện cho k từ ở phía bên trái và k từ ở phía bên phải của từ tiêu điểm Hai kỹ thuật huấn luyện chính của Word2vec là CBOW và Skip-gram [19]. Ý tưởng chính đằng sau mô hình Skip-Gram là nó lấy từng từ trong một bộ corpus (chúng ta sẽ gọi nó là bộ từ trọng tâm) và cũng lấy từng từ một trong số các từ bao quanh nó trong một "window" được xác định cung cấp một mạng neural mà sau khi training sẽ dự đoán xác suất cho mỗi từ thực sự xuất hiện trong cửa sổ xung quanh từ trọng tâm.
Kỹ thuật Term Frequency - Inverse Document Frequency
TF-IDF [12] là viết tắt của term frequency-inverse document frequency là một kỹ thuật trọng số phổ biến để truy xuất thông tin và khai thác văn bản, nó phản ánh tầm quan trọng của một từ đối với tài liệu Tầm quan trọng của một từ tăng tỷ lệ thuận với số lần từ xuất hiện trong tài liệu, nhưng nó cũng giảm tỷ lệ nghịch với tần số mà từ đó xuất hiện trong toàn bộ văn bản TF-IDF cũng được sử dụng để lọc những từ stopwords trong các bài toán như tóm tắt văn bản và phân loại văn bản.
TF-IDF bao gồm TF và IDF, lần lượt là Term Frequency (tần suất xuất hiện của từ) và Inverse Document Frequency (nghịch đảo tần suất của văn bản) TF đại diện cho tần số một từ xuất hiện trong tài liệu Còn ý tưởng chính của IDF là: nếu một từ xuất hiện nhiều hơn trong các tài liệu khác, từ này sẽ ít quan trọng hơn.
Term frequency là số lần một từ t i xuất hiện trong tài liệu d j , có thể được biểu thị bằng TF(t i j ) Trong điều kiện loại bỏ các stop word, càng nhiều từ t i xuất hiện trong tài liệu, thì từt i càng quan trọng đối với tài liệu Nó có thể được định nghĩa là:
N(t i ,d j ) là số lầnt i xuất hiện trong d j và N(d j ) là tổng số từ trong tài liệud j
Inverse document frequency có nghĩa là khả năng đại diện của thuật ngữt i chod j tài liệu và số tiền của nó trong tất cả các tài liệu N(t i , C) là tỷ lệ nghịch, được biểu thị bằng IDF(t i ):
N (t i ,d j ) là số lầnt i xuất hiện trongd j và N (d j ) là tổng số thuật ngữ trong tài liệud j
Cuối cùng ta có công thức tính Term Frequency - Inverse Document Frequency là :
[T F−IDF(ti j) =T F(t ij ).IDF(ti)] (12)
Tương tự như Word2vec thì Sent2vec là viết tắt của từ sentence to vector Nó là kĩ thuật dùng để biểu diễn một câu thành các vectơ thay gì một từ như Word2vec. Với Sent2vec ta có thể dùng 2 cách sau đây để tính ra vectơ đại diện cho câu từ vectơ đại diện của những từ trong câu:
• Giá trị trung bình của vectơ Word2vec: Bạn chỉ có thể lấy giá trị trung bình của tất cả các vectơ từ trong một câu Vectơ trung bình này sẽ đại diện cho vectơ câu của bạn.
• Trung bình của vectơ Word2vec với TF-IDF: đây là một trong những cách tiếp cận tốt nhất mà ta sẽ đề xuất Chỉ cần lấy các vectơ từ và nhân nó với điểm TF-IDF của từ đó Chỉ cần lấy giá trị trung bình và nó sẽ đại diện cho vectơ câu.
Với 2 cách này ta có thể tính toán được vectơ đại diện của câu mà chúng ta mong muốn.
Tất cả chúng ta đều quen thuộc với các vectơ: chúng có thể là 2 chiều, 3 chiều hoặc vô số chiều Bây giờ ta hãy suy nghĩ về 2 chiều một chút, bởi vì nó dễ hình dung hơn trong tâm trí của chúng ta và trước tiên hãy làm mới khái niệm về tích vô hướng của
2 vectơ Tích vô hướng giữa hai vectơ bằng với hình chiếu của một trong số chúng trên vectơ kia Do đó, tích vô hướng giữa hai vectơ là giống nhau (nghĩa là có các thành phần giống hệt nhau) bằng với mô đun bình phương của chúng, trong khi nếu
Hình 9: Cấu trúc xây dựng mô hình Sentence to vector hai vectơ vuông góc (nghĩa là chúng không chia sẻ bất kỳ hướng nào), tích vô hướng của 2 vectơ bằng không Nói chung, đối với các vectơ n chiều, tích vô hướng có thể được tính như dưới đây. u.v= (u1u 2 u n )
Tích vô hướng của 2 vectơ rất quan trọng khi xác định độ tương tự, vì nó được kết nối trực tiếp với nhau Định nghĩa về sự giống nhau giữa hai vectơ u và v trên thực tế là tỷ lệ giữa tích vô hướng và tích của độ lớn của chúng. similarity=cos(θ) = u.v
Bằng cách áp dụng định nghĩa về độ tương tự, trên thực tế, giá trị này sẽ bằng 1 nếu hai vectơ giống hệt nhau và sẽ là 0 nếu cả hai trực giao hay hoàn toàn khác nhau.Nói cách khác, độ tương tự là một số được giới hạn giữa 0 và 1 cho chúng ta biết hai vectơ giống nhau đến mức nào.
Kiến trúc Transformer
Ngữ cảnh (Contextual) và vai trò của ngữ cảnh trong NLP
Trước khi tìm hiểu các kỹ thuật đã tạo ra ưu thế vượt trội cho mô hình BERT Chúng ta hãy khám phá vai trò của ngữ cảnh trong NLP.
Bản chất của ngôn ngữ là để diễn giải dòng suy nghĩ của con người Trong giao tiếp, các từ thường không đứng độc lập mà chúng sẽ đi kèm với các từ khác để liên kết mạch lạc thành một câu Hiệu quả biểu thị nội dung và truyền đạt ý nghĩa sẽ lớn hơn so với từng từ đứng độc lập.
Ngữ cảnh trong câu có một sự ảnh hưởng rất lớn trong việc giải thích ý nghĩa của từ Hiểu được vai trò mấu chốt đó, các thuật toán NLP SOTA đều cố gắng đưa ngữ cảnh vào mô hình nhằm tạo ra sự đột phá và cải tiến và mô hình BERT cũng như vậy.
Mô hình Recurrent Neural Networks (RNN)
Vào năm 1986, Rumelhart và các đồng nghiệp của ông đã xuất bản một bài báo nghiên cứu có tựa đề “Learning internal representations by error propagation” [20]. Trong nghiên cứu này, một kiến trúc mạng cổ điển để xử lý dữ liệu tuần tự được gọi là recurrent neural network Về cơ bản, mạng recurrent neural network là một kiến trúc mạng nơ-ron trong đó trạng thái của mô hình ở bước trước được sử dụng làm đầu vào của bước hiện tại Nói cách khác, mô hình recurrent neural network hoạt động theo cách ánh xạ dữ liệu đầu vào và trạng thái trước đó của mô hình với dữ liệu đầu ra, như thể hiện trong bên dưới Với mạng nơ-ron truyền thống, dữ liệu chỉ được truyền qua một hướng, tính toán và kết quả đầu ra được gói gọn trong một pha và hoàn toàn dựa trên dữ liệu đầu vào (tức là không tồn tại vòng lặp) Chúng ta cần làm rõ rằng vòng lặp ở đây không tạo ra một chu trình tính toán lặp lại vô hạn, mà chỉ sử dụng dữ liệu từ giai đoạn tính toán trước làm đầu vào cho giai đoạn hiện tại.
Cụ thể hơn, chúng ta có thể mở ra vòng lặp để cung cấp một kiến trúc tính toán cụ thể hơn khi truyền dữ liệu tuần tự vào mạng Với recurrent neural network, thông tin từ lần truyền trước được lưu (ở trạng thái ẩn) cho tính toán hiện tại, tạo ra một vòng lặp trên đồ thị tính toán Nói cách khác, trạng thái ẩn hoạt động như một bộ nhớ của lớp nơ-ron để nhớ lại Điều này đặc biệt hữu ích khi xử lý dữ liệu chuỗi thời gian, trong đó logic tính toán giống nhau (cùng một phép tính và tập trọng số) có thể được áp dụng cho mỗi điểm dữ liệu trong chuỗi, bảo toàn thông tin từ các điểm trước đó trong khi vẫn bảo toàn thông tin trình tự Recurrent Neural Network (RNN) là một biến thể rất quan trọng của mạng nơ-ron được sử dụng nhiều trong xử lý ngôn ngữ tự nhiên Về mặt khái niệm, chúng khác với mạng nơ-ron thông thường vì đầu vào thông thường trong RNN là một từ thay vì toàn bộ văn bản trong trường hợp của mạng nơ-ron thông thường Điều này mang lại sự linh hoạt cho mạng hoạt động với các độ dài khác nhau của các câu, điều không thể đạt được trong mạng nơ-ron thông thường do cấu trúc cố định của nó Nó cũng cung cấp một lợi thế bổ sung là chia sẻ các đặc tính đã học qua các vị trí khác nhau của văn bản mà không thể có được trong mạng nơ-ron thông thường.
Hình 10: Biểu diễn về Recurrent Neural Network
RNN xử lý mỗi từ của câu như một đầu vào riêng biệt xuất hiện tại thời điểm ‘t’ và cũng sử dụng giá trị active tại ‘t-1’, làm đầu vào bên cạnh đầu vào tại thời điểm
‘t’ Sơ đồ dưới đây cho thấy cấu trúc chi tiết của một kiến trúc RNN Kiến trúc được mô tả ở trên còn được gọi là kiến trúc many to many với (Tx = Ty) tức là số đầu vào bằng số đầu ra Cấu trúc như vậy khá hữu ích trong mô hình trình tự Ngoài tất cả tính hữu ích của nó, RNN còn có một số hạn chế chính trong số đó là:
• Các ví dụ về kiến trúc RNN được nêu ở trên có khả năng nắm bắt các phụ thuộc chỉ theo một hướng của ngôn ngữ Về cơ bản trong trường hợp xử lý ngôn ngữ tự nhiên, nó giả định rằng từ đến sau không ảnh hưởng đến nghĩa của từ đến trước Nhưng với kinh nghiệm của chúng ta về các ngôn ngữ, chúng ta biết rằng điều đó chắc chắn không đúng.
• RNN cũng không tốt lắm trong việc nắm bắt các phụ thuộc dài hạn và vấn đề biến mất các gradient xuất hiện lại trong RNN.
• RNN là mạng học tuần tự nên sẽ mất thời gian xử lí với những câu dài và không tận dụng được xử lí song song.
Transformer trong NLP là một kiến trúc mới nhằm giải quyết các tác vụ theo trình tự trong khi xử lý các phụ thuộc phạm vi dài một cách dễ dàng Nó hoàn toàn dựa vào cơ chế self-attention để tính toán các biểu diễn của đầu vào và đầu ra mà không sử dụng các RNN theo trình tự hoặc tích chập Cơ chế self-attention còn giải quyết vấn đề xử lí tuần tự và xử lí ngôn ngữ theo 1 chiều của RNN.
Hình 11: Minh hoạ kiến trúc Transformer [21]
Trong kiến trúc Transformer gồm một encode và decode Vai trò của encode là mã hóa các đầu vào (tức là câu) ở một trạng thái, thường chứa một số tensor Sau đó trạng thái được chuyển vào decode để tạo ra các đầu ra Trong dịch máy encode chuyển đổi một câu nguồn, ví dụ: “Hello world” ở một trạng thái, một vectơ, nắm bắt thông tin ngữ nghĩa của nó Sau đó, decode sử dụng trạng thái này để tạo câu đích đã dịch, ví dụ: “Xin chào thế giới.” Encode và decode có một số mô-đun con, nhưng có thể thấy cả hai đều sử dụng chủ yếu Multi-Head Attention và Feed Forward Network.
Encoder bao gồm một bộ 6 layer giống nhau và chồng lên nhau mỗi lớp có sub- layer Đầu tiên là cơ chế multi-head self-attention và thứ hai là fully connected feed- forward network đơn giản Chúng ta sử dụng kết nối residual xung quanh mỗi trong số hai sub-layer, tiếp theo là normalization layer Có nghĩa là đầu ra của mỗi sub- layer là LayerNorm (x + Sublayer(x)), trong đó Sublayer(x) là hàm được thực hiện bởi chính sub-layer đó Để tạo điều kiện thuận lợi cho các kết nối residual này, tất cả các sub-layer trong mô hình, cũng như các embedding layer, tạo ra kết quả đầu ra của mô hình có kích thước chiều là 512.
Decoder cũng được cấu tạo bởi một bộ 6 layer giống nhau Ngoài hai sub-layer trong mỗi encoder layer, Decoder chèn thêm một sub-layer thứ ba, lớp này thực hiện multi-head attention vào đầu ra của encoder stack Tương tự như encoder, chúng ta sử dụng các kết nối residual xung quanh mỗi sub-layer, tiếp theo là normalization layer Chúng ta cũng sửa đổi self-attention sub-layer trong encoder stack để ngăn các vị trí phía trước tham gia xử lí các vị trí tiếp theo Việc che dấu này đảm bảo rằng các dự đoán cho vị trí i có thể chỉ phụ thuộc vào các đầu ra đã biết ở các vị trí nhỏ hơn i.
Một hàm Attention có thể được mô tả là ánh xạ một truy vấn (query) và một tập hợp các cặp khóa-giá trị (key-value) tới một kết quả đầu ra, trong đó truy vấn, khóa, giá trị và kết quả đầu ra đều là vectơ Kết quả đầu ra được tính dưới dạng tổng trọng số của các giá trị, trong đó trọng số được chỉ định cho mỗi giá trị được tính toán bởi một hàm tương thích của truy vấn với khóa tương ứng.
Chúng ta gọi attention đặc biệt này là "Scaled Dot-Product Attention" Đầu vào bao gồm các query và key của kích thức chiềud k và các value của kích thước chiều d v Chúng ta tính toán các giá trị dot products của query với tất cả các key, chia mỗi key cho√ d k và áp dụng hàm softmax để thu được trọng số trên các value.
Trong thực tế, chúng ta tính toán hàm attention trên một tập hợp các query đồng thời, được đóng gói với nhau thành một ma trận Q Các key và value cũng được đóng gói cùng nhau thành ma trận K và V Chúng ta tính toán ma trận kết quả đầu ra như sau:
Hình 12: Minh hoạ về Scaled Dot-Product Attention [21]
Mô hình Bidirectional Encoder Representation from Trans-
BERT là viết tắt của cụm từ Bidirectional Encoder Representation from Transformer [2] có nghĩa là mô hình biểu diễn từ theo 2 chiều ứng dụng kỹ thuật Transformer. BERT được thiết kế để huấn luyện trước các biểu diễn từ (pre-train word embed- ding) Điểm đặc biệt ở BERT đó là nó có thể điều hòa cân bằng bối cảnh theo cả 2 chiều trái và phải.
Cơ chế attention của Transformer sẽ truyền toàn bộ các từ trong câu văn đồng thời vào mô hình một lúc mà không cần quan tâm đến chiều của câu Do đó Transformer được xem như là huấn luyện hai chiều (bidirectional) mặc dù trên thực tế chính xác hơn chúng ta có thể nói rằng đó là huấn luyện không chiều (non-directional) Đặc điểm này cho phép mô hình học được bối cảnh của từ dựa trên toàn bộ các từ xung quanh nó bao gồm cả từ bên trái và từ bên phải.
Hình 14: Minh hoạ về quá trình huấn luyện Masked Language Model (MLM)
Masked ML [22] là một tác vụ cho phép chúng ta fine-tuning lại các biểu diễn từ trên các bộ dữ liệu unsupervised-text bất kỳ Khái niệm này rất đơn giản là che 15% các từ trong dữ liệu đầu vào bằng token [MASK] một cách ngẫu nhiên, sau đó chạy toàn bộ chuỗi thông qua BERT attention-based encoder và chỉ dự báo các từ bị che được đưa ra dựa trên ngữ cảnh được cung cấp bởi các từ không che trong chuỗi Tuy nhiên, chiến lược masking cơ bản này có một lỗ hổng là mô hình chỉ cố gắng dự đoán các token chính xác khi token [MASK] xuất hiện trong đầu vào, trong khi chúng ta muốn mô hình cố gắng dự đoán các token phù hợp bất kể sự hiện diện của token bị che trong đầu vào Để giải quyết vấn đề này, 15% token được chọn để masking là:
• 80% số lượng token được thay thế bằng token [MASK]
• 10% số lượng token được thay thế bằng một token ngẫu nhiên.
• 10% số lượng token không thay đổi.
Trong quá trình huấn luyện, loss function BERT chỉ xem xét các dự đoán token được masking và bỏ qua các dự đoán token không bị che Kết quả là mô hình hội tụ chậm hơn nhiều so với các mô hình từ trái sang phải hoặc từ phải sang trái nhưng đây là đặc tính bù trừ cho sự gia tăng ý thức về bối cảnh Việc lựa chọn ngẫu nhiên 15% số lượng các từ bị che dấu cũng tạo ra vô số các kịch bản input cho mô hình huấn luyện nên mô hình sẽ cần phải huấn luyện rất lâu mới học được toàn diện các khả năng.
Hình 15: Minh hoạ về quá trình huấn luyện Next Sentence Prediction (NSP)
Quy trình huấn luyện BERT cũng sử dụng next sentence prediction để hiểu mối quan hệ giữa hai câu Đối với các công việc như trả lời câu hỏi, một mô hình được huấn luyện trước với nhiệm vụ này rất hữu ích Trong quá trình huấn luyện, mô hình được cung cấp các cặp câu làm đầu vào và được huấn luyện để dự đoán xem câu thứ hai có phải là câu tiếp theo trong văn bản gốc hay không BERT sử dụng một token [SEP] cụ thể để phân tách các câu Mô hình được cung cấp hai câu đầu vào cùng một lúc trong quá trình huấn luyện, như sau:
• 50% số lượng câu thứ hai là câu kế tiếp của câu thứ nhất.
• 50% số lượng là một câu ngẫu nhiên từ toàn bộ ngữ liệu.
BERT sau đó được yêu cầu để dự đoán liệu câu thứ hai có phải là ngẫu nhiên hay không, với giả định rằng câu ngẫu nhiên sẽ bị ngắt kết nối với câu đầu tiên Để xác định xem cụm từ thứ hai có được kết nối với cụm từ đầu tiên hay không, toàn bộ chuỗi đầu vào được chuyển qua mô hình dựa trên Transformer, hidden state cuối cùng của token [CLS] được chuyển đổi thành vectơ có kích thước 2× 1 bằng cách sử dụng lớp phân loại đơn giản và xác suất của IsNextSentenceLabel được tính bằng softmax - một hàm kích hoạt.
Mô hình hỏi đáp dựa trên BERT
Sau thành công của BERT [2], nhiều mô hình hỏi đáp phát triển thành phần nhận thức ngôn ngữ dựa trên BERT Mô hình BERT là một hàm có thể nhận một hoặc nhiều chuỗi (được nối bởi [SEP]) làm đầu vào và đầu ra một tập hợp các vectơ mã hóa BERT cho token [CLS] đặc biệt và mọi token đầu vào:
BERT(s 1 ,s 2 , ) = [h [CLS] ,h (1) ,h (2) , ] (5) trong đóh [CLS] vectơ embedding cho token [CLS] đặc biệt vàh i là vectơ embedding cho token thứ i Để sử dụng BERT để đọc hiểu, nó học hai trọng số bổ sung, W s vàW e vàso f tmax(h ) ∗W s )vàso f tmax(h i ∗W e )xác định hai phân phối xác suất của vị trí bắt đầu và kết thúc của khoảng dự đoán trên mỗi token Toàn bộ tiến trình pre-training và fine-tuning của BERT Một kiến trúc tương tự được sử dụng cho cả pretrain-model và fine-tuning model Chúng ta sử dụng cùng một tham số pretrain để khởi tạo mô hình cho các tác vụ down stream khác nhau Trong suốt quá trình fine-tuning thì toàn bộ các tham số của layers học chuyển giao sẽ được fine-tune. Đối với các tác vụ sử dụng input là một cặp sequence (pair-sequence) ví dụ như câu hỏi và câu trả lời thì ta sẽ thêm token khởi tạo là [CLS] ở đầu câu, token [SEP] ở giữa để ngăn cách 2 câu.
Tiến trình áp dụng fine-tuning sẽ như sau:
• Khi một câu ngữ cảnh được đưa vào để huấn luyện thì nó sẽ được nối với câu hỏi bằng token [SEP] để phân chia 2 phần và để phân biệt vị trí bắt đầu của câu thì ta sẽ thêm token [CLS] để đánh dấu Sau đó ta sẽ đưa toàn bộ qua Embedding layer để có embedding véc tở từ pretrain model.
Hình 16: Minh hoạ về quá trình tinh chỉnh mô hình hỏi đáp dựa trên BERT
• Các embedding vectơ này sau đó sẽ được đưa vào kiến trúc tranformer bắt đầu từ multi-head attention với nhiều layer Ta thu được một vectơ output ở encoder.
• Sau đó chúng ta tiến hành dự đoán phân phối xác suất cho từng vị trí từ ở decoder, ở mỗi step chúng ta sẽ truyền vào decoder vectơ output của encoder và vectơ embedding input của decoder để tính encoder-decoder attention Sau đó chiếu qua liner layer và softmax để thu được phân phối xác suất cho output tương ứng.
• Trong kết quả trả ra ở output của Transformer ta sẽ cố định kết quả của câu Question sao cho trùng với câu Question ở input Các vị trí còn lại sẽ là thành phần mở rộng Start/End Span tương ứng với câu trả lời tìm được từ câu input.
Lưu ý quá trình huấn luyện chúng ta sẽ fine-tune lại toàn bộ các tham số của model BERT đã cut off top linear layer và huấn luyện lại từ đầu các tham số của linear layer mà chúng ta thêm vào kiến trúc model BERT để customize lại phù hợp với bài toán [23][24].
Dữ liệu thử nghiệm
Bộ dữ liệu được sử dụng để huấn luyện là bộ dữ liệu resume từ website VietNam-Works VietNamWorks là một trong những website về tuyển dụng hàng đầu tại Việt
Nam Dữ liệu gồm có các câu hỏi và câu trả lời cho từng trường dữ liệu mà ta muốn trích xuất từ resume Kiểu dữ liệu của các trường này đều là văn bản.
Hình 17: Bộ dữ liệu resume từ website VietnamWorks
Bộ dữ liệu này gồm 2386 câu hỏi liên quan đến 9 trường dữ liệu cần trích xuất đó là Education, Experience, Certificate, Reference, Hobby, Activity, Major, Job Title,Skill được trích xuất thủ công từ 1000 resume khác nhau trên website VietNam-Works.
Tiền xử lí dữ liệu
Để thực hiện quá trình fine-tune trong Transformer đơn giản, dữ liệu phải ở trong kiểu dữ liệu mà Python có thể đọc được Từ dữ liệu là những câu trả lời ta cần xác định được vị trí của câu trả lời trong ngữ cảnh của resume nên ta cần làm thêm việc xác định vị trí bắt đầu của câu trả lời (answer_start).
Mỗi từ điển như vậy chứa hai thuộc tính, "context" và "qas".
• context: paragraph hoặc text mà câu hỏi được đưa ra từ trong đó.
• qas: Một danh sách các câu hỏi và câu trả lời.
Câu hỏi và câu trả lời được trình bày dưới dạng dictionaries Mỗi dictionaries trong qas có định dạng sau.
• id: (string) Một ID duy nhất cho câu hỏi Phải là duy nhất trên toàn bộ tập dữ liệu.
• question: (string) một câu hỏi.
• answers: (list) Danh sách các câu trả lời đúng cho câu hỏi.
Một câu trả lời duy nhất được đại diện bởi một dictionaries với các thuộc tính sau.
• answer: (string) Câu trả lời cho câu hỏi Phải là một chuỗi con của ngữ cảnh.
• answer_start: (int) Chỉ mục bắt đầu của câu trả lời trong ngữ cảnh.
Chúng ta có thể chuyển đổi dữ liệu VietNamWorks sang định dạng này khá dễ dàng.
Hình 18: Quá trình tiền xử lí dữ liệu để lấy ra giá trị các start token và end token
Xây dựng mô hình
Mô hình được đề xuất ở đây gồm 3 phần chính đó là phần nhận và xử lí file resume, phân đoạn (segmentation) cho từng trường dữ liệu và phần trích xuất thông tin từ mô hình hỏi đáp dựa trên BERT.
Hệ thống Backend Đầu tiên ta đề cập tới phần nhận và xử lí file resume Đây là một hệ thống Back- end nhận file được truyền vào có các kiểu dữ liệu như PDF hoặc word để xử lí và trả về dữ liệu chúng ta mong muốn ở đây là văn bản tiếng Anh Về phần này ta xử dụng các API có sẵn của Python để xây dựng hệ thống Backend.
Minh hoạ về quá trình xử lí Segmentation Text
Tiếp theo sẽ là phần segmentation cho từng trường dữ liệu Mục đích chính của phần này là xác định được những segment của từng trường dữ muốn trích xuất để thu hẹp kích thước văn bản cần trích xuất trong resume vì dữ liệu văn bản trong resume rất nhiều và gồm nhiều segment khác nhau nên khi đưa vào mô hình trích xuất dễ dẫn đến trích xuất không đúng phần dữ liệu chúng ta mong muốn nên việc segmentation là rất cần thiết cho những resume có cấu trúc dài và phức tạp.
Hình 19: Kiến trúc hệ thống đề xuất Để làm được điều này thì với kiến thức tham khảo từ các bài báo ở trên, đa số tác giả áp dụng kĩ thuật heuristic như xác định chỉ mục, dùng từ khoá.v.v để phân đoạn cho từng trường dữ liệu Việc này chỉ hiệu quả với những resume có cấu trúc đơn giản còn với các cấu trúc resume phức tạp việc này dường như rất khó Để giải quyết vấn đề này chúng ta có thể nghĩ đến segmentation bằng các kĩ thuật hiện đại hiện nay đó là word embedding.
Với kĩ thuật word embedding ta sẽ kết hợp với một kĩ thuật tên là sliding window.Với kĩ thuật này ta sẽ xác định một cửa sổ trượt với 2 thông số là kích thước cửa sổ
(size) và bước nhảy (step) Khi nhận được dữ liệu dạng văn bản của resume ta sẽ tiến hành trượt cửa sổ này trên văn bản đó để lấy ra những segment của văn bản đó. Phương pháp này khá giống với tích chập trong xử lý ảnh Với bộ dữ liệu các segment đã được lấy ra ta tiếp hành cho qua sen2vec để có được những biểu diễn vectơ của những segment này, cùng lúc đó ta cũng lấy ra biểu diễn của từ đại diện cho trường dữ liệu ta cần lấy như education, experience, certificate, reference, hobby, activity, major, job title, skill Sau khi có 2 vectơ biểu diễn của 2 thành phần này ta đưa vào công thức cosine-similarity để tính độ tương đồng của từ đại diện trường dữ liệu với những segment ta đã lấy ra Kết quả ta sẽ lấy segment có độ tương đồng lớn nhất sau khi đã sắp xếp.
Mô hình trích xuất thông tin với BERT
Sau khi ta đã có segment có chứa dữ liệu cần trích xuất thì ta sẽ cho segment này qua model hỏi đáp dựa trên BERT đã được train với bộ dữ liệu VietNamWorks. Model này sẽ trích xuát dữ liệu theo từng trường dựa theo những câu hỏi đã được cài đặt sẵn và lúc này ta sẽ có những dữ liệu mình cần trích xuất.
Quá trình huấn luyện cho mô hình:
Trong quá trình này, sau khi ta đã tiền xử lí dữ liệu xong thì bộ dữ liệu được làm sạch sẽ được chia ra làm 2 bộ train và test Với bộ dữ liệu train ta sẽ đưa các câu hỏi và câu trả lời vào train theo batch và mỗi batch sẽ có batch size và số lần train qua toàn bộ bộ dữ liệu là số epoch sẽ được điều chỉnh trong quá trình train để có kết quả tốt nhất Còn đối với từng câu hỏi và câu trả lời thì ta sẽ đưa vào mô hình huấn luyện dạng text Từng câu hỏi và câu trả lời sẽ được nối với nhau bằng token [SEP] để phân biệt và đầu chuỗi sẽ là token [CLS] để đánh dấu cho sự bắt đầu của chuỗi Khi chuỗi đã được nối lại và đánh dấu thì sẽ được đưa qua một lớp embedding để mã hoá dữ diệu text thành vectơ Tiếp theo đó ta sẽ cho qua một lớp positional encoding để mã hoá vị trí Cuối cùng ta sẽ đưa vào mô hình BERT để huấn luyện cho mô hình hỏi đáp Hàm loss ở đây được định nghĩa là cross-entropy cho 2 token bắt đầu và kết thúc của câu trả lời Ta cũng cấu hình các hàm tối ưu để có kết quả tốt nhất. Để minh hoạ chi tiết cho quá trình này ta có thể lấy ví dụ sau: Ta đưa vào model một câu hỏi là "What skill is mentioned?" và đoạn context có câu trả lời là "In re- sume, the skills are excel" Khi đưa vào mô hình ta sẽ gắn 2 phần câu hỏi với context lại với nhau và thêm token [CLS] và [SEP] nên input sẽ có dạng "[CLS] What skill is mentioned [SEP] In resume, the skills are excel" Sau khi nhận vào input thì mô hình sẽ cho input qua một công đoạn xử lí embedding gồm 3 bước là token embedding, position embedding và segment embedding để có các vectơ embedding của từng từ Tiếp sau đó ta sẽ cho các vectơ embedding qua kiến trúc transformer gồm encoder và decoder để tính toán các giá trị như Scaled Dot-ProductAttention, Multi-Head Attention trong encoder và decoder tương ứng Qua quá trình này ta có output của decoder Output này ta sẽ cho qua 2 lớp fully connected và soft- max để đưa về phân phối xác suất cho từng token Cuối cùng ta chỉ cần lấy ra token
Hình 21: Quá trình huấn luyện với BERT trên bộ dữ liệu Vietnamworks có giá trị xác suất cao nhất cho start token và end token của câu trả lời.
Phương pháp đánh giá
Confusion matrix [25] là một bảng thường được sử dụng để mô tả hiệu suất của mô hình phân loại trên một tập dữ liệu thử nghiệm mà các giá trị thực đã biết Bản thân confusion matrix tương đối đơn giản để hiểu, nhưng các thuật ngữ liên quan có thể gây nhầm lẫn.
Hình 22: Ví dụ cụ thể quá trình huấn luyện với BERT trên bộ dữ liệu Vietnamworks
Prediction outcome Positive Negative Total
Bây giờ chúng ta hãy xác định các thuật ngữ cơ bản nhất:
• True positives (TP): Đây là những trường hợp chúng ta dự đoán là Positive và kết quả thực sự là Positive Đối với bài toàn hỏi đáp thì giá trị này chính là số token trùng với nhau trong câu trả lời trên dự đoán và kết quả thực sự.
• True negatives (TN): Chúng ta dự đoán là Negative và kết quả thực sự là Neg- ative Đối với bài toàn hỏi đáp thì giá trị này chính là số token trùng với nhau ngoài câu trả lời trên dự đoán và kết quả thực sự.
• False positives (FP): Chúng ta đã dự đoán là Positive nhưng kết quả thực sự làNegative Đối với bài toàn hỏi đáp thì giá trị này chính là số token dự đoán sai so với câu trả lời thực sự.
• False negatives (FN): Chúng ta dự đoán là Negative nhưng kết quả thực sự là Positive Đối với bài toàn hỏi đáp thì giá trị này chính là số token là kết quả như bị dự đoán không phải câu trả lời thực sự.
Hình 23: Các khái niệm về Confusion matrix trong bài toán hỏi đáp
Metrics cho bài toán hỏi đáp
Có hai số liệu đo lường được sử dụng trên nhiều tập dữ liệu câu hỏi trả lời, bao gồm SQuAD đó là Exact match (EM) và F1-score Những điểm số này được tính trên các cặp câu hỏi, câu trả lời riêng lẻ Khi có thể có nhiều câu trả lời đúng cho một câu hỏi nhất định, điểm tối đa của tất cả các câu trả lời đúng có thể được tính. Điểm EM và F1 tổng thể được tính cho một mô hình bằng cách lấy trung bình trên các điểm số ví dụ riêng lẻ.
Chỉ số này nghe khá đơn giản Đối với mỗi cặp câu hỏi, câu trả lời, nếu các ký tự trong dự đoán của mô hình khớp chính xác với các ký tự của (một trong các) câu trả lời đúng thì EM = 1, nếu không thì EM = 0 Đây là số liệu nghiêm ngặt nghĩa là hoặc hoàn toàn đúng hoặc không có gì, bị lệch bởi một ký tự duy nhất dẫn đến điểm
0 Khi đánh giá theo ví dụ không có câu trả lời, nếu mô hình dự đoán sai bất kỳ văn bản nào, nó sẽ tự động nhận được điểm 0 cho ví dụ đó.
F1-score là thước đo phổ biến cho các bài toán phân loại và được sử dụng rộng rãi trong QA Nó phù hợp khi chúng ta quan tâm như nhau về precision và recall.Trong trường hợp này, nó được tính toán dựa trên các từ riêng lẻ trong dự đoán so với những từ trong câu trả lời đúng Số lượng từ được chia sẻ giữa dự đoán và kết quả thực sự là cơ sở của F1-score: precision là tỷ lệ giữa số từ được chia sẻ trên tổng số từ trong dự đoán và recall là tỷ lệ giữa số từ được chia sẻ đến tổng số từ của kết quả thực sự.
Mục tiêu thử nghiệm
• Hiện thực xây dựng mô hình Question Answering dựa trên BERT với bộ dữ liệu VietNamWorks.
• Điều chỉnh các tham số của mô hình.
• Kiểm tra tính đúng đắn của mô hình Question Answering dựa trên BERT.
Quá trình thử nghiệm
Sau quá trên train trên Google Colab ta có một số kết quả ban đầu được ghi lại.
Kết quả thử nghiệm
Sau quá trình train thì kết quả F1-score và Exatc match ban đầu thu được là:
EM EM-Approximate F1-Score Precisions Recall
Bảng 1: Kết quả khi huấn luyện với mô hình BERT
Với kết quả thu được có giá trị exact match 0.97 ở tập train và ở tập test là 0.73 được coi là chấp nhận được với một bộ dữ liệu tuỳ chọn chưa được tinh chỉnh nhiều Trong quá trình huấn luyện nhận thấy đa số kết quả thường chỉ sai khác so với kết quả thực sự chỉ có 1 token nên ở đây ta có thêm một thông số là approximation exact match được tính bằng cách cho phép câu trả lời chỉ sai ở mức±1so với kết quả thực tế Với kết quả này ta thấy cần cải thiện tinh chỉnh bộ dữ liệu để mô hình học hiệu quả hơn để đạt kết quả 0,8x ở tập test.
Hình 24: Biểu đồ exact match và F1-score trong quá trình huấn luyện
Hình 25: Biểu đồ exact match và F1-score trên tập test
Sau khi huấn luyện với mô hình BERT thì ta có thử với một số mô hình khác khá nổi tiếng trong bài toán hỏi đáp như RoBerta, AlBert và ELECTRA để có kết quả so sánh như bảng dưới đây.
Thông qua kết quả có được ta có thể thấy mô hình Albert cho kết quả khá tốt với bộ dữ liệu VietnamWorks gần như ở mọi thông số Kết quả này có thể được giải thích ngắn gọn như sau:
Model EM EM-Approximate F1-Score Precisions Recall
Bảng 2: So sánh giữa các mô hình
• Các tham số embedding đã được xác thực hóa và tách chúng khỏi trạng thái ẩn, cho phép các thông số embedding có kích thước thấp hơn Điều này làm giảm hàng loạt các tham số trong các mô hình giúp tính toán nhanh hơn.
• Chia sẻ thông số nhiều lớp giữa các phân đoạn attention trong các phân đoạn encoder, cũng như các phân đoạn chuyển tiếp nguồn cấp dữ liệu Một lần nữa, điều này làm giảm số lượng tham số đáng kể.
• Một task ngôn ngữ khác: thay vì Next Sentence Prediction (NSP), Sentence- order prediction (SOP) được thực hiện, để cải thiện những lo ngại về NSP.
Với ba điểm khác biệt chính, các tác giả đã cố gắng chứng minh rằng các mô hìnhNLP tốt hơn không nhất thiết có nghĩa là các mô hình lớn hơn Các thí nghiệm cho thấy rằng một mô hình tốt hơn và theo ngữ cảnh hơn (ALBERT xxlarge) có thể được đào tạo để cải thiện khi BERT lớn chỉ bằng 70% lượng tham số lớn của BERT Điều này cho thấy rằng các mô hình ngôn ngữ tốt hơn có thể được tạo ra với ít tham số hơn.
Demo hệ thống
Với hệ thống được xây dựng như được định nghĩa bên trên ta có thể chạy demo hệ thống và nhận được kết quả khá tốt.
Đánh giá kết quả
Tổng kết thành quả của chúng ta trong quá trình nghiên cứu lý thuyết về Word Em- bedding, Transformer, BERT, Question Answering gồm nguyên nhân ra đời, cơ sở lý thuyết, sơ lược các mô hình chính và cách xử lí với dữ liệu.
Kết quả nghiên cứu có thể được dùng làm tài liệu tham khảo cho những ai muốn làm quen với bài toán trích xuất dữ liệu từ resume giúp tiết kiệm thời gian tiếp cận.
Hình 26: Kết quả demo hệ thống
Một số hạn chế
• Kết quả huấn luyện chưa đạt như mong muốn (exact match là 0.8x).
• Chưa triển khai mô hình được với dữ liệu tiếng Việt.
Hướng phát triển
Ta có thể đề xuất một số cải tiến để có kết quả khả quan hơn :
• Xây dựng kết hợp với mô hình BERT tiếng Việt qua đó xây dựng mô hình Question Answering tiếng Việt [26].
• Sau khi trích xuất dữ liệu xong ta có thể lưu lại ở cơ sở dữ liệu nào đó.