Tính cấp thiết của đề tài
Năm 2019 đánh dấu một thời kỳ biến động lớn trong đời sống kinh tế và xã hội, đặc biệt là sự xuất hiện của đại dịch Covid-19 đã ảnh hưởng sâu rộng đến nhiều ngành nghề trên toàn cầu, bao gồm cả Việt Nam Đất nước phải đối mặt với nhiều thách thức như dịch bệnh lây lan, vấn đề về nguồn vac-xin và tình hình kinh tế khó khăn Một trong những thách thức lớn nhất là sự khan hiếm nguồn nhân lực, đặc biệt trong lĩnh vực Công nghệ thông tin (CNTT) Các doanh nghiệp buộc phải tìm cách ứng phó với tình hình phức tạp của đại dịch và những khó khăn liên quan đến nguồn nhân lực.
Hầu hết các doanh nghiệp đều sử dụng quy trình tuyển dụng nhân sự để khắc phục tình trạng thiếu hụt nhân lực Mỗi doanh nghiệp có những yêu cầu và hình thức tuyển dụng riêng nhằm tìm kiếm ứng viên phù hợp, đảm bảo chất lượng đầu vào Một trong những thách thức lớn là phân loại Curriculum Vitae (CV) ứng tuyển, đòi hỏi nhiều thời gian và nguồn nhân lực lớn Đây là bước sơ loại đầu tiên, giúp nhà tuyển dụng chọn lọc các ứng viên phù hợp và loại bỏ những người không đáp ứng yêu cầu Do lượng CV có thể rất lớn, các tổ chức thường thực hiện vòng sơ loại để tập trung vào việc khai thác nguồn nhân sự hiệu quả hơn.
Qua việc tìm hiểu tình hình thực tế, xu hướng tất yếu của việc xây dựng phân loại
CV giúp rút ngắn thời gian phân loại, từ đó đưa ra quyết định nhanh chóng và chính xác, giúp giải quyết bài toán nhân sự hiệu quả, tránh khủng hoảng Sự phát triển của trí tuệ nhân tạo, đặc biệt trong xử lý ngôn ngữ tự nhiên, đã mở ra cơ hội ứng dụng trong nhiều lĩnh vực AI hỗ trợ nhà tuyển dụng vượt qua khó khăn trong phân loại CV, giảm thời gian xử lý và đảm bảo tính công bằng cho ứng viên thông qua sự khách quan của học máy Do đó, đề tài “Phân loại CV ứng tuyển trong lĩnh vực Công nghệ thông tin” được lựa chọn.
Mục đích của đề tài
Đề tài này nhằm mục đích tích hợp chức năng phân loại CV ứng tuyển vào phần mềm quản lý doanh nghiệp, từ đó có thể áp dụng cho các công ty khác Mặc dù đây chỉ là một chức năng nhỏ, nhưng nó có khả năng nâng cao hiệu quả và rút ngắn thời gian xử lý nguồn lực nhân sự, đảm bảo cả về thời gian và chất lượng.
Mục tiêu của đề tài là nghiên cứu kiến thức cơ bản về xử lý ngôn ngữ tự nhiên và kỹ thuật học máy có giám sát để giải quyết các bài toán phân loại CV Dựa trên những kiến thức này, chúng tôi sẽ tiến hành xây dựng và thử nghiệm một module nhằm tự động phân loại CV.
Ý nghĩa của đề tài
Công ty đã xây dựng và thực hiện đề tài nghiên cứu để có cái nhìn khách quan về các ưu nhược điểm, từ đó khắc phục hạn chế và tích hợp chức năng vào phần mềm quản lý nhân sự BRAVO 8 Điều này giúp công ty đưa ra quyết định nhanh chóng, tiết kiệm thời gian và đảm bảo chất lượng trong việc quản lý nguồn lực nhân sự, đặc biệt trong giai đoạn hậu Covid-19.
Bố cục của đề tài
Đề tài được chia làm 3 chương:
Chương 1: Giới thiệu bài toán và đơn vị thực tập
Chương 2: Cơ sở lý thuyết các thuật toán học máy cho phân loại CV tự động
Chương 3: Xử lý hệ thống thử nghiệm phân loại CV trong lĩnh vực CNTT bằng các thuật toán học máy.
GIỚI THIỆU BÀI TOÁN VÀ ĐƠN VỊ ĐANG CÔNG TÁC THỰC TẬP
Quy trình tuyển dụng và các vị trí công việc phổ biến trong lĩnh vực CNTT
1.1.1 Nhu cầu thực tiễn nhân sự trong lĩnh vực CNTT
CNTT (Công nghệ Thông tin) là lĩnh vực quan trọng trong sự phát triển của xã hội hiện đại, liên quan đến việc sử dụng máy tính và phần mềm để chuyển đổi, xử lý, lưu trữ, bảo mật, thu thập và truyền tải thông tin Việc ứng dụng CNTT không chỉ giúp nâng cao đời sống con người mà còn góp phần tạo nên một xã hội thông minh hơn Trong kỷ nguyên công nghệ bùng nổ, nhu cầu nhân sự trong lĩnh vực này ngày càng tăng cao, mang lại tiềm năng phát triển lớn Tuy nhiên, CNTT yêu cầu người lao động có tư duy logic và khả năng phân tích tốt để tối ưu hóa thông tin, nhằm đạt hiệu quả cao trong ứng dụng thực tiễn.
Theo thống kê từ 2018 đến 2022, nhu cầu nhân lực trong ngành công nghệ thông tin tại Việt Nam đang tăng mạnh Báo cáo thị trường CNTT Việt Nam 2021 của TopDev dự đoán đến năm 2021, Việt Nam sẽ cần thêm 450.000 nhân lực trong lĩnh vực này, trong khi số lập trình viên hiện tại chỉ đạt khoảng 430.000, dẫn đến 20.000 vị trí sẽ không được lấp đầy Nguyên nhân chính của sự thiếu hụt này là do khoảng cách giữa trình độ lập trình viên và yêu cầu của doanh nghiệp Hiện chỉ có khoảng 16.500 sinh viên (gần 30%) trong tổng số 55.000 sinh viên chuyên ngành CNTT đáp ứng đủ kỹ năng mà doanh nghiệp cần.
Lĩnh vực Công nghệ Thông tin (CNTT) không chỉ bao gồm vị trí lập trình viên mà còn rất đa dạng với nhiều công việc khác nhau như Chuyên viên mạng máy tính, Nhà phát triển phần mềm, và nhiều vị trí mới nổi trong kỷ nguyên công nghệ bùng nổ Sự phong phú của các vị trí công việc này thu hút một lượng lớn ứng viên, phản ánh nhu cầu ngày càng cao trong ngành CNTT.
Mặc dù nhu cầu về công nghệ thông tin (CNTT) ngày càng tăng, nhưng các doanh nghiệp và tổ chức trong lĩnh vực này vẫn đang đối mặt với tình trạng thiếu hụt nhân sự nghiêm trọng, đặc biệt là sau đại dịch Covid-19.
CV là thuật ngữ quen thuộc và trở thành yêu cầu thiết yếu của nhà tuyển dụng đối với ứng viên CV là viết tắt của cụm từ "Curriculum Vitae", thể hiện quá trình học tập và làm việc của cá nhân.
Curriculum Vitae (CV) là tài liệu tóm tắt thông tin cơ bản của ứng viên, bao gồm trình độ học vấn, kỹ năng liên quan đến vị trí công việc và kinh nghiệm làm việc.
CV đóng vai trò quan trọng trong việc đánh giá và nhận xét ứng viên, trở thành cơ sở chính để xem xét sự phù hợp của họ Mỗi vị trí ứng tuyển thường nhận được một số lượng hồ sơ lớn, tùy thuộc vào nhiều yếu tố khác nhau Do đó, nhà tuyển dụng không thể phỏng vấn tất cả ứng viên, mà phải dựa vào CV để loại bỏ những người không phù hợp ngay từ vòng sơ loại đầu tiên.
1.1.2 Quy trình tuyển dụng trong lĩnh vực CNTT
Mỗi tổ chức và doanh nghiệp có quy trình tuyển dụng nhân lực riêng, phù hợp với đặc thù của họ Trong lĩnh vực CNTT, quy trình này bao gồm việc xác định các tiêu chí nhằm đảm bảo cả số lượng và chất lượng ứng viên Quy trình tuyển dụng thường được xây dựng dựa trên những bước cơ bản, gắn liền với nhu cầu và đặc điểm của từng doanh nghiệp.
Bước đầu tiên trong quy trình tuyển dụng nhân sự là xác định và lên kế hoạch tuyển dụng Quy trình này dựa trên việc khảo sát và thu thập nhu cầu nhân sự từ các bộ phận, đồng thời xem xét tiến độ phát triển của doanh nghiệp.
Hình 1 1 Lập kế hoạch tuyển dụng nhân sự
- Bước 2: Triển khai kế hoạch và tìm kiếm nguồn ứng viên
Sau khi triển khai kế hoạch tuyển dụng, phòng HCNS hoặc bộ phận nhân sự sẽ thực hiện kế hoạch này bằng cách thông báo thông tin ứng tuyển đến ứng viên từ nhiều nguồn khác nhau Các nguồn phổ biến hiện nay bao gồm việc cập nhật thông tin trên website doanh nghiệp, các trang chợ việc làm, sự kiện tuyển dụng, và tìm kiếm ứng viên trong kho dữ liệu của doanh nghiệp Mục tiêu của doanh nghiệp là truyền thông tin rộng rãi để thu hút nguồn nhân lực đa dạng và phong phú.
- Bước 3: Tiến hành các thủ tục tuyển dụng
Trong quá trình tuyển dụng, phòng HCNS sẽ tiến hành sơ loại CV ứng tuyển dựa trên các tiêu chí của vị trí cần tuyển Họ sẽ sàng lọc các CV phù hợp để chọn ra những ứng viên cho vòng tiếp theo Đây là một công đoạn tốn nhiều thời gian và công sức.
Bộ phận HCNS sẽ liên hệ và xác nhận lịch phỏng vấn cho các ứng viên dựa trên bộ dữ liệu CV đã được sàng lọc từ vòng sơ loại.
Trong quá trình phỏng vấn, các cán bộ nhân sự (CBNS) sẽ được sắp xếp và bố trí phù hợp với yêu cầu của vị trí tuyển dụng Những CBNS này thường là những người có kinh nghiệm trong lĩnh vực công việc cụ thể hoặc là các trưởng phòng và cán bộ cấp trên.
Tùy thuộc vào đặc thù của từng doanh nghiệp, hình thức phỏng vấn có thể khác nhau Thông thường, phỏng vấn diễn ra dưới hình thức hỏi đáp giữa nhà tuyển dụng và ứng viên Đặc biệt trong lĩnh vực công nghệ thông tin, nhà tuyển dụng có thể yêu cầu ứng viên thực hiện các bài kiểm tra kỹ năng ngay tại buổi phỏng vấn để đánh giá năng lực của họ.
Báo cáo và đánh giá kết quả tuyển dụng là bước quan trọng mà bộ phận HCNS thực hiện sau khi có kết quả Bộ phận này sẽ thông báo tới Ban lãnh đạo công ty về kết quả tuyển dụng và cung cấp thông tin cần thiết cho các ứng viên Sau đó, các nghiệp vụ tiếp theo sẽ được triển khai.
1.1.3 Các vị trí công việc phổ biến trong lĩnh vực CNTT
Những khó khăn cho nhà tuyển dụng trong việc phân loại CV ứng tuyển
Tuyển dụng là quy trình quan trọng phản ánh văn hóa và đặc thù của tổ chức, doanh nghiệp, với mục tiêu chính là tìm kiếm nguồn nhân lực chất lượng Nguồn nhân lực được coi là xương sống của doanh nghiệp, quyết định sự phát triển và thành công của tổ chức.
9 nghiệp nên việc tuyển chọn đầu vào nhau sự là việc rất quan trọng, then chốt ảnh hưởng trực tiếp tới sự phát triển của tổ chức, doanh nghiệp
Việc phân loại và chọn lọc CV ứng tuyển là một quy trình tốn nhiều thời gian và công sức, đặc biệt đối với các doanh nghiệp lớn như Tập đoàn FPT hay Tập đoàn Công nghiệp – Viễn thông Quân đội Đối với doanh nghiệp quy mô nhỏ hoặc trung bình, công đoạn này có thể không phải là thách thức lớn, nhưng đối với các doanh nghiệp vừa và lớn, việc xử lý từ 100 đến 250 CV mỗi ngày trở thành một thách thức khởi đầu quan trọng Do đó, các doanh nghiệp cần đảm bảo nguồn lực nhân sự đủ về số lượng và chất lượng để đáp ứng nhu cầu tuyển dụng.
CV là một phần quen thuộc trong quy trình tuyển dụng của các công ty, đặc biệt là sau Covid, khi số lượng CV ứng tuyển có thể lên tới 300 – 500 đối với những doanh nghiệp lớn Việc phân loại CV cần được thực hiện nhanh chóng để sắp xếp nhân sự mới, đảm bảo hiệu quả về thời gian và chất lượng Doanh nghiệp có thể sơ loại CV ngay khi nhận được hoặc theo kỳ hạn trong quá trình tuyển dụng, tùy thuộc vào nghiệp vụ tuyển dụng của từng tổ chức.
Phân loại CV ứng tuyển là một nhiệm vụ quan trọng trong tổ chức doanh nghiệp, giúp lọc ra những ứng viên phù hợp với tiêu chí đề ra Qua quá trình này, số lượng CV từ vài trăm có thể được giảm xuống, nhưng vẫn đảm bảo đáp ứng các yêu cầu cơ bản Điều này giúp doanh nghiệp tiết kiệm thời gian và tập trung vào những ứng viên tiềm năng Thông thường, bộ phận HCNS sẽ đảm nhiệm việc phân loại CV, tuy nhiên, số lượng nhân sự trong bộ phận này thường không lớn, chỉ dao động từ 10 đến một vài người.
Số lượng nhân sự tham gia phân loại CV phụ thuộc vào quy mô tổ chức, thường giới hạn trong khoảng 30 người Thời gian phân loại CV thường kéo dài từ 4 đến 5 ngày, tùy thuộc vào lộ trình tuyển dụng của doanh nghiệp, vì đây là bước quan trọng trong việc thiết lập mối liên kết giữa tổ chức và ứng viên Hiện nay, nhiều doanh nghiệp vẫn sử dụng phương pháp thủ công để phân loại CV đầu vào Các cán bộ nhân sự sẽ thực hiện việc này từ các nguồn đã thu thập, lưu trữ, phân loại và quản lý thông qua EXCEL hoặc phần mềm quản lý nhân sự của công ty, giúp quá trình quản lý trở nên dễ dàng hơn, đặc biệt đối với các tổ chức có quy mô lớn.
Doanh nghiệp nhận trung bình từ 10 đến 30 CV mỗi ngày, nhưng với những công ty có lượng CV thu về lên tới 100 hoặc vài trăm CV/ngày, việc quản lý và xử lý số lượng lớn này trở thành một thách thức lớn.
Phân loại CV là bước quan trọng trong quy trình tuyển dụng, giúp doanh nghiệp xử lý hiệu quả số lượng lớn hồ sơ ứng viên Quy trình này không chỉ rút ngắn thời gian tuyển dụng mà còn đảm bảo chất lượng ứng viên cho phỏng vấn trực tiếp Để thực hiện hiệu quả, doanh nghiệp cần có đủ nguồn nhân lực và thời gian cho công tác phân loại Nếu không nhanh chóng tiến hành, doanh nghiệp có thể bỏ lỡ những ứng viên tiềm năng, dẫn đến kéo dài thời gian tuyển dụng và ảnh hưởng tiêu cực đến hoạt động của tổ chức Các ứng viên thường mong muốn nhận phản hồi sớm, và việc chậm trễ trong phân loại CV có thể khiến họ nộp hồ sơ cho nhiều nơi khác, làm tăng nguy cơ mất đi những nhân tài chất lượng.
Nhu cầu ứng tuyển các thuật toán Học máy để tự động hóa việc phân loại CV ứng tuyển
Việc ứng dụng các thuật toán Học máy nhằm mục đích tự động hóa việc phân loại
CV ứng tuyển có thể giải quyết được một vài vấn đề khó khăn của nhà tuyển dụng:
Tiết kiệm thời gian cho nhà tuyển dụng là yếu tố quan trọng mà các doanh nghiệp cần chú trọng Quy trình tuyển dụng truyền thống thường kéo dài, gây ra sự chậm trễ và dẫn đến tình trạng thiếu nhân sự Điều này không chỉ ảnh hưởng đến sự phát triển của doanh nghiệp mà còn có nguy cơ mất đi những ứng viên tiềm năng vào tay đối thủ cạnh tranh.
Để đảm bảo sự công bằng trong tuyển dụng, các tổ chức cần chú ý đến việc phân loại CV ứng viên, vì điều này có thể dẫn đến sự thiên vị vô thức đối với các ứng viên Những yếu tố như giới tính, độ tuổi, bằng cấp và quê quán có thể ảnh hưởng đến quyết định tuyển dụng Việc áp dụng các biện pháp công bằng trong quy trình tuyển chọn là rất cần thiết để tạo ra một môi trường làm việc đa dạng và bao trùm.
11 thuật toán học máy sẽ sử dụng dữ liệu đã được chuẩn hóa từ những thông tin thu thập được, nhằm đưa ra quyết định chính xác Điều này giúp giảm thiểu rào cản thiên vị, từ đó đảm bảo quá trình tuyển dụng diễn ra công bằng hơn.
Sử dụng Học máy trong quá trình phân loại CV giúp doanh nghiệp tiết kiệm công sức nhân sự và tối ưu hóa thời gian xử lý Với số lượng CV lớn, phương pháp truyền thống thường dẫn đến chậm trễ và tiêu tốn nhiều nguồn lực Bằng cách áp dụng công nghệ này, tổ chức có thể giảm bớt gánh nặng cho nhân viên, từ đó nâng cao hiệu quả quy trình tuyển dụng và đảm bảo chất lượng ứng viên.
Tổng quan nghiên cứu
Tổng quan nghiên cứu được trình bày từ ba nghiên cứu quốc tế, nhằm xây dựng mô hình lựa chọn thuật toán phù hợp với bộ dữ liệu đầu vào thông qua việc kế thừa và phát triển các phương pháp hiện có.
Báo cáo nghiên cứu “Resume Classification and Ranking using KNN and Cosine Similarity” [7]
Tác giả đã đề xuất giải pháp phân loại và xếp hạng hồ sơ ứng viên từ hai khía cạnh nhà tuyển dụng và ứng viên, sử dụng NPL và ML để xây dựng mô hình dựa trên thuật toán KNN Quy trình bắt đầu với việc tiền xử lý dữ liệu, bao gồm loại bỏ ký tự đặc biệt, làm sạch dữ liệu và mã hóa thông tin Đặc biệt, tác giả áp dụng phương pháp TfidfVectorizer để mã hóa dữ liệu văn bản Mô hình được huấn luyện dựa trên mô tả công việc của nhà tuyển dụng và sử dụng công cụ mã nguồn mở nhằm mở rộng quy mô Kết quả đạt được với độ chính xác 98,96%.
Báo cáo nghiên cứu “Resume Ranking using NLP and Machine Learning”
Tác giả đã ứng dụng NPL (Xử lý ngôn ngữ tự nhiên) và ML để giải quyết bài toán xếp hạng hồ sơ ứng viên theo các yêu cầu cụ thể Bộ dữ liệu được thu thập từ các đối tác khách hàng cũng như từ các nền tảng tuyển dụng như LinkedIn và Github Trong bối cảnh tuyển dụng, nhà tuyển dụng luôn tìm kiếm ứng viên phù hợp nhất với nhu cầu của công ty, trong khi các ứng viên cũng mong muốn tìm kiếm công việc tương thích với kỹ năng của mình Qua quá trình phân tích, tác giả đã phát triển một phần mềm để hỗ trợ trong việc này.
Báo cáo nghiên cứu “Design and Development of Machine Learning based Resume Ranking System” [9]
Bài viết trình bày về việc sử dụng tập dữ liệu gồm khoảng năm mươi hồ sơ xin việc từ Kaggle, tập trung vào vai trò nhà phát triển Java và quản lý dự án, được chuyển đổi từ định dạng docx sang pdf để thuận tiện cho việc xử lý Tác giả áp dụng thuật toán kNN để tìm kiếm các CV tương tự với mô tả công việc, đồng thời sử dụng module “Ginism” để tóm tắt văn bản, giúp xây dựng kho ngữ liệu lớn Hệ thống được phát triển có khả năng đánh giá sơ yếu lý lịch của ứng viên với độ chính xác phân tích cú pháp đạt 85% và độ chính xác ghi điểm lên tới 92%.
Báo cáo nghiên cứu “ Resume Screening with Natural Language Processing in Python ” [10]
Để giải quyết vấn đề hồ sơ ứng tuyển lớn của các nhà tuyển dụng, tác giả đã áp dụng phương pháp sàng lọc bằng máy học Bộ dữ liệu đầu vào được sử dụng để tối ưu hóa quá trình này.
Bài viết trình bày 962 bản ghi ứng tuyển cho 25 vị trí công việc trong lĩnh vực CNTT, bao gồm các vai trò như Nhà phát triển Java, Kiểm thử và Kỹ sư DevOps Dữ liệu được quản lý bằng Excel và tác giả áp dụng phương pháp "One vs Rest" kết hợp với "kNN" để xây dựng mô hình phân loại đa lớp Sau khi phân chia dữ liệu với 80% cho huấn luyện và 20% cho kiểm tra, hệ thống đạt được độ chính xác 99% trong việc phân loại.
Hiện tại, Việt Nam chưa có nghiên cứu về việc áp dụng học máy trong phân loại và xếp hạng CV ứng tuyển trong lĩnh vực CNTT Bài viết này nhằm kế thừa kiến thức và tìm hiểu thêm tài liệu cần thiết để hình thành hiểu biết sâu sắc về việc áp dụng các kỹ thuật học máy trong phân loại CV ứng tuyển trong ngành công nghệ thông tin.
Do hạn chế về thời gian và phạm vi tìm kiếm, việc thu thập dữ liệu phong phú từ nhiều nguồn theo từng thời điểm và địa điểm trở nên khó khăn.
Phạm vi tìm kiếm sẽ được giới hạn tại Công ty Cổ phần Phần mềm BRAVO, cùng với một số dữ liệu từ các nguồn tuyển dụng khác.
Công ty Cổ phần Phần mềm BRAVO và thực trạng tuyển dụng vị trí CNTT
1.5.1 Sơ lược về công ty
- Tên công ty: Công ty Cổ phần Phần mềm BRAVO
- Tên tiếng anh: BRAVO Software Joint Stock Company
- Địa chỉ: 313, Trường Chinh, Khương Mai, Thanh Xuân, Hà Nội
- Website: https://www.bravo.com.vn/
BRAVO là công ty chuyên triển khai và phát triển ứng dụng phần mềm trong lĩnh vực công nghệ thông tin, tập trung vào quản lý sản xuất kinh doanh để nâng cao hiệu quả quản trị và điều hành cho doanh nghiệp và tổ chức Với kiến thức sâu rộng về kế toán và đặc thù quản lý doanh nghiệp tại Việt Nam, BRAVO nổi bật với những thế mạnh đáng chú ý trong ngành.
Sơ đồ cơ cấu tổ chức của BRAVO:
BRAVO có 3 chi nhánh tại Hà Nội, Đà Nẵng và TP Hồ Chí Minh
Hình 1 2 Sơ đồ cơ cấu tổ chức của công ty BRAVO
1.5.2 Thực trạng công tác tuyển dụng các vị trí CNTT của công ty
Tính đến tháng 3 năm 2022, công ty BRAVO có 335 nhân sự chính thức và 157 nhân sự thử việc Hiện tại, khoảng 55.67% hợp đồng với khách hàng đã hoàn thành, trong khi 36.85% đang trong quá trình triển khai và 7.48% vẫn chưa được thực hiện.
[12] Hiện tại, BRAVO đang rất cần nguồn nhân lực đảm bảo chất lượng để đẩy nhanh hiệu quả triển khai và hoàn thành hợp đồng với khách hàng
Theo thống kê từ trang Tuyển dụng của BRAVO, công ty hiện đang cần tuyển 9 vị trí và thường xuyên cập nhật thông tin tuyển dụng Thời gian cập nhật thông tin trên website diễn ra khoảng 1 đến 1.5 tháng một lần.
Hình 1 3 Thống kê số lượng cần tuyển dụng quý 1 năm 2022 của BRAVO [12]
Hình 1 4 Thống kê số lượng CV ứng tuyển thu nhận quý 1 năm 2022 [12]
Bộ phận Hành chính nhân sự sẽ đề xuất với ban giám đốc về số lượng ứng viên cần tuyển cho từng vị trí, dựa trên khối lượng công việc cụ thể BRAVO chủ yếu phân chia ứng tuyển thành hai nhóm chính.
Nhóm 1 bao gồm các vị trí công việc cụ thể như Lập trình viên, Nhân viên BA, Nhân viên Bảo hành phần mềm, Nhân viên Test sản phẩm, Nhân viên Giải pháp – Tư vấn, Nhân viên kinh doanh, Nhân viên Phát triển sản phẩm, và Nhân viên Triển khai phần mềm Các vị trí này đòi hỏi ứng viên có kinh nghiệm và trình độ kiến thức cao hơn liên quan đến công việc được ứng tuyển.
Nhóm 2 bao gồm sinh viên thực tập năm 3 và năm 4 từ các ngành công nghệ thông tin hoặc hệ thống thông tin quản lý tại các trường đại học Nhóm này không yêu cầu kinh nghiệm cao, tạo cơ hội cho sinh viên phát triển kỹ năng trong môi trường thực tế.
STT Vị trí ứng tuyển
3 Nhân viên Bảo hành phần mềm
4 Nhân viên Giải pháp – Tư vấn
5 Nhân viên Phát triển sản phẩm
6 Nhân viên Test sản phẩm
7 Nhân viên Triển khai phần mềm
Bảng 1 1 Danh sách vị trí ứng tuyển tại BRAVO
Phòng Quản lý tổng hợp chịu trách nhiệm quản lý CV ứng tuyển của các ứng viên với 16 nhân sự làm việc trong các lĩnh vực kế toán, nhân sự, hành chính, chăm sóc khách hàng và lái xe Trong đó, 5 người đảm nhận việc cập nhật thông tin và thu thập CV từ ba nguồn khác nhau.
Nguồn 1: Các ứng viên sẽ gửi CV đính kèm vào địa chỉ hòm thư tuyendunghn@bravo.com.vn của công ty
Nguồn 2: Nộp trực tiếp tại Phòng HCNS – Công ty Cổ phần Phần mềm BRAVO
Nguồn 3: Ứng tuyển gửi CV qua website https://www.bravo.com.vn của công ty
Sau khi thu thập tất cả các CV, CBNS phụ trách sẽ cập nhật chúng trên phần mềm BRAVO 8 và tiến hành lọc thủ công theo các nhóm ngành Việc cập nhật CV diễn ra liên tục; khi có CV mới, CBNS sẽ phân loại trực tiếp trên phần mềm Cuối cùng, Trưởng phòng Khối Kỹ thuật sẽ lựa chọn những CV phù hợp với yêu cầu của công ty để tiến hành phỏng vấn.
Hình 1 5 Quy trình quản lý CV của BRAVO
Quy trình quản lý CV ứng tuyển tại BRAVO gặp khó khăn trong việc xử lý số lượng lớn hồ sơ ứng tuyển, với hàng trăm đến hàng ngàn CV được gửi mỗi ngày Chỉ có 5 CBNS phụ trách cập nhật và phân loại CV, dẫn đến việc xử lý thủ công chậm chạp và tốn thời gian Hệ quả là công ty có thể bỏ lỡ những ứng viên tiềm năng, đặc biệt trong bối cảnh các doanh nghiệp hiện nay đang phải đối mặt với thách thức về nguồn nhân lực cả về số lượng lẫn chất lượng.
Kết luận
Việc phân loại CV ứng tuyển là một bước quan trọng trong quy trình tuyển dụng của các doanh nghiệp Quá trình này không chỉ cần nhiều thời gian mà còn yêu cầu xử lý một lượng lớn dữ liệu để đảm bảo hiệu quả trong việc lựa chọn ứng viên phù hợp.
Số lượng CV lớn nhưng cán bộ nhân sự hạn chế, ảnh hưởng đến sự công bằng và kết nối giữa nhà tuyển dụng và ứng viên Để tìm kiếm ứng viên sáng giá, nhà tuyển dụng cần quy trình phân loại CV nhanh chóng và chất lượng, giúp giữ chân những ứng viên tiềm năng Việc ứng dụng thuật toán Học máy có thể khắc phục những khó khăn trong phân loại CV, từ thời gian xử lý đến số lượng nhân sự, đồng thời đảm bảo sự khách quan trong việc sơ loại ứng viên.
Doanh nghiệp có thể tiết kiệm chi phí trong quy trình tuyển dụng nhân lực, đảm bảo tính khách quan khi phân loại CV ứng viên, và quan trọng hơn, không bỏ lỡ những ứng viên tiềm năng rơi vào tay đối thủ cạnh tranh.
CáCHƯƠNG 2: CƠ SỞ LÝ THUYẾT CÁC THUẬT
TOÁN HỌC MÁY CHO PHÂN LOẠI CV TỰ ĐỘNG
Chương 2 từ việc tìm hiểu cơ sở lý thuyết về học máy, các bài toán phân loại và việc mã hóa dữ liệu văn bản dựa trên các phương pháp Đây chính là cơ sở lý thuyết về phương pháp nghiên cứu trong khóa luận.
Học máy và bài toán phân loại
Học máy (Machine Learning - ML) là một ứng dụng của trí tuệ nhân tạo (Artificial Intelligence - AI) cho phép hệ thống máy thích nghi với môi trường và tự động học các mẫu phức tạp Các thuật toán ML giúp rút trích nguyên lý từ tri thức thu nhận, phục vụ cho việc ra quyết định thông minh dựa trên dữ liệu Ví dụ, trong việc dự báo thời tiết, chương trình học từ dữ liệu dự báo và cải thiện dự đoán tương lai dựa trên các quan sát.
In his book "Machine Learning," Tom Mitchell defines that a computer program learns from experience E concerning a specific class of tasks T and a performance measure P if its performance on tasks in T, evaluated by P, improves with experience E In simpler terms, a computer program is considered to learn from data E when it enhances its accuracy P in performing tasks such as clustering, classification, and prediction T based on the provided data.
Bài toán này sử dụng bộ dữ liệu E, bao gồm 719 bản ghi từ các ứng viên, với các thuộc tính như tên, CV và vị trí công việc Bộ dữ liệu này được cung cấp trước giá trị biến mục tiêu để thực hiện các tác vụ T, nhằm phân loại CV ứng tuyển.
Mô hình Machine Learning được đánh giá qua độ đo P (độ chính xác), giúp cải thiện hiệu suất của mô hình Đây là những thành phần cơ bản trong hệ thống Machine Learning.
2.1.2 Bài toán phân loại trong học máy
Trong học máy, các thuật toán thường được phân loại thành hai nhóm chính: một là dựa trên phương thức học, và hai là dựa trên chức năng của từng thuật toán.
2.1.2.1 Phân loại dựa trên phương thức học
Machine learning algorithms are typically categorized into four main groups: Supervised learning, which involves training models on labeled data; Unsupervised learning, where models identify patterns in unlabeled data; Semi-Supervised learning, which combines both labeled and unlabeled data for training; and Reinforcement learning, where algorithms learn through trial and error to maximize rewards.
Học có giám sát (Supervised learning)
Học có giám sát là một thuật toán dự đoán kết quả dựa trên dữ liệu mới, phụ thuộc vào các cặp (input, output) đã được cung cấp trước đó Các cặp này, còn được gọi là (data, label), bao gồm dữ liệu và nhãn Đây là nhóm thuật toán phổ biến nhất trong lĩnh vực học máy (ML).
Học có giám sát trong toán học bao gồm một tập hợp đầu vào 𝑋 {𝑥 1 , 𝑥 2 , , 𝑥 𝑁 } và một tập hợp nhãn tương ứng 𝑌 = {𝑦 1 , 𝑦 2 , , 𝑦 𝑁 } Các cặp dữ liệu đã biết (𝑥 𝑖 , 𝑦 𝑖 ) ∈ 𝑋 × 𝑌 được gọi là tập dữ liệu huấn luyện Mục tiêu là xây dựng một hàm số ánh xạ mỗi phần tử từ tập 𝑋 đến một phần tử (xấp xỉ) trong tập 𝑌.
𝑦 𝑖 ≈ 𝑓(𝑥 𝑖 ), ∀𝑖 = 1, 2, , 𝑁 Học có giám sát còn được chia nhỏ ra thành hai loại chính:
- Phân loại (Classification): Bài toán phân loại là bài toán có các nhãn của tập dữ liệu đầu vào được chia thành một số hữu hạn nhóm
- Hồi quy (Regression): Nếu label không được chia thành các nhóm mà là một giá trị thực cụ thể
Học không giám sát (Unsupervised Learning)
Thuật toán học không giám sát hoạt động chỉ dựa vào dữ liệu đầu vào mà không cần biết đến nhãn hay dầu ra Phương pháp này sử dụng cấu trúc của dữ liệu để thực hiện các nhiệm vụ như phân nhóm (clustering) hoặc giảm chiều dữ liệu, nhằm tối ưu hóa việc lưu trữ và tính toán.
Học không giám sát trong toán học là quá trình mà không có nhãn Y tương ứng, chỉ có tập dữ liệu đầu vào X Khác với học có giám sát, trong học không giám sát, dữ liệu đầu vào không đi kèm với đáp án chính xác.
Học không giám sát được chia nhỏ thành hai loại:
Phân nhóm (Clustering) là một phương pháp phân tích dữ liệu, trong đó các dữ liệu được tổ chức thành các nhóm nhỏ dựa trên sự tương quan giữa chúng Mục tiêu của phân nhóm là xác định và phân chia toàn bộ tập dữ liệu X thành những nhóm có tính chất tương đồng, giúp dễ dàng nhận diện và phân tích các đặc điểm chung trong từng nhóm.
- Luật kết hợp (Association): Là bài toán khi chúng ta muốn khám phá ra một quy luật dựa trên nhiều dữ liệu cho trước
Học bán giám sát (Semi-Supervised Learning)
Học bán giám sát là phương pháp giải quyết các bài toán với lượng dữ liệu lớn, trong đó chỉ một phần dữ liệu được gán nhãn Phương pháp này nằm giữa học có giám sát và học không giám sát, giúp tối ưu hóa việc sử dụng dữ liệu không gán nhãn để cải thiện hiệu suất học máy.
Học củng cố (Reinforcement Learning)
Học củng cố là một phương pháp giải quyết các bài toán nhằm xây dựng hệ thống tự động có khả năng xác định hành vi dựa trên hoàn cảnh, từ đó tối ưu hóa hiệu suất và đạt được lợi ích cao nhất.
2.1.2.1 Phân loại dựa trên chức năng
Theo PhD Jason Brownlee, các thuật toán phân loại dựa theo một số chức năng và phân nhánh của chúng như sau:
Hình 2 1 Phân loại các thuật toán dựa trên chức năng [16]
2.1.3 Đánh giá kết quả phân loại
Ma trận nhầm lẫn là công cụ quan trọng để đánh giá hiệu suất của thuật toán phân loại Đây là một trong những kỹ thuật đo lường hiệu suất phổ biến nhất trong lĩnh vực này.
Trong bài toán phân lớp với hai biến mục tiêu, có thể xảy ra bốn khả năng khi so sánh kết quả trả về trên tập mẫu với thực tiễn, bao gồm cặp tốt - xuất và cặp đúng - sai.
Hình 2 2 Ma trận sai số - confusion matrix
Ví dụ cụ thể trên nhãn A
True Positive: Đại lượng này cho ta biết số lượng dữ liệu dự đoán đúng trên nhãn
False Positive: Đại lượng này cho ta biết số lượng dữ liệu được dự đoán là nhãn
A nhưng thực tế lại không phải là nhãn A Trong trường hợp này mô hình sai
Các thuật toán học máy có giám sát cho bài toán phân loại [14]
2.2.1 Phân loại dữ liệu với cây quyết định
Cây quyết định (decision tree) là một mô hình phân loại có cấu trúc phân cấp, sử dụng dãy luật để phân loại các đối tượng Mô hình này giúp xác định các quyết định dựa trên các đặc điểm của dữ liệu.
- Node nội: là phép kiểm thử (test) trên một thuộc tính
- Node lá: là nhãn/mô tả của một lớp (class label)
- Nhánh từ một node nội: kết quả của một phép thử trên thuộc tính tương ứng
Giải thuật xây dựng cây quyết định: ID3, C4.5, J4.8, CART (Classification and Regression Trees – binary decision trees)
2.2.2 Phân loại dữ liệu với mạng Bayesian
Phân loại dữ liệu bằng mạng Bayes sử dụng xác suất để phân tích các bằng chứng nhất quán và không nhất quán Xác suất của giả thuyết có thể thay đổi, dẫn đến sự thay đổi trong các bằng chứng liên quan Phương pháp này dựa trên định lý Bayes, cho phép tính toán xác suất xảy ra của các sự kiện ngẫu nhiên.
Nếu chúng ta có 𝑃(𝑋|𝐻) nhưng muốn có 𝑃(𝐻|𝑋) ta có thể áp dụng công thức
2.2.3 Phân loại dữ liệu với mạng neural
Phân loại dữ liệu bằng mạng neural được thực hiện qua việc học một tập hợp có trọng số các dự đoán cho các nhãn Quá trình này thường sử dụng thuật toán backpropagation Mạng neural bao gồm ba thành phần chính: input layer, một hoặc nhiều layers ẩn, và output layer Dữ liệu được đưa vào input layer, sau đó được xử lý dựa trên trọng số để chuyển đến các neuron trong hidden layer, và cuối cùng, kết quả được trả về từ output layer.
2.2.4 Phân loại dữ liệu với k phần tử gần nhất (k – nearest neighbor)
Trong bài toán phân loại, thuật toán kNN xác định nhãn của một điểm dữ liệu dựa vào k điểm dữ liệu gần nhất trong bộ huấn luyện Nhãn của bộ dữ liệu kiểm thử được quyết định thông qua phương pháp bầu chọn theo số phiếu giữa các điểm gần nhất, hoặc có thể được tính toán bằng cách áp dụng trọng số khác nhau cho từng điểm gần nhất để suy ra nhãn.
Thuật toán KNN (K-Nearest Neighbors) hoạt động bằng cách dựa vào thông tin từ K điểm dữ liệu gần nhất trong bộ huấn luyện để xác định đầu ra cho một điểm dữ liệu mới Đặc biệt, thuật toán này không bị ảnh hưởng bởi sự xuất hiện của một số điểm dữ liệu lân cận gây nhiễu.
Đầu vào của bài toán là tập dữ liệu huấn luyện D với các lớp khác nhau Sử dụng luật số đông, chúng ta phân loại đối tượng X vào các lớp dựa trên k phần tử tương tự với X Để thực hiện phân loại, độ đo Euclidean được áp dụng nhằm xác định sự tương đồng giữa các phần tử.
Chọn giá trị k: o Kết quả bị nhiễu nếu lựa chọn k quá nhỏ o Xuất hiện nhiều phần tử lân cận từ các lớp khác nhau nếu lựa chọn k quá lớn.
Mã hóa dữ liệu văn bản
2.3.1 Mã hóa dữ liệu dựa trên tần suất xuất hiện của từ
2.3.1 Mã hóa dữ liệu văn bản theo phương pháp CountVectorizer
CountVectorizer là một kỹ thuật hiệu quả để chuyển đổi văn bản thành vectơ dựa trên tần suất xuất hiện của từng từ trong toàn bộ nội dung Phương pháp này giúp xây dựng vốn từ vựng từ các từ đã biết, góp phần quan trọng trong việc phân tích và xử lý ngôn ngữ tự nhiên.
Ví dụ: Tập D = [“Hôm qua trời mưa”, “Hôm nay trời nắng”, “Ngày mai có bão”] bão có hôm mai mưa nay ngày nắng qua trời
Bảng 2 1 Bảng mã hóa dữ liệu văn bản dựa trên CountVectorizer
Hình 2 4 Ví dụ về mã hóa dữ liệu dựa trên CountVectorizer 2.3.2 Mã hóa dữ liệu văn bản theo phương pháp TFIDF
TFIDF (Tần suất thuật ngữ - Tần suất tài liệu ngược) là một phương pháp thống kê giúp xác định trọng số của từ trong bộ văn bản, từ đó đánh giá mức độ quan trọng của từ đó Phương pháp này chuyển đổi biểu diễn văn bản sang dạng không gian vector (Mô hình không gian vector - VSM) hoặc thành các vector thưa thớt.
Tần suất xuất hiện của một từ trong văn bản, hay còn gọi là TF (Term frequency), phản ánh mức độ phổ biến của từ đó Để đảm bảo tính chính xác, tần suất này được chuẩn hóa bằng cách chia cho độ dài của đoạn văn, do sự khác biệt về độ dài giữa các đoạn văn bản.
- 𝑡: là một từ trong đoạn văn bản
- 𝑓(𝑡, 𝑑): tần suất xuất hiện của 𝑡 trong đoạn văn bản 𝑑
- 𝑇: Tổng số từ trong đoạn văn bản đó
IDF (Inverse Document Frequency) là một phương pháp tính toán độ quan trọng của từ trong văn bản Trong khi TF (Term Frequency) coi tất cả các từ là quan trọng như nhau, IDF giúp xác định những từ có tần suất xuất hiện cao nhưng ít giá trị, như “is”, “of”, “that” Do đó, IDF điều chỉnh trọng số của các từ, giảm thiểu ảnh hưởng của những từ thường gặp và tăng cường giá trị của những từ có ý nghĩa đặc biệt trong ngữ cảnh.
- 𝑁: tổng số đoạn văn bản
- Tập|𝑡 ∈ 𝐷: 𝑡 ∈ 𝑑|: là số văn bản chứa từ 𝑡
2.3.2 Mã hóa dữ liệu dựa trên phương pháp học sâu
Word2vec là một mạng nơ-ron đơn giản với một tầng ẩn và hai lớp, sử dụng một tập dữ liệu lớn để tạo ra các vector không gian có chiều dài khoảng vài trăm Mỗi vector tương ứng với một từ duy nhất trong tập dữ liệu Phương pháp này có thể áp dụng cho các bài toán không chỉ trong lĩnh vực ngôn ngữ Các vector được xác định trong không gian vector, nơi những từ có ngữ cảnh tương tự sẽ gần nhau Dựa trên các lần huấn luyện trước, Word2vec có khả năng dự đoán chính xác ý nghĩa của một từ.
Hình 2 5 Phương pháp Word2vec
Word2vec có hai phương pháp chính: mô-đun CBOW, dựa vào ngữ cảnh để dự đoán xác suất xuất hiện của từ mục tiêu, và mô-đun Skip-gram, sử dụng từ hiện tại để dự đoán xác suất của các ngữ cảnh liên quan.
2.3.2.2 Phương pháp FastText Đây là phương pháp được mở rộng từ phương pháp Word vector FastText được xây dựng bởi Facebook AI Research Phương pháp này thực hiện chia text ra thành nhiều
Phương pháp n-gram ký tự, với 27 đoạn nhỏ, cho phép xử lý từ mà không cần đào tạo theo đơn vị từ Cách tiếp cận này đặc biệt hiệu quả trong việc xử lý các từ hiếm gặp hoặc không có trong kho ngữ liệu, khi những từ này có thể được phân tách thành các n-gram.
Hình 2 6 Phương pháp FastText 2.3.2.2 Phương pháp Glove
Phương pháp Glove được phát triển từ hai kỹ thuật chính: phân tích nhân tử ma trận toàn cục và cửa sổ ngữ cảnh cục bộ Mục tiêu của Glove là tạo ra các vector biểu diễn từ, giúp cải thiện hiệu quả trong các bài toán ngôn ngữ Bằng cách sử dụng các vector đã được huấn luyện, Glove tận dụng thông tin về mối quan hệ ngữ nghĩa giữa các từ, từ đó mang lại kết quả tốt hơn.
Kết luận
Chương 2 đã trình bày khái quát những cơ sở lý thuyết các thuật toán học máy liên quan đến việc phân loại CV ứng tuyển Đây chính là cơ sở nền tảng để tiến hành xây dựng mô hình phân loại CV ở chương tiếp theo Chương 3 sẽ trình bày sâu hơn về việc chuẩn bị dữ liệu và tiến hay xây dựng mô hình phân loại dựa trên bộ dữ liệu được cung cấp Chương 3 sẽ tiến hành mã hóa dữ liệu văn bản theo phương pháp TFIDF.
XÂY DỰNG HỆ THỐNG THỬ NGHIỆM PHÂN LOẠI CV TRONG LĨNH VỰC CNTT BẰNG CÁC THUẬT TOÁN HỌC MÁY
Chuẩn bị dữ liệu CV trong lĩnh vực CNTT
Chuẩn bị dữ liệu CV là bước quan trọng ảnh hưởng trực tiếp đến kết quả mô hình Kho dữ liệu được thu thập từ chị Nguyễn Thị Kỳ Duyên.
Bộ phận HCNS phòng Quản lý tổng hợp – BRAVO đóng góp 65% dữ liệu, phần còn lại được thu thập từ các diễn đàn việc làm và mạng xã hội Để đảm bảo bảo mật dữ liệu, công ty lưu trữ thông tin dưới hai hình thức khác nhau.
Hình thức 1: Dữ liệu bao gồm 187 file CV ứng tuyển dưới dạng PDF từ công ty khoảng 1 năm trước, chứa thông tin cá nhân cụ thể của các ứng viên như họ tên, ngày tháng năm sinh, số điện thoại và địa chỉ email.
Hình 3 2 CV ứng tuyển dưới dạng pdf được lưu trữ quản bằng Excel
Dữ liệu ứng tuyển được cung cấp dưới dạng file Excel, chứa 532 CV của các ứng viên từ năm 2022, bao gồm họ tên và các kỹ năng liên quan Tuy nhiên, thông tin cá nhân chi tiết của ứng viên không được tiết lộ để đảm bảo bảo mật dữ liệu của công ty.
Hình 3 3 CV ứng tuyển đã qua sàng lọc được lưu trữ quản lý bằng Excel
Dữ liệu từ 2 hình thức được cung cấp được sắp xếp theo khung:
- Họ tên ứng viên: lưu giá trị tên của các ứng viên
Khi lưu CV ứng tuyển, ứng viên nên đặt tên file theo tên của mình để dễ dàng nhận diện Việc này không chỉ giúp nhà tuyển dụng nhanh chóng tìm thấy hồ sơ mà còn thể hiện sự chuyên nghiệp Ngoài ra, các kỹ năng của ứng viên cũng cần được xử lý và trình bày rõ ràng trong CV để thu hút sự chú ý từ phía nhà tuyển dụng.
Vị trí ứng tuyển bao gồm việc lưu trữ các thông tin liên quan đến các ứng viên và CV của họ Bộ dữ liệu hiện có tổng cộng 19 vị trí được tổng hợp, trong đó có các lĩnh vực như Sales, Tester và Developer.
BA, Python Developer, Web Designing, HR, ETL Developer, Mechanical
Engineer, Blockchain, Data Science, Maintenance, Product Development Staff, Solution, Java Developer, Front-End, Software Deployment Staff, Data Analytics, Back-End
Hình 3 4 Các vị trí ứng tuyển được tổng hợp từ bộ dữ liệu
Hình 3 5 Số lượng CV tương ứng với các vị trí ứng tuyển trong dữ liệu
Thuộc tính họ tên của ứng viên không phải là yếu tố quyết định trong việc phân loại CV ứng tuyển, vì vậy trong quá trình xây dựng mô hình học máy, chúng ta sẽ không xem xét thuộc tính này.
Dữ liệu đầu vào cho mô hình học máy được chọn ở định dạng txt, nhưng vì CV ứng tuyển thu thập được ở dạng PDF, nên cần chuyển đổi các CV này sang định dạng txt để xây dựng mô hình học máy hiệu quả.
Tiền xử lý dữ liệu
3.2.1 Chuyển đổi dữ liệu từ định dạng PDF sang văn bản
Các CV được thu thập dưới dạng PDF sẽ được quản lý và tổng hợp trên Excel Để xây dựng mô hình, cần chuyển đổi các CV từ PDF sang định dạng TXT hoặc DOC, giúp mô hình học máy có thể đọc được các ký tự trong CV Quá trình này sẽ tạo ra một kho từ điển để phục vụ cho các bước xử lý tiếp theo.
Có 2 hình thức chuyển đổi file dạng pdf sang dạng txt trong Python
Để chuyển đổi CV từ định dạng PDF sang TEXT, bạn có thể sử dụng module PyPDF2 trong Python Module này không chỉ hỗ trợ chuyển đổi PDF thành văn bản mà còn cho phép chia tách, hợp nhất và cắt các tệp PDF một cách hiệu quả.
Chúng tôi sẽ thử nghiệm chuyển đổi file PDF có tên 'De-thi' bằng module PyPDF2, được lưu trữ trong thư mục Data Qua các bước đọc file và thực hiện chuyển đổi, chúng tôi đã đạt được kết quả như dưới đây.
Hình 3 6 Thực hiện chuyển đổi PDF sang văn bản bằng Module PyPDF2
- Hình thức 2: Chuyển đổi CV dạng PDF sang dạng TXT không qua Python
Ngoài việc tận dụng các module có sẵn trong Python, còn nhiều phần mềm hỗ trợ chuyển đổi PDF sang văn bản Trong bài viết này, chúng ta sẽ sử dụng Wondershare PDFelement – PDF Editor, một trong những công cụ phổ biến cho việc chuyển đổi PDF.
Công cụ này nổi bật với khả năng chuyển đổi đồng thời nhiều file, điều mà ít công cụ nào hiện nay có thể thực hiện Trong khi hầu hết các công cụ chuyển đổi chỉ cho phép chuyển đổi một file tại một thời điểm, công cụ này không giới hạn số lượng file, giúp người dùng tiết kiệm thời gian khi xử lý nhiều file Đặc biệt, việc chuyển đổi qua công cụ này không gặp phải tình trạng lỗi mã hóa ký tự, đặc biệt là với các file dữ liệu liên quan đến Tiếng Việt.
Để chuyển đổi các file PDF, bạn cần đưa chúng vào phần mềm đồng loại, sau đó chọn định dạng đầu ra là TXT và xác định đường dẫn để lưu trữ các file đã được chuyển đổi.
Hình 3 7 Chuyển đổi PDF sang văn bản sử dụng công cụ PDFelement
3.2.2 Tổ chức dữ liệu văn bản sau khi chuyển đổi
Sau khi chuyển đổi các file PDF thu thập được, chúng tôi lưu trữ và quản lý dữ liệu trên Excel để xây dựng mô hình phân loại Dữ liệu từ hai nguồn được tổng hợp thành một file chung, chứa các thuộc tính như họ tên ứng viên, vị trí ứng tuyển, CV đính kèm (PDF) và kỹ năng đã được sàng lọc, với tổng cộng 719 bản ghi tương ứng với 719 ứng viên.
Hình 3 8 Tổ chức dữ liệu sau khi thực hiện chuyển đổi PDF sang txt
3.2.3 Xử lý dữ liệu khuyết thiếu, dữ liệu trùng lặp và làm sạch dữ liệu văn bản 3.2.3.1 Xử lý dữ liệu trùng lặp
Trùng lặp dữ liệu là một vấn đề phổ biến trong lưu trữ và quản lý dữ liệu, đặc biệt khi xử lý khối lượng lớn thông tin Sự trùng lặp này có thể làm giảm độ chính xác của các mô hình phân loại Do đó, việc kiểm tra và xử lý dữ liệu trùng lặp là cần thiết để đảm bảo hiệu quả của thuật toán.
Hình 3 9 Kiểm tra và xử lý dữ liệu trùng lặp trong bộ dữ liệu 3.2.3.2 Xử lý dữ liệu khuyết thiếu
Dữ liệu khuyết thiếu là những giá trị không được cập nhật hoặc không có trong bộ dữ liệu, thường do sai sót trong quá trình nhập liệu Sự thiếu hụt này có thể làm giảm hiệu quả của mô hình thực thi Để xử lý dữ liệu khuyết thiếu, có nhiều phương pháp như loại bỏ hoặc thay thế các giá trị này Tuy nhiên, để đạt được kết quả tốt hơn, nên ưu tiên thay thế giá trị khuyết thiếu bằng giá trị trung bình hoặc các giá trị liền kề, đồng thời hạn chế tối đa việc loại bỏ dữ liệu.
Hình 3 10 Kiểm tra và xử lý dữ liệu khuyết thiếu 3.2.3.3 Làm sạch dữ liệu văn bản
Bộ dữ liệu được thu thập bao gồm ngôn ngữ Tiếng Việt và Tiếng Anh Để đảm bảo chất lượng đầu vào cho mô hình, cần xử lý các ký tự đặc biệt có trong CV được đọc dưới dạng văn bản Việc giảm độ nhiễu của những ký tự này sẽ giúp mô hình xây dựng đạt được độ chính xác cao hơn.
Giả sử ta có chuỗi truyền vào chứa các ký tự đặc biệt như sau: “+++++++++ Khoa
Hệ thống Thông tin Quản lý tại Học viện Ngân hàng đã thực hiện xử lý để loại bỏ các ký tự đặc biệt như “+, -, $, &, ^” trong chuỗi thông tin.
Hình 3 11 Ví dụ làm sạch dữ liệu
Sau khi thực hiện việc làm sạch dữ liệu, chúng ta sẽ truyền dữ liệu từ cột CV vào cột Cleaned, nơi đã loại bỏ tất cả các ký tự đặc biệt.
Hình 3 12 Làm sạch dữ liệu văn bản
3.2.4 Chuẩn hóa dữ liệu nhiễu Đầu vào bộ dữ liệu được tập hợp từ nhiều nguồn khác nhau do vậy chưa thống nhất định dạng chung của dữ liệu Các vị trí ứng tuyển được lưu trữ dưới dạng Tiếng Việt và Tiếng Anh hoặc có kí tự hoa thường không đồng nhất nên ta có thể thấy như
Các thuật ngữ 'BACK END Developer', 'Back-End' và 'Back-end' đều chỉ về cùng một vị trí ứng tuyển, nhưng do sự khác biệt về định dạng nên đã dẫn đến việc phân loại thành ba vị trí khác nhau Sự phân loại này gây ra nhiễu dữ liệu, ảnh hưởng trực tiếp đến hiệu quả của mô hình phân loại.
Hình 3 13 Bộ dữ liệu chưa được xử lý
Tiến hành thay thế các giá trị trùng lặp nhưng khác kiểu trong cùng một kiểu, sử dụng ngôn ngữ Tiếng Anh.
Giá trị ban đầu Giá trị quy về
BACK END Developer Back-End
Triển khai Software Deployment Staff
Phát triển sản phẩm Product Development Staff
Giải pháp - Tư vấn Solution Consultant
Bảng 3 1 Xử lý giá trị nhiễu
Hình 3 14 Xử lý dữ liệu nhiễu
3.2.5 Chọn lọc thuộc tính quan trọng
Mã hóa dữ liệu văn bản
3.3.1 Mã hóa dữ liệu cột Jobs
Cột Jobs ban đầu chứa tên các vị trí công việc trong bộ dữ liệu Sau khi mã hóa, cột Jobs được chuyển đổi thành dạng số theo thứ tự tăng dần, trong khi cột Jobs_0 lưu trữ giá trị gốc Ví dụ, vị trí BA được mã hóa là 0, trong khi Maintenance Staff được mã hóa là 10.
Hình 3 16 Mã hóa dữ liệu cột Jobs
3.3.2 Mã hóa dữ liệu văn bản với thuật toán TFIDF
Giá trị cột Cleaned chứa các dữ liệu đã được làm sạch từ CV, và từ những giá trị này, chúng tôi tiến hành mã hóa thành một kho từ ngữ Khi máy đọc các đối tượng có giá trị tương ứng, nó sẽ đưa ra kết luận về vị trí nghề nghiệp phù hợp.
Hình 3 17 Mã hóa dữ liệu văn bản với thuật toán TFIDF
Tách bộ dữ liệu
Bộ dữ liệu ban đầu được chia thành hai phần: 80% dành cho bộ huấn luyện với 571 bản ghi và 20% cho bộ kiểm thử với 143 bản ghi.
Hình 3 18 Chia bộ dữ liệu thành Train set và Test set
Xây dựng mô hình phân loại CV
Ở bài toán này, ta sẽ xây dựng mô hình phân loại CV dựa trên 4 thuật toán: kNN, SVM, Naive Bayes và Decision Tree
Lý do chọn 4 thuật toán:
Thuật toán K-nearest neighbor (KNN) là một trong những thuật toán học có giám sát đơn giản và hiệu quả trong một số trường hợp của Machine Learning KNN không học từ dữ liệu huấn luyện trong quá trình training, lý do khiến nó được xếp vào loại lazy learning, với mọi tính toán được thực hiện khi cần dự đoán kết quả cho dữ liệu mới Thuật toán này có thể áp dụng cho cả hai loại bài toán học có giám sát: phân loại (Classification) và hồi quy (Regression).
Thuật toán Support Vector Machines (SVM) đóng vai trò quan trọng trong việc phân lớp và dự đoán trong học máy và khai thác dữ liệu SVM được coi là công cụ mạnh mẽ và tinh vi nhất cho các bài toán phân lớp phi tuyến Nhiều ứng dụng hiệu quả đã và đang được phát triển dựa trên kỹ thuật SVM.
Thuật toán Naive Bayes Classifiers là một trong những phương pháp hiệu quả trong việc phân lớp trong xử lý ngôn ngữ tự nhiên (NLP) nhờ vào độ chính xác cao và thời gian huấn luyện mô hình ngắn.
Thuật toán Decision Tree là một mô hình phổ biến và hiệu quả trong các bài toán phân loại và dự báo thuộc lĩnh vực học có giám sát Mô hình này thường được áp dụng trong quá trình học tập môn Khai phá dữ liệu.
Hình 3 19 Dùng thuật toán kNN xây dựng mô hình
Hình 3 20 Dùng thuật toán SVM xây dựng mô hình
Hình 3 21 Dùng thuật tốn Nạve Bayes xây dựng mơ hình
Hình 3 22 Dùng thuật toán Decision Tree để xây dựng mô hình
Đánh giá kết quả của phân loại
Sau khi xây dựng mô hình phân loại dựa trên 4 thuật toán ta thu được độ chính xác của các thuật toán trên mô hình
Các thuật toán Độ chính xác trên tập thử nghiệm kNN 81%
Bảng 3 2 Độ chính xác trên tập thử nghiệm của các thuật toán sử dụng
Dựa trên bảng thống kê, thuật toán SVM cho thấy độ chính xác cao nhất, đạt 90% Do đó, chúng tôi chọn SVM làm thuật toán chính cho thực nghiệm Tiếp theo, chúng tôi sẽ so sánh giá trị mục tiêu đầu vào với giá trị đầu ra.
Tên cột Giá trị y Giá trị mục tiêu ban đầu
Y_pred_kNN Giá trị mục tiêu dựa trên mô hình kNN
Y_pred_SVM Giá trị mục tiêu dựa trên mô hình SVM
Y_pred_NB Giá trị mục tiêu dựa trên mô hình Naive Bayes Y_pred_DTree Giá trị mục tiêu dựa trên mô hình Decision Tree
Những cột có giá trị trả về khác cột Y thì đó chính là sai số của cột đó
Hình 3 23 So sánh giá trị mục tiêu đầu vào và giá trị trả về
Ma trận nhầm lẫn là công cụ quan trọng để đánh giá hiệu suất của thuật toán Nó hiển thị các giá trị dự đoán chính xác so với giá trị thực tế theo đường chéo từ trái qua phải Màu sắc được tô sáng thể hiện số lượng giá trị trả về, với độ đậm tăng dần Cột "True label" chứa giá trị mục tiêu ban đầu, trong khi cột "Predicted label" thể hiện giá trị dự đoán của thuật toán.
Ma trận của mô hình kNN
Giá trị 14 của cột True label được sử dụng làm chuẩn cho cột Predicted label, trong đó giá trị 21 được tô vàng cho thấy có 21 dự đoán đúng Các giá trị còn lại trong cột Predicted label tương ứng với giá trị 14 của True label thể hiện các sai số trong dự báo.
Hình 3 24 Ma trận của mô hình kNN
Ma trận của mô hình SVM
Giá trị 14 cột True label được sử dụng làm chuẩn, trong khi cột Predicted label tô vàng với giá trị 23 cho thấy có 23 dự đoán chính xác Các giá trị còn lại trong cột Predicted label tương ứng với giá trị 14 True label thể hiện các sai số trong dự báo.
Hình 3 25 Ma trận mô hình SVM
Ma trận của mô hình NB
Giá trị của 14 cột True label được sử dụng làm chuẩn, trong khi giá trị 23 ở cột Predicted label được tô vàng cho thấy có 23 dự đoán chính xác Các giá trị còn lại ở cột Predicted label tương ứng với giá trị 14 True label thể hiện các sai số trong dự báo.
Hình 3 26 Ma trận của mơ hình Nạve Bayes
Ma trận mô hình Decision Tree
Giá trị 14 cột True label được sử dụng làm chuẩn, trong khi giá trị 21 ở cột Predicted label được tô vàng cho thấy có 21 giá trị được dự đoán đúng Các giá trị còn lại trong cột Predicted label tương ứng với giá trị 14 True label thể hiện các sai số trong dự báo.
Hình 3 27 Ma trận của mô hình Decision Tree
Từ ma trận nhầm lẫn của các mô hình xây dựng, chúng ta có thể xác định những vị trí công việc thường bị phân loại sai Chẳng hạn, trong ma trận của mô hình SVM, vị trí nghề nghiệp mã hóa là 0 có 11 bản ghi, trong đó có 8 bản ghi phân loại đúng và 1 bản ghi phân loại sai sang vị trí 17 - Tester Điều này cho thấy cần xem xét lại các yếu tố liên quan đến vị trí BA để kiểm tra xem có từ ngữ nào gây nhầm lẫn với vị trí Tester hay không, từ đó cải thiện mô hình và nâng cao độ chính xác.
Hình 3 28 Dữ liệu đầu ra được tổng hợp
Hình 3 29 CV vị trí BA ứng với vị trí 554
Hình 3 30 CV BA được dự đoán Tester ứng với vị trí 553
Ví dụ như ở đây, trong CV BA xuất hiện từ khóa Tester nên kết quả trả về ứng với vị trí Tester.
Thực nghiệm mô hình
3.7.1 Đưa 1 file CV mới Ở đây ta thực nghiệm với file CV mới có vị trí tương ứng là Lập trình viên (Developer) mô hình phân loại trả về kết quả ‘Developer’
Hình 3 31 Kết quả sau khi thực hiện phân loại
3.7.2 Ý tưởng phát triển tích hợp mô hình với hệ thống quản lý nhân sự tại BRAVO
Do thời gian và phạm vi thực hiện hạn chế, việc tích hợp mô hình với hệ thống quản lý nhân sự tại BRAVO chỉ dừng lại ở giai đoạn lên ý tưởng triển khai.
Hiện nay, BRAVO đang sử dụng phần mềm BRAVO8R2 để quản lý hồ sơ ứng tuyển và nhập dữ liệu thủ công Tác giả đề xuất xây dựng một mô hình phân loại CV ứng tuyển nhằm phát triển một chức năng trong hệ thống quản lý nhân sự, cho phép tự động phân nhóm các vị trí và điền dữ liệu cơ bản của ứng viên thông qua các từ khóa.
Phân hệ quản lý nhân sự trong phần mềm BRAVO8R2 được tổ chức theo các mục đích cụ thể, bao gồm Tuyển dụng với các đầu mục như Danh mục điều kiện tuyển dụng, Kế hoạch tuyển dụng, Hồ sơ ứng viên và Lịch phỏng vấn Hiện tại, phần mềm không hỗ trợ chức năng phân loại CV tự động; thay vào đó, nhân viên BRAVO thực hiện việc cập nhật dữ liệu CV của ứng viên thông qua việc nhập liệu trực tiếp vào hệ thống.
Hình 3 32 Giao diện phân hệ quản lý nhân sự trên phần mềm BRAVO 8R2
Dựa trên các chức năng hiện có trong phần mềm, chúng tôi đang phát triển một phân nhánh nhỏ trong quản lý nhân sự, với cấu trúc tương tự như hóa đơn chứng từ trong hệ thống BRAVO Chúng tôi sẽ xây dựng chức năng phân loại CV tự động theo thời gian, dựa trên giao diện của tính năng duyệt chứng từ Việc cập nhật CV sẽ được thực hiện thông qua tính năng import dữ liệu đã có sẵn trong hệ thống BRAVO.
CV tự động theo các nghề nghiệp phù hợp giúp cải thiện quy trình cập nhật hồ sơ nhân viên, trả về giá trị dữ liệu chính xác cho các trường thông tin liên quan.
Hình 3 33 Tính năng duyệt chứng từ
Hình 3 34 Giao diện quản lý hồ sơ ứng viên của BRAVO
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trong quá trình nghiên cứu và hoàn thiện đề tài “Áp dụng các kỹ thuật học máy trong việc phân loại CV ứng tuyển trong lĩnh vực Công nghệ thông tin”, chúng tôi đã đạt được nhiều kết quả quan trọng.
Bài viết trình bày quá trình xây dựng mô hình phân loại dựa trên các thuật toán kNN, SVM, Naive Bayes và Decision Tree, cùng với việc đánh giá độ chính xác của chúng Sau khi phân tích, thuật toán SVM được lựa chọn để áp dụng cho bộ dữ liệu 300 CV trong lĩnh vực CNTT tại công ty cổ phần phần mềm BRAVO, cùng với 419 CV thu thập từ nguồn khác, đạt độ chính xác lên tới 90%.
Quá trình thực hiện đề tài bao gồm thu thập thông tin và dữ liệu, cũng như tiền xử lý dữ liệu, giúp xây dựng mô hình phân loại CV, thể hiện ứng dụng thực tiễn của học máy trong đời sống Những ứng dụng hữu ích này có khả năng cải thiện và phát triển trong cuộc sống thực tế.
Số lượng đối tượng trong bộ dữ liệu còn hạn chế, không phản ánh đầy đủ các khía cạnh cần thiết Bên cạnh đó, kho ngữ liệu xử lý vẫn tồn tại những từ khóa gây nhầm lẫn, ảnh hưởng đến độ chính xác của tập huấn luyện dữ liệu, khiến kết quả chưa đạt yêu cầu tối ưu.
Trong lĩnh vực Công nghệ thông tin, có nhiều vị trí nghề nghiệp đa dạng và phong phú Tuy nhiên, bài viết chỉ khai thác 19 vị trí cụ thể, phản ánh một phần nhỏ trong tổng thể ngành CNTT.
Bộ dữ liệu thu thập số lượng CV ứng tuyển cho các vị trí không đồng đều, điều này ảnh hưởng đến độ chính xác của mô hình.
Giao diện của Hệ thống Phân loại CV ứng tuyển hiện tại còn đơn giản và thiếu sót, chưa được tích hợp các tính năng nâng cao nhằm cải thiện thẩm mỹ và hiệu quả sử dụng.
Áp dụng phân loại CV ứng tuyển bằng học máy trong quy trình tuyển dụng sẽ giúp nhà tuyển dụng tiết kiệm thời gian xử lý lượng công việc lớn Hiện tại, nhiều nhà tuyển dụng vẫn còn sử dụng phương pháp thủ công để phân loại và sàng lọc CV Tuy nhiên, với sự phát triển của trí tuệ nhân tạo và học máy, chức năng phân loại CV tự động đang có tiềm năng phát triển mạnh mẽ, đáp ứng nhu cầu thực tiễn của doanh nghiệp.
Trong tương lai, chúng tôi sẽ tiếp tục nghiên cứu để khắc phục những hạn chế của đề tài hiện tại Chúng tôi sẽ xử lý lại dữ liệu nhằm huấn luyện mô hình đạt độ chính xác cao hơn và mang tính thực tiễn Hệ thống phân loại CV sẽ được xây dựng với giao diện thân thiện, tích hợp các chức năng hữu ích cho nhà tuyển dụng, bao gồm quản lý CV và tự động khởi tạo email, từ đó tăng cường sự gắn kết giữa nhà tuyển dụng và ứng viên.
Ngoài ra có thể phát triển đề tài nghiên cứu ở mức sâu hơn cụ thể như: