Bối cảnh và vấn đề nghiên cứu

Trong quy trình tuyển dụng nhân sự hiện đại, sơ yếu lý lịch (Curriculum Vitae - CV) đóng vai trò là tài liệu quan trọng ban đầu để nhà tuyển dụng đánh giá năng lực, trình độ học vấn, kinh nghiệm làm việc và các kỹ năng của ứng viên. Tuy nhiên, thực tế tại các doanh nghiệp vừa và lớn cho thấy số lượng hồ sơ nộp vào thường rất lớn, trong khi thời gian của chuyên viên tuyển dụng dành cho khâu sàng lọc ban đầu lại rất hạn chế—trung bình không quá 20 giây cho một bản CV. Việc đọc lướt thủ công khiến phần lớn thông tin chi tiết của ứng viên không được xem xét thấu đáo, dẫn đến nguy cơ bỏ sót nhân tài. Bên cạnh đó, nhiều nhà tuyển dụng hoặc nhân sự tổng hợp không có đủ kiến thức chuyên môn kỹ thuật sâu về ngành Công nghệ Thông tin (CNTT) để thẩm định mức độ tương thích giữa các công nghệ ứng viên đề cập với yêu cầu thực tế trong bản mô tả công việc (Job Description - JD). Về phía người tìm việc, quá trình tra cứu thủ công đòi hỏi phải đọc qua hàng loạt JD khác nhau để tự đánh giá mức độ phù hợp, gây lãng phí nhiều thời gian và công sức.

Mặc dù thị trường đã xuất hiện một số hệ thống tuyển dụng ứng dụng học máy như TopCV, ITViec tại Việt Nam hoặc Ideal.com, Skillate.com trên thế giới, phần lớn các giải pháp hiện nay chủ yếu tập trung vào các tính năng thu phí từ phía nhà tuyển dụng, thiếu các tùy chọn phân loại chuyên sâu theo lĩnh vực cho ứng viên, và chưa khai thác triệt để việc bóc tách thông tin kỹ năng ngữ nghĩa trực tiếp từ CV. Xuất phát từ bối cảnh đó, khóa luận tốt nghiệp kỹ sư ngành Kỹ thuật Phần mềm của nhóm tác giả Lê Nguyễn Hoàng Vũ và Trần Hữu Lộc (Trường Đại học Công nghệ Thông tin, Đại học Quốc gia TP.HCM) đã thực hiện đề tài nhằm xây dựng một phương pháp tự động sàng lọc và so khớp hồ sơ ứng viên với mô tả công việc thông qua kỹ thuật xử lý ngôn ngữ tự nhiên và bản thể học (ontology).

Nhiệm vụ và mục tiêu nghiên cứu của đề tài bao gồm 6 nội dung chính:

  1. Sàng lọc tự động các bản mô tả công việc (JD) khớp với CV của ứng viên dựa trên tập kỹ năng bóc tách được; hỗ trợ các tùy chọn về vai trò, địa điểm, kỹ năng mong muốn để định hướng nghề nghiệp.
  2. Tự động sàng lọc và xếp hạng danh sách CV ứng tuyển theo một JD cụ thể của nhà tuyển dụng nhằm rút ngắn thời gian xét duyệt hồ sơ ban đầu.
  3. Áp dụng kỹ thuật xử lý ngôn ngữ tự nhiên (NLP) để trích xuất thông tin cấu trúc từ các tệp CV (định dạng PDF, Word) và JD.
  4. Đánh giá và xếp hạng mức độ tương thích giữa JD và CV thông qua giải thuật so khớp đồ thị ngữ nghĩa.
  5. Đánh giá tính hiệu quả của mô hình trích xuất và đo lường khoảng cách được triển khai.
  6. Xây dựng website tuyển dụng trực tuyến hoàn chỉnh, cung cấp giao diện tương tác cho cả ứng viên và nhà tuyển dụng.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng: Các công ty công nghệ có nhu cầu tuyển dụng nhân sự IT và các lập trình viên/người tìm việc trong ngành công nghệ thông tin.
  • Phạm vi địa lý: Toàn lãnh thổ Việt Nam và mở rộng tới dữ liệu tuyển dụng quốc tế.
  • Phạm vi chuyên môn: Giới hạn trong lĩnh vực công nghệ thông tin, bao gồm các vị trí như Kỹ sư dữ liệu (Data Engineer), Kỹ sư AI (AI Engineer), Lập trình viên Web (Frontend, Backend, Full stack), Lập trình viên Di động (iOS, Android), Kỹ sư vận hành hệ thống (DevOps Engineer), Phát triển trò chơi (Game Developer), Phân tích nghiệp vụ (Business Analyst) và Quản trị dự án (Project Manager).
  • Phạm vi kỹ thuật: Thu thập dữ liệu tự động, nhận diện ký tự quang học (OCR), xử lý văn bản bằng mô hình nhúng từ (Word Embedding), khai thác bản thể học tin học (Computer Science Ontology - CSO), so khớp đồ thị và lập trình ứng dụng web đầy đủ hai phía (Full-stack Web Development).
  • Thời gian thực hiện: Đề cương và nghiên cứu triển khai từ ngày 01/03/2021 đến ngày 26/06/2021.

Cơ sở lý thuyết và phương pháp

Khóa luận kết hợp nền tảng lý thuyết về cấu trúc văn bản tuyển dụng, xử lý ngôn ngữ tự nhiên, bản thể học và lý thuyết đồ thị để xây dựng mô hình trích xuất và so khớp kỹ năng:

  • Cấu trúc dữ liệu CV và JD: CV được phân rã thành các khối thông tin cấu trúc gồm thông tin liên lạc, thông tin cá nhân, kỹ năng, kinh nghiệm làm việc thực tế, học vấn, dự án đã tham gia, giải thưởng, bài báo khoa học và chứng chỉ. JD được phân tích thành 5 thành phần chính: thông tin tuyển dụng tổng quát, vị trí công việc, mô tả trách nhiệm, yêu cầu vai trò và chế độ quyền lợi.
  • Mô hình nhúng từ (Word Embedding): Văn bản nghiên cứu đối chiếu giữa hai phương pháp biểu diễn vector:
    • Phương pháp đếm (Count-based method): Tính toán tần suất từ kết hợp ma trận đồng xuất hiện và kỹ thuật TF-IDF (Term Frequency - Inverse Document Frequency) nhằm giảm bớt trọng số của các hư từ có tần suất cao nhưng mang ít giá trị thông tin.
    • Phương pháp dự đoán (Predictive method - Word2Vec): Sử dụng hai kiến trúc mạng nơ-ron: Continuous Bag-of-words (CBOW - dự đoán từ mục tiêu dựa vào các từ ngữ cảnh xung quanh) và Skip-gram (dùng từ trung tâm để dự đoán các từ ngữ cảnh xung quanh, xử lý hiệu quả với các tập dữ liệu nhỏ và từ hiếm).
  • Bản thể học (Ontology): Được định nghĩa hình thức dưới bộ ba $O = [C, R, I]$, trong đó $C$ là tập hợp các khái niệm (Concepts), $R$ là tập các mối quan hệ (Relations), và $I$ là tập các thực thể (Instances). Khóa luận áp dụng Computer Science Ontology (CSO) và phát triển ontology miền tuyển dụng IT nhằm chuẩn hóa ngữ nghĩa và thiết lập cấu trúc phả hệ kỹ năng chuyên ngành.
  • Mô hình CSO Classifier: Bóc tách khái niệm kỹ thuật qua hai mô-đun:
    • Mô-đun cú pháp (Syntactic module): Phân tích văn bản thành các n-grams (unigram, bigram, trigram), loại bỏ các từ dừng (stopwords), sau đó tính toán khoảng cách Levenshtein giữa chuỗi n-gram và nhãn của khái niệm trong ontology để nhận diện các kỹ năng tường minh.
    • Mô-đun ngữ nghĩa (Semantic module): Sử dụng công cụ gán nhãn từ loại (Part-of-Speech - POS tagging) để lọc các danh từ/cụm danh từ tiềm năng, kết hợp vector nhúng từ Word2Vec đã huấn luyện để suy luận các khái niệm liên quan về mặt ngữ nghĩa (kỹ năng ẩn/không tường minh).
  • Khoảng cách Levenshtein: Đo lường khoảng cách khác biệt giữa hai chuỗi ký tự $S$ và $T$ bằng số bước thao tác tối thiểu (thêm, xóa, thay thế ký tự) thông qua giải thuật quy hoạch động trên bảng kích thước $(n+1) \times (m+1)$.
  • Khoảng cách chỉnh sửa đồ thị (Graph Edit Distance - GED): Đồ thị kỹ năng trích xuất từ CV và JD được chuẩn hóa thành đồ thị có hướng gắn nhãn. Độ tương đồng giữa hai đồ thị $g_1$ và $g_2$ được tính bằng tổng chi phí tối thiểu của chuỗi các phép biến đổi đồ thị $e_i$ (thêm, xóa, thay đổi đỉnh hoặc cạnh):

$$GED(g_1, g_2) = \sum_{i=1}^k c(e_i)$$

Phương pháp thu thập và tiền xử lý dữ liệu được tiến hành thông qua các công cụ chuyên dụng:

  • Crawl dữ liệu JD: Sử dụng kết hợp Selenium và BeautifulSoup (ngôn ngữ Python) để điều khiển trình duyệt Chrome ở chế độ không giao diện (headless), tự động hóa các thao tác cuộn trang (scroll), nhấp chuột (click) và vượt cơ chế chống bot để lấy tin tuyển dụng.
  • Crawl dữ liệu CV: Sử dụng Puppeteer (thư viện Node.js) để điều khiển headless Chrome, xử lý việc trích xuất các trang có sử dụng cơ chế kết xuất bất đồng bộ qua JavaScript/AJAX và vượt rào cản Google reCaptcha.
  • Xử lý trích xuất văn bản từ tệp CV (PDF/Word): Khóa luận tiến hành thử nghiệm các thư viện Textract, NLTK và pdftotree. Do các công cụ này thường gặp lỗi gộp toàn bộ văn bản thành một đoạn duy nhất hoặc xáo trộn vị trí dòng, nhóm đã chuyển sang tiếp cận bằng nhận dạng ký tự quang học (OCR) với công cụ Tesseract (thư viện pytesseract) kết hợp thư viện xử lý ảnh OpenCV (opencv-python).
  • Xây dựng từ điển kỹ năng: Tổng hợp và làm sạch dữ liệu từ các nền tảng kỹ năng chuyên ngành ESCO và StackShare, tạo lập bộ từ điển chuẩn hóa gồm hơn 30.000 tên kỹ năng cùng các tên đồng nghĩa trong lĩnh vực CNTT.
Nhóm dữ liệu thu thập Nguồn dữ liệu Số lượng ghi nhận
Hồ sơ ứng viên (CV) TopCV Khoảng 4.000 CV
Tin tuyển dụng Frontend Developer Trang tuyển dụng chuyên ngành 18.000 JD
Tin tuyển dụng Backend Developer Trang tuyển dụng chuyên ngành 17.000 JD
Tin tuyển dụng Full stack Developer Trang tuyển dụng chuyên ngành 16.000 JD
Tin tuyển dụng Android Developer Trang tuyển dụng chuyên ngành 13.000 JD
Tin tuyển dụng Data / DevOps / iOS / Game / BA / PM Trang tuyển dụng chuyên ngành 10.000 JD mỗi vị trí
Tin tuyển dụng AI Engineer Trang tuyển dụng chuyên ngành 6.000 JD
Dữ liệu JD tổng hợp lịch sử (trước 2021) CareerBuilder, Naukri, Seek, Indeed Hơn 614.000 JD
Danh mục thực thể từ điển kỹ năng IT ESCO, StackShare Hơn 30.000 kỹ năng

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo mô hình phân tầng hướng dịch vụ, tích hợp các mô hình máy học và xử lý ngôn ngữ tự nhiên thông qua giao tiếp RESTful API:

[ Giao diện Web: ReactJS + Redux-Saga ]
[ Máy chủ Ứng dụng Backend: Python Flask ]
[ Cơ sở dữ liệu: MySQL ]   [ Xử lý NLP & So khớp ]
  • Kiến trúc hệ thống và giao tiếp API:

    • Backend: Triển khai bằng ngôn ngữ Python với framework Flask, tổ chức dịch vụ theo kiến trúc RESTful API, trao đổi dữ liệu dạng JSON. Cơ chế xác thực người dùng được bảo vệ thông qua mã thông báo JWT (JSON Web Token).
    • Frontend: Xây dựng giao diện đơn giản (Single Page Application) sử dụng thư viện ReactJS kết hợp Redux-Saga để quản lý luồng trạng thái bất đồng bộ và các tác vụ gọi API.
    • Cơ sở dữ liệu: Sử dụng hệ quản trị cơ sở dữ liệu quan hệ MySQL để quản lý dữ liệu nghiệp vụ.
  • Thiết kế cơ sở dữ liệu (các bảng quan hệ chính):

    • Ứng viên (Bảng 4.6): Lưu trữ thông tin định danh, tài khoản và hồ sơ của người tìm việc.
    • Nhà tuyển dụng (Bảng 4.8): Lưu trữ thông tin pháp lý doanh nghiệp, tài khoản tổ chức tuyển dụng.
    • Tin tuyển dụng (Bảng 4.7): Lưu trữ các bản mô tả công việc (JD), địa điểm, mức lương, quyền lợi và yêu cầu vai trò.
    • Sơ yếu lý lịch (Bảng 4.9): Lưu trữ thông tin tệp CV tải lên, văn bản sau OCR và đường dẫn hồ sơ.
    • Chuyên ngành (Bảng 4.10) và Kỹ năng (Bảng 4.11): Danh mục chuẩn hóa các chuyên ngành IT và danh sách kỹ năng liên kết với ontology.
    • NTD theo dõi CV (Bảng 4.5): Bảng quan hệ theo dõi hồ sơ ứng viên tiềm năng của nhà tuyển dụng.
    • Đăng ký email (Bảng 4.12): Quản lý yêu cầu nhận bản tin công việc phù hợp qua hộp thư điện tử.
  • Quy trình hoạt động của các phân hệ chức năng:

    1. Quy trình trích xuất CV: Tệp CV (PDF/Word) được tải lên hệ thống $\rightarrow$ mô-đun OpenCV và Tesseract tiến hành tiền xử lý hình ảnh và bóc tách chuỗi văn bản $\rightarrow$ CSO Classifier phân tích văn bản thành các n-grams (sử dụng Gensim Phrases) $\rightarrow$ đối chiếu với ontology IT và mô hình Word2Vec để suy luận kỹ năng $\rightarrow$ tạo lập đồ thị kỹ năng cá nhân của ứng viên.
    2. Quy trình trích xuất JD: Bản mô tả công việc nhập từ biểu mẫu của nhà tuyển dụng được đưa vào mô hình trích xuất để tạo lập đồ thị kỹ năng yêu cầu của vị trí tuyển dụng.
    3. Quy trình so khớp và xếp hạng: Hệ thống ánh xạ đồ thị kỹ năng của CV với đồ thị kỹ năng của JD, thực hiện thuật toán Graph Edit Distance (GED) để tính toán điểm số khoảng cách chuyển đổi; đồ thị có khoảng cách chỉnh sửa càng nhỏ thì điểm tương thích càng cao, từ đó đề xuất danh sách JD phù hợp cho ứng viên hoặc xếp hạng ứng viên tiềm năng cho nhà tuyển dụng.

Nội dung chính theo từng chương

Chương 1: GIỚI THIỆU

Chương 1 trình bày tổng quan về đề tài nghiên cứu. Nhóm tác giả làm rõ bối cảnh bùng nổ nhu cầu nhân lực ngành công nghệ thông tin cùng áp lực ngày càng lớn trong khâu tuyển dụng nhân sự. Chương này phân tích chi tiết lý do chọn đề tài, xuất phát từ nhu cầu thực tiễn cần một công cụ tự động hóa việc sàng lọc hồ sơ giúp ứng viên rút ngắn thời gian tìm kiếm công việc phù hợp và hỗ trợ nhà tuyển dụng lọc CV chuẩn xác. Bên cạnh đó, chương nêu rõ 6 mục tiêu cụ thể, xác định phạm vi nghiên cứu (tập trung vào chuyên ngành IT trên nền tảng ứng dụng web), đề ra phương pháp thực hiện qua các giai đoạn từ nghiên cứu, thiết kế, lập trình đến kiểm thử, và phác thảo cấu trúc tổng quát của toàn bộ báo cáo gồm 5 chương.

Chương 2: Một số khái niệm cơ bản

Chương 2 thiết lập nền tảng lý thuyết và phân tích thực trạng các giải pháp công nghệ liên quan. Nội dung mở đầu bằng việc mổ xẻ cấu trúc chuẩn của một bản CV và JD, xác định những trường thông tin cốt lõi cần trích xuất phục vụ bài toán so khớp. Tiếp đó, chương phát biểu 3 bài toán kỹ thuật trọng tâm: phân tách thông tin từ tệp phi cấu trúc, xây dựng mô hình bóc tách kỹ năng dựa trên ontology và Word2Vec, và xây dựng giải thuật so khớp xếp hạng mức độ tương đồng giữa CV và JD. Chương khảo cứu các công trình khoa học quốc tế tiêu biểu như phương pháp phân nhóm chủ đề dùng thẻ BIO của Andreas Bogstad và mô hình trích xuất kỹ năng kết hợp NER, POS, Word2Vec cùng thuật toán tính điểm Affinity Score của nhóm nghiên cứu IBM (Gugnani và Misra). Cuối cùng, chương khảo sát ưu và nhược điểm của các website tuyển dụng lớn hiện hành (ITViec, TopCV, VietnamWorks) để định hình các tính năng cần phát triển cho hệ thống.

Chương 3: PHƯƠNG PHÁP THỰC HIỆN

Chương 3 trình bày chi tiết phương pháp luận, các công nghệ nền tảng và quy trình xử lý dữ liệu. Nội dung giới thiệu nguyên lý của kỹ thuật Word Embedding (phương pháp đếm TF-IDF và mô hình dự đoán Word2Vec với hai kiến trúc CBOW và Skip-gram), lý thuyết bản thể học (Ontology $O = [C, R, I]$) và cấu trúc hoạt động của công cụ CSO Classifier (gồm mô-đun cú pháp và mô-đun ngữ nghĩa). Chương phân tích hai giải thuật tính khoảng cách then chốt: khoảng cách Levenshtein (quy hoạch động ma trận) và khoảng cách chỉnh sửa đồ thị (Graph Edit Distance - GED). Về mặt công nghệ xử lý hình ảnh và văn bản, chương làm rõ vai trò của OpenCV và Tesseract (thông qua các thư viện opencv-python và pytesseract) trong việc khắc phục hạn chế xáo trộn dòng của các thư viện Textract, NLTK và pdftotree. Về quy trình dữ liệu, chương đặc tả giải pháp thu thập hơn 600.000 JD bằng Selenium, BeautifulSoup và 4.000 CV bằng Puppeteer, phương pháp làm sạch dữ liệu, huấn luyện Word2Vec bằng Gensim, xây dựng từ điển hơn 30.000 kỹ năng từ ESCO/StackShare, và thuật toán tạo đồ thị kỹ năng từ ontology phục vụ so khớp.

Chương 4: XÂY DỰNG HỆ THỐNG

Chương 4 tập trung vào việc phân tích, thiết kế và cài đặt hệ thống phần mềm hoàn chỉnh. Nhóm tác giả mô tả chi tiết kiến trúc tổng thể của hệ thống, bao gồm các hệ thống con: kiến trúc xếp hạng CV, kiến trúc gợi ý công việc phù hợp cho ứng viên, hệ thống đăng ký thông tin qua email và hệ thống đề xuất công việc tương tự. Về mặt phân tích yêu cầu, chương định nghĩa danh sách tác nhân (actors), lập bảng các ca sử dụng (use cases), xây dựng sơ đồ use case tổng thể và chi tiết cho từng chức năng (tìm việc theo vai trò, địa điểm, kỹ năng; quản lý hồ sơ; bộ lọc ứng viên của nhà tuyển dụng). Chương trình bày thiết kế cơ sở dữ liệu quan hệ với sơ đồ thực thể liên kết và mô tả chi tiết các bảng dữ liệu MySQL. Phần cài đặt công nghệ làm rõ việc áp dụng Python Flask để xây dựng RESTful API, ReactJS và Redux-Saga cho giao diện người dùng, cùng cơ chế bảo mật JWT. Cuối cùng, chương minh họa toàn bộ các giao diện màn hình cho cả hai đối tượng ứng viên và nhà tuyển dụng, đồng thời trình bày các biểu diễn đồ thị kỹ năng thực nghiệm trích xuất từ CV và JD.

Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Chương 5 tổng kết lại toàn bộ kết quả nghiên cứu và thực nghiệm đạt được sau hơn 4 tháng triển khai đề tài. Chương trình bày các kết quả kế thừa từ những nghiên cứu trước đó về ontology và xử lý ngôn ngữ tự nhiên, đồng thời chỉ rõ những đóng góp cụ thể của khóa luận trong việc xây dựng hệ thống phần mềm hoạt động thực tế. Nhóm tác giả thẳng thắn chỉ ra các giới hạn còn tồn tại của hệ thống liên quan đến độ phức tạp tính toán khi xử lý đồ thị quy mô lớn và phạm vi bao phủ của ontology. Cuối cùng, chương vạch ra các hướng mở rộng nghiên cứu trong tương lai nhằm nâng cao độ chính xác trích xuất và hoàn thiện các tính năng hỗ trợ người dùng.

Kết quả và đóng góp

Khóa luận đã hoàn thành các mục tiêu đề ra về mặt giải pháp học máy lẫn xây dựng sản phẩm phần mềm với các kết quả cụ thể:

  • Bộ dữ liệu nghiên cứu:
    • Thu thập thành công tập dữ liệu lớn với hơn 600.000 JD trong ngành CNTT (gồm 18.000 JD Frontend, 17.000 JD Backend, 16.000 JD Full stack, 13.000 JD Android, 10.000 JD mỗi vị trí iOS, DevOps, Data Engineer, Game, BA, PM; 6.000 JD AI Engineer và hơn 614.000 JD dữ liệu lịch sử từ CareerBuilder, Naukri, Seek, Indeed).
    • Thu thập tập dữ liệu thử nghiệm gồm 4.000 bản CV thực tế từ TopCV thuộc nhiều chuyên ngành kỹ thuật khác nhau.
    • Xây dựng từ điển dữ liệu kỹ năng CNTT với hơn 30.000 tên kỹ năng và tên đồng nghĩa chuẩn hóa từ các nguồn dữ liệu mở ESCO và StackShare.
  • Mô hình trích xuất và giải thuật so khớp:
    • Cài đặt thành công mô hình nhận diện ký tự quang học (OCR) sử dụng OpenCV và Tesseract, khắc phục lỗi mất thứ tự dòng của các công cụ phân giải tệp truyền thống.
    • Tích hợp mô hình CSO Classifier, kết hợp mô hình nhúng từ Word2Vec huấn luyện trên dữ liệu tuyển dụng IT với Computer Science Ontology để bóc tách cả kỹ năng tường minh lẫn kỹ năng ẩn.
    • Ứng dụng thành công thuật toán Graph Edit Distance (GED) trên cấu trúc đồ thị kỹ năng, cho phép định lượng khoảng cách ngữ nghĩa giữa hồ sơ ứng viên và mô tả công việc để đưa ra điểm số tương thích phục vụ xếp hạng tự động.
  • Sản phẩm ứng dụng web: Xây dựng hoàn chỉnh website tuyển dụng trực tuyến đa chức năng với kiến trúc tách biệt giữa ReactJS (Frontend) và Python Flask (Backend RESTful API), kết nối cơ sở dữ liệu quan hệ MySQL.

So sánh tính năng giữa hệ thống của đề tài và nền tảng tuyển dụng hiện hành (dựa trên phân tích tại Chương 2 và Bảng 4.15):

Tiêu chí so sánh ITViec TopCV Hệ thống của khóa luận
Đối tượng trọng tâm Nhà tuyển dụng (thu phí dịch vụ) Nhà tuyển dụng và Ứng viên (thu phí dịch vụ NTD) Hỗ trợ cân bằng cho cả Ứng viên và Nhà tuyển dụng
Trích xuất kỹ năng từ tệp CV Không hỗ trợ tự động bóc tách kỹ năng từ file CV tải lên Chỉ đọc thông tin cơ bản, không có mô hình suy luận kỹ năng ẩn Tự động OCR tệp PDF/Word, trích xuất kỹ năng bằng CSO Classifier
So khớp ngữ nghĩa kỹ năng Không hỗ trợ so khớp cấu trúc ngữ nghĩa đồ thị Khớp từ khóa cơ bản theo bộ lọc Xây dựng đồ thị kỹ năng từ ontology và tính khoảng cách GED
Tùy chọn gợi ý việc làm Khuyến nghị công việc chung, không có tùy chọn lĩnh vực sâu Gợi ý theo số điện thoại, lọc việc làm theo chuyên ngành Gợi ý theo CV kết hợp tùy chọn vai trò, địa điểm, kỹ năng mong muốn
Thông tin kỹ năng còn thiếu Không hỗ trợ phân tích Không hỗ trợ phân tích Thông báo trực quan kỹ năng còn thiếu khi xem chi tiết JD
Chi phí cho nhà tuyển dụng Thu phí dịch vụ đăng tin và xem hồ sơ Thu phí gói lọc hồ sơ và đăng tin nổi bật Miễn phí quản trị tin, tạo bộ lọc và xếp hạng ứng viên

Hạn chế và hướng nghiên cứu tiếp

Dựa trên các nội dung được nhóm tác giả trình bày trong văn bản:

  • Hạn chế:
    • Cơ chế nhận dạng ký tự quang học (OCR) để trích xuất văn bản từ CV phụ thuộc lớn vào chất lượng bản scan hoặc định dạng đồ họa; các CV có bố cục phân cột phức tạp hoặc sử dụng nhiều biểu tượng đồ họa đặc biệt vẫn có thể gây sai sót về thứ tự ngữ cảnh.
    • Phạm vi tri thức của ontology hiện tại tập trung chủ yếu vào các kỹ năng kỹ thuật (hard skills) cốt lõi của ngành công nghệ thông tin; các kỹ năng mềm (soft skills) và kỹ năng quản lý dự án liên ngành chưa được mô hình hóa sâu.
    • Do thời gian thực hiện đề tài giới hạn trong hơn 4 tháng (từ tháng 3/2021 đến tháng 6/2021) và kiến thức ban đầu của nhóm về xử lý ngôn ngữ tự nhiên còn phải vừa học vừa làm, giải thuật tính toán khoảng cách chỉnh sửa đồ thị (Graph Edit Distance) trên tập dữ liệu lớn chưa được tối ưu hóa sâu về mặt hiệu năng tính toán.
  • Hướng nghiên cứu tiếp:
    • Mở rộng thêm bộ ontology hiện tại và xây dựng bổ sung các bộ ontology thuộc những phân ngành công nghệ thông tin mới nổi hoặc các lĩnh vực chuyên môn lân cận để nâng cao tính phổ quát cho mô hình trích xuất.
    • Nghiên cứu cải tiến các mô hình máy học nâng cao (Deep Learning) phục vụ bài toán nhận diện thực thể tên riêng (Named Entity Recognition - NER) chuyên biệt cho văn bản tuyển dụng.
    • Hoàn thiện và tối ưu hóa giải thuật tính toán so khớp đồ thị để giảm độ trễ khi hệ thống phải xử lý lượng truy vấn lớn đồng thời.
    • Phát triển tính năng hỗ trợ đa ngôn ngữ đầy đủ (tiếng Việt và tiếng Anh) trên toàn bộ các mô-đun phân tích văn bản.

Giá trị tham khảo

Khóa luận tốt nghiệp của nhóm tác giả mang lại giá trị học thuật và ứng dụng kỹ thuật thực tiễn cho nhiều nhóm đối tượng:

  • Sinh viên và học viên ngành Kỹ thuật Phần mềm, Khoa học Máy tính: Là tài liệu tham khảo thực tế về quy trình phát triển một hệ thống ứng dụng phần mềm toàn diện từ khâu phân tích yêu cầu, thiết kế sơ đồ ca sử dụng (UML use case), thiết kế lược đồ cơ sở dữ liệu quan hệ MySQL cho đến lập trình giao tiếp RESTful API bằng Flask và ReactJS.
  • Người nghiên cứu về Xử lý Ngôn ngữ Tự nhiên và Khai phá Văn bản: Tài liệu cung cấp cách tiếp cận chi tiết trong việc giải quyết bài toán xử lý văn bản phi cấu trúc (CV/JD), quy trình crawl dữ liệu lớn bằng Puppeteer/Selenium, phương pháp huấn luyện mô hình nhúng từ Word2Vec với Gensim, và kỹ thuật kết hợp bản thể học Computer Science Ontology (CSO) vào công cụ trích xuất thực thể.
  • Kỹ sư phát triển các hệ thống gợi ý và tuyển dụng thông minh: Phần biểu diễn kỹ năng bằng đồ thị và ứng dụng giải thuật khoảng cách chỉnh sửa đồ thị (Graph Edit Distance) là phương án kỹ thuật đáng tham khảo để thay thế cho các thuật toán so khớp từ khóa chính xác (exact keyword matching) vốn bộc lộ nhiều hạn chế về mặt ngữ nghĩa.

Câu hỏi thường gặp

1. Khóa luận giải quyết nhược điểm xáo trộn dòng khi đọc tệp CV dạng PDF/Word bằng giải pháp nào?
Nhóm tác giả đã khảo sát các thư viện trích xuất văn bản phổ biến như Textract, NLTK và pdftotree nhưng nhận thấy các công cụ này thường làm xáo trộn vị trí dòng hoặc gom toàn bộ nội dung thành một đoạn văn duy nhất. Để khắc phục triệt để, nhóm chuyển sang tiếp cận bằng nhận dạng ký tự quang học (OCR), kết hợp thư viện xử lý hình ảnh OpenCV (opencv-python) để tiền xử lý và Tesseract (pytesseract) để bóc tách ký tự chính xác theo bố cục trực quan của trang tài liệu.

2. Tập dữ liệu mô tả công việc (JD) và hồ sơ ứng viên (CV) dùng để nghiên cứu có quy mô bao nhiêu?
Nhóm tác giả đã thu thập hơn 600.000 bản JD ngành CNTT, bao gồm các vị trí chuyên ngành (18.000 Frontend, 17.000 Backend, 16.000 Full stack, 13.000 Android, 10.000 cho mỗi vị trí iOS, DevOps, Data Engineer, Game, BA, PM; 6.000 AI) cùng hơn 614.000 JD lịch sử từ CareerBuilder, Naukri, Seek và Indeed. Tập dữ liệu CV gồm khoảng 4.000 hồ sơ tải về từ TopCV và một bộ từ điển kỹ năng chuẩn hóa gồm hơn 30.000 kỹ năng IT từ ESCO và StackShare.

3. Mức độ phù hợp giữa CV và JD được mô hình hóa và tính toán như thế nào?
Sau khi bóc tách kỹ năng từ văn bản bằng CSO Classifier (kết hợp phân tích cú pháp n-gram Levenshtein và phân tích ngữ nghĩa Word2Vec), hệ thống chuyển đổi tập kỹ năng của CV và JD thành các cấu trúc đồ thị kỹ năng dựa trên ontology. Mức độ phù hợp giữa CV và JD được xác định bằng giải thuật khoảng cách chỉnh sửa đồ thị (Graph Edit Distance - GED), tính tổng chi phí tối thiểu của chuỗi các phép biến đổi để đưa đồ thị CV về đồ thị JD; khoảng cách GED càng nhỏ thì điểm tương thích càng cao.

4. Ngăn xếp công nghệ (tech stack) đầy đủ được sử dụng để xây dựng hệ thống website là gì?
Hệ thống sử dụng Python làm ngôn ngữ chủ đạo cho xử lý dữ liệu và mô hình máy học. Phía máy chủ (Backend) sử dụng framework Flask để xây dựng các dịch vụ RESTful API và bảo mật xác thực bằng JWT. Phía giao diện (Frontend) xây dựng bằng thư viện ReactJS kết hợp Redux-Saga. Cơ sở dữ liệu được quản lý trên hệ quản trị quan hệ MySQL. Các thư viện xử lý dữ liệu chuyên biệt gồm Gensim, OpenCV (opencv-python), Tesseract (pytesseract), BeautifulSoup, Selenium và Puppeteer.

5. Điểm khác biệt chính giữa hệ thống trong khóa luận so với các trang web như TopCV hay ITViec là gì?
Các trang web hiện tại chủ yếu tập trung vào các tính năng thu phí từ nhà tuyển dụng và thực hiện khớp từ khóa cơ bản. Hệ thống của đề tài cân bằng tính năng cho cả hai nhóm người dùng, cung cấp khả năng tự động đọc và bóc tách kỹ năng từ tệp CV tải lên thông qua OCR, áp dụng ontology để nhận diện cả kỹ năng ẩn, so khớp mức độ phù hợp bằng khoảng cách đồ thị GED, hiển thị danh sách kỹ năng còn thiếu của ứng viên đối với từng JD, và cho phép ứng viên tùy chọn đề xuất việc làm theo lĩnh vực chuyên sâu.

Kết luận

Khóa luận tốt nghiệp của Lê Nguyễn Hoàng Vũ và Trần Hữu Lộc đã giải quyết bài toán sàng lọc hồ sơ ứng viên và gợi ý việc làm trong lĩnh vực công nghệ thông tin bằng cách kết hợp kỹ thuật xử lý ngôn ngữ tự nhiên, bản thể học máy tính (CSO) và lý thuyết đồ thị. Nghiên cứu đã làm rõ quy trình xử lý dữ liệu thực tế từ việc bóc tách văn bản bằng OCR, huấn luyện Word2Vec trên tập dữ liệu hơn 600.000 JD, chuẩn hóa từ điển hơn 30.000 kỹ năng, cho đến giải thuật đo lường khoảng cách chỉnh sửa đồ thị (GED) để xếp hạng mức độ tương đồng giữa CV và JD. Công trình được hiện thực hóa thành công thông qua một website tuyển dụng hoạt động trên nền tảng Python Flask, ReactJS và MySQL, mang lại giá trị tham khảo học thuật và ứng dụng kỹ thuật thực tiễn cho bài toán tuyển dụng tự động.