CHƯƠNG 3 PHÂN TÍCH, THIẾT KẾ VÀ XÂY DỰNG MƠ HÌNH
3.2. Dữ liệu đầu vào
Trong dự án này, dữ liệu được sử dụng là từ công ty Orient và Neurond. Công ty đã phát triển một công cụ gọi là “CVCrawler” nhằm mục đích thu thập hồ sơ ứng tuyển (Curriculum Vitae hay CV) của ứng viên thông qua các trang mạng xã hội. Họ đã cung cấp hơn 10.000 hồ sơ ứng tuyển của ứng viên thuộc lĩnh vực công nghệ thông tin ở Việt Nam để sử dụng trong dự án này.
Mỗi ứng viên sẽ có một tập kinh nghiệm (experience) và kỹ năng (skill).
Hình 3.3: Dữ liệu mẫu của một số ứng viên
Có một số khó khăn khi xử lý dữ liệu khơng có cấu trúc như dữ liệu trong hồ sơ ứng tuyển. Đầu tiên, hồ sơ ứng tuyển cần được phân tích cú pháp thành định dạng giống như cơ sở dữ liệu – chúng tôi đã sử dụng bên thứ ba để thực hiện việc này. Một trong những vấn đề chính là 'bình thường hóa' (normalize) văn bản thơ của chức danh công việc hoặc tên kỹ năng riêng biệt, khơng trùng lặp. Ví dụ: các chức danh “CTO” và “Chief Technology Officer” hay “Java developer” và “Java programmer” đều có vai trị như nhau và cần được cơng nhận như nhau. Những khó khăn khác nảy sinh khi giải quyết các chức danh công việc mơ hồ chẳng hạn như “Manager”, có thể mơ tả nhiều loại vai trò khác nhau tùy thuộc vào công ty và ngành.
Hồ sơ ứng tuyển và dữ liệu bên trong rất khơng có cấu trúc vì vậy cần có hàng loạt bước tiền xử lý trước khi có thể thực hiện bất kỳ phân tích có ý nghĩa nào. Những bước tiền xử lý này được nêu bên dưới - mỗi bước đều có những rủi ro tiềm ẩn:
Các hồ sơ ứng tuyển được cung cấp ở định dạng JSON sau khi chúng được ‘phân tích cú pháp’, tức là chuyển đổi thành định dạng giống như cơ sở dữ liệu. Chúng
tôi sử dụng một phần mềm phân tích để thực hiện việc này. Phân tích cú pháp này khơng hồn hảo nhưng nhìn chung, nó hoạt động tốt. Một bước tiền xử lý tiếp theo, các mục nhập trùng lặp đã được loại bỏ bằng cách loại bỏ tất cả các hồ sơ ứng tuyển gần đây nhất cho mỗi địa chỉ email. Các cột được cung cấp trong tập JSON là:
firstname, lastname, about, email, education, experiences, skill, location, company name, web addresses, activities, interest.
Để tiếp cận nhanh chóng và có cái nhìn chính xác để giải quyết vấn đề, chúng tôi chọn ra những cột quan trọng và cần thiết để xây dựng mơ hình. Cụ thể là trường
experiences và skill. Trong trường experiences có thêm các thơng tin như from_date,
to_date, job_title.
Có hơn 10.000 chức danh cơng việc khác nhau trong tập dữ liệu nhưng nhiều cơng việc trong số đó có vai trị giống nhau. Ví dụ: “java developer”, “java dev”, “java engineer”, “java programmer”, … đều mơ tả vai trị giống nhau của một lập trình viên java. Vì tiêu đề cơng việc là một trường văn bản tự do trên CV, nên số lượng các biến thể có thể có, bao gồm cả lỗi chính tả, của cùng một chức danh là rất lớn. Ngồi ra cịn có những chức danh viết tắt như HR (Human Resource), CTO (Chief Technology Officer) đều gây ra những khó khăn cho việc thực hiện phân tích rõ rang. Chúng tơi đã phát triển một quy trình chuẩn hóa chức danh công việc sử dụng bản thể học và các phương pháp tiếp cận hệ thống khác nhau. Bao gồm việc thay thế các từ viết tắt từ “HR” thành “Human Resource”, chuẩn hóa các hậu tố của chức danh “developer”, “dev”, “engineer”, “programmer” thành “developer”, các chức danh viết sai chính tả như “data enginer” cũng được chuẩn hóa thành “data engineer”. Việc giảm số lượng chức danh cơng việc có thể có xuống cịn 500 thực sự có vai trị quan trọng cho việc phân tích ở các bước tiếp theo.
Vấn đề tương tự cũng diễn ra với việc thu thập các kỹ năng của nhân viên. Số lượng kỹ năng có thể có lớn hơn rất nhiều so với chức danh của cơng việc. Ví dụ “.Net”, “Net”, “dot Net”, “C#”, … đều có ý nghĩa về cùng một kỹ năng. Dựa vào bối cảnh bổ sung, chẳng hạn như chức danh của cơng việc thì những kỹ năng trên sẽ có ý nghĩa hơn.