1. Trang chủ
  2. » Cao đẳng - Đại học

Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động

110 47 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Hệ thống sàn lọc sơ yếu lý lịch tự động
Tác giả Phạm Quang Vinh, Phan Thanh Tùng
Người hướng dẫn ThS. Huỳnh Tuấn Anh
Trường học Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành Công nghệ phần mềm
Thể loại Đồ án
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 110
Dung lượng 3,82 MB

Cấu trúc

  • Chương 1. MỞ ĐẦU

    • 1.1. Lý do chọn đề tài

    • 1.2. Mục tiêu đề tài

    • 1.3. Nội dung thực hiện

    • 1.4. Phạm vi đề tài

    • 1.5. Bố cục báo cáo

  • Chương 2. TỔNG QUAN

    • 2.1. Một số khái niệm cơ bản

      • 2.1.1. Cấu trúc cơ bản của một CV

      • 2.1.2. Quan điểm của nhà tuyển dụng

    • 2.2. Phát biểu bài toán

    • 2.3. Các nghiên cứu liên quan

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

    • 3.1. Cơ sở lý thuyết

      • 3.1.1. Word Embedding

        • 3.1.1.1. Định nghĩa

        • 3.1.1.2. Phương pháp biểu diễn Word Embedding

      • 3.1.2. Ontology

        • 3.1.2.1. Định nghĩa

        • 3.1.2.2. Thành phần của ontology

      • 3.1.3. Một số thuật toán tính khoảng cách

        • 3.1.3.1. Khoảng cách Levenshtein

        • 3.1.3.1. Khoảng cách chỉnh sửa đồ thị (Graph edit distance – GED)

    • 3.2. Công nghệ sử dụng

      • 3.2.1. CSO (Computer Science Ontology) Classifier

    • 3.3. Phương pháp thực hiện

      • 3.3.1. Thu thập dữ liệu

      • 3.3.2. Tạo ontology

      • 3.3.3. Tạo Word2vec model

        • 3.3.3.1. Tiền xử lý dữ liệu

        • 3.3.3.2. Tiến hành train model

      • 3.3.4. Áp dụng CSO Ontology để trích xuất kỹ năng

        • 3.3.4.1. Tạo cached model cho CSO Classifier

        • 3.3.4.2. Áp dụng CSO Classifier cho nhiều domain cùng lúc

        • 3.3.4.3. Trích xuất kỹ năng từ CV

        • 3.3.4.4. Trích xuất kỹ năng từ JD

      • 3.3.5. Tạo đồ thị kỹ năng từ ontology và danh sách kỹ năng

      • 3.3.6. So khớp thông tin đã trích xuất được và xếp hạng CV

  • Chương 4. CÀI ĐẶT HỆ THỐNG

    • 4.1. Thiết kế hệ thống

      • 4.1.1. Sơ đồ use case.

        • 4.1.1.1. Các sơ đồ use case

        • 4.1.1.2. Danh sách các actors:

        • 4.1.1.3. Danh sách các use case

      • 4.1.2. Mô hình ERD

      • 4.1.3. Phân tích và thiết kế cơ sở dữ liệu

        • 4.1.3.1. Bảng NTD theo dõi CV

        • 4.1.3.2. Bảng ứng viên lưu tin tuyển dụng

        • 4.1.3.3. Bảng học vấn

        • 4.1.3.4. Bảng ứng viên

        • 4.1.3.5. Bảng công ty

        • 4.1.3.6. Bảng bộ lọc ứng viên

        • 4.1.3.7. Bảng tin tuyển dụng

        • 4.1.3.8. Bảng đăng ký ứng tuyển

        • 4.1.3.9. Bảng nhà tuyển dụng

        • 4.1.3.10. Bảng sơ yếu lý lịch

        • 4.1.3.11. Bảng chuyên ngành

    • 4.2. Kiến trúc hệ thống

    • 4.3. Cài đặt hệ thống

      • 4.3.1. Tổng quan về công nghệ

        • 4.3.1.1. Nền tảng Flask

        • 4.3.1.2. Hệ quản trị cơ sở dữ liệu MySQL

        • 4.3.1.3. Firebase Storage

      • 4.3.2. Thiết kế API

      • 4.3.3. Một số UI chính của hệ thống

        • 4.3.3.1. Giao diện cho ứng viên

        • 4.3.3.1. Giao diện cho nhà tuyển dụng:

    • 4.4. Đánh giá

      • 4.4.1. Độ đo kết quả

      • 4.4.2. Kết quả đánh giá

      • 4.4.3. Đánh giá kết quả xếp hạng danh sách CV

      • 4.4.4. Đánh giá thực nghiệm

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

    • 5.1. Tổng kết

    • 5.2. Ưu điểm

    • 5.3. Nhược điểm

    • 5.4. Hướng phát triển

  • TÀI LIỆU THAM KHẢO

Nội dung

TỔNG QUAN

Một số khái niệm cơ bản

Để sàng lọc CV hiệu quả, trước tiên cần hiểu những khái niệm cơ bản về tầm quan trọng của CV, cấu trúc hợp lý của một CV và cách nhìn nhận của nhà tuyển dụng đối với CV.

2.1.1 Cấu trúc cơ bản của một CV

Trong quy trình tuyển dụng, nhà tuyển dụng thường xem xét CV để đánh giá chất lượng và cách tổ chức của nó Để hiểu rõ những yếu tố quan trọng trong một CV, cần phân tích nội dung và tìm hiểu sâu hơn.

CV là văn bản có cấu trúc, chia thành nhiều phần khác nhau tùy thuộc vào kinh nghiệm và trình độ học vấn của ứng viên Nhà tuyển dụng tìm kiếm thông tin cụ thể để đánh giá năng lực của ứng viên Để hoàn chỉnh bộ định danh, nhà tuyển dụng cần thông tin liên hệ, thông tin cá nhân, kỹ năng, kinh nghiệm làm việc, học vấn, các dự án tham gia, giải thưởng cá nhân, bài báo và chứng chỉ.

• Thông tin liên lạc: dùng để liên lạc với ứng viên

Thông tin cá nhân như ngày sinh, địa chỉ và tài khoản mạng xã hội (LinkedIn hay GitHub) là yếu tố quan trọng giúp nhà tuyển dụng đánh giá ứng viên một cách chi tiết hơn Một số nhà tuyển dụng có thể sử dụng các công cụ để thu thập dữ liệu cá nhân, từ đó khám phá những đặc điểm nổi bật của ứng viên.

• Kỹ năng: Để nhà tuyển dụng có thể có cái nhìn tổng quan về khả năng của ứng viên

• Kinh nghiệm làm việc thực tế: Để có thể đánh giá được ứng viên có kinh nghiệm làm việc liên quan đến công việc đang ứng tuyển hay không

• Học vấn: Để đánh giá xem ứng viên có học vấn và kiến thức về công việc đang ứng tuyển hay không

Các dự án đã tham gia: Tùy thuộc vào việc dự án đó là thực tế hay cá nhân, nó sẽ phản ánh kinh nghiệm và kỹ năng của ứng viên.

• Giải thưởng cá nhân: Dùng để đánh giá xem ứng viên có gì khác biệt so với các ứng viên khác

• Các bài báo: Trong bối cảnh nghiên cứu, nó giúp đánh giá tiềm năng của ứng viên

• Chứng chỉ: Nếu cần cho vị trí ứng tuyển, còn nếu không, nó cũng là một điểm cộng cho ứng viên

2.1.2 Quan điểm của nhà tuyển dụng

Theo một nhà tuyển dụng có hơn 15 năm kinh nghiệm trong lĩnh vực nhân sự tại tập đoàn Thales, chiến lược tuyển dụng của cô ấy bao gồm việc chia công việc thành hai phần: trích xuất thông tin từ tin tuyển dụng và từ CV, sau đó tiến hành so khớp một – một giữa chúng Trong quá trình này, các khía cạnh như kỹ năng và học vấn luôn được chú ý Đặc biệt, quan điểm của các nhà tuyển dụng có thể khác nhau tùy thuộc vào khu vực và công ty.

Hình 2.1: Mô hình so khớp cơ bản

Phát biểu bài toán

Để giải quyết bài toán so khớp CV và JD, ta cần phải giải quyết một số vấn đề sau:

Để phân tách thông tin quan trọng từ một CV dưới dạng tệp PDF hoặc Word, chúng ta cần xác định các yếu tố như học vấn, kinh nghiệm làm việc và kỹ năng Quá trình này bắt đầu bằng việc thu thập dữ liệu từ Internet và chuyển đổi CV thành văn bản Sau đó, chúng ta phân nhóm các chủ đề để xác định những thông tin cần thiết cho việc so khớp Cuối cùng, thông tin đã phân tách sẽ được đưa vào mô hình trích xuất kỹ năng để tạo ra danh sách kỹ năng của CV Đối với JD, thông tin đã được nhà tuyển dụng nhập vào hệ thống, vì vậy chúng ta chỉ cần sử dụng mô hình trích xuất kỹ năng để lấy danh sách kỹ năng mà JD yêu cầu.

Để xây dựng mô hình trích xuất kỹ năng hiệu quả, cần phát triển bộ ontology cho từng lĩnh vực riêng biệt Đồng thời, việc xây dựng và huấn luyện mô hình word2vec là cần thiết để cung cấp dữ liệu cho bộ phân loại CSO, từ đó giúp trích xuất kỹ năng từ CV và JD một cách chính xác.

Vấn đề 3: Cần xây dựng mô hình so khớp giữa CV và JD Nhóm cần tạo đồ thị kỹ năng cho từng bộ kỹ năng đã trích xuất từ CV và JD, nhằm tiến hành so khớp và tính toán độ tương đồng giữa hai đồ thị Sau khi xác định được độ tương đồng, điểm đánh giá sẽ được lưu trữ trong cơ sở dữ liệu, làm cơ sở cho việc xếp hạng CV trong tương lai.

Các nghiên cứu liên quan

Để giải quyết bài toán lớn về sàng lọc CV tự động, nhóm cần tập trung vào việc giải quyết các bài toán nhỏ hơn liên quan Mỗi bài toán nhỏ sẽ được nghiên cứu kỹ lưỡng dựa trên các phương pháp hiện có đã được đề xuất.

Nghiên cứu về phương pháp trích xuất thông tin từ CV

Việc trích xuất thông tin cần thiết từ CV là một thách thức lớn, và nhiều phương pháp đã được đề xuất để giải quyết vấn đề này Andreas Bogstad đã giới thiệu một phương pháp phân nhóm chủ đề trong CV, trong đó phân nhóm chủ đề được hiểu là nhiệm vụ chia văn bản thành các phân đoạn có ý nghĩa Tuy nhiên, việc chia CV thành những phân đoạn có ý nghĩa không phải là điều dễ dàng, vì một CV có thể được cấu trúc thành nhiều phần khác nhau.

• Thông tin liên lạc: phân đoạn về tên tuổi, địa chỉ và các thông tin liên lạc khác của ứng viên

• Học vấn: phân đoạn về trình độ học vấn của ứng viên Ví dụ: tên trường đại học, cao đẳng, chuyên ngành của ứng viên,

• Kinh nghiệm thực tế: phân đoạn về lịch sử làm việc thực tế của ứng viên

• Kỹ năng: phân đoạn liệt kê các kỹ năng của ứng viên Ví dụ: kỹ năng lập trình, kỹ năng mềm,

• Các bài báo: phân đoạn liệt kê những bài báo đã được công bố của ứng viên

Để phân nhóm chủ đề trong văn bản, tác giả áp dụng phương pháp xác định biên của chủ đề thông qua định dạng thẻ BIO (Begin Inside Outside) Mỗi dòng văn bản được gắn thẻ B hoặc I một cách thủ công; dòng chứa câu chuyển chủ đề được gắn thẻ B, trong khi dòng không chứa câu chuyển chủ đề được gắn thẻ I Sau khi gắn thẻ, dữ liệu sẽ được xử lý thành một object, trong đó ký tự cuối cùng của mỗi dòng là thẻ và phần còn lại của câu được tách thành thuộc tính của object Các câu sẽ được mã hóa thành danh sách token, mỗi token sẽ được đưa về dạng gốc bằng stemmer và lưu trữ vào object, sau đó gán nhãn từ loại với PPoS tag Cuối cùng, object này sẽ được đưa vào model trích xuất đặc trưng để chuyển đổi thành vector đặc trưng, nhằm xác định nhãn của vector có phải là biên của chủ đề hay không.

Nghiên cứu về phương pháp trích xuất kỹ năng từ văn bản

Bài toán trích xuất kỹ năng từ văn bản đóng vai trò quan trọng trong việc tự động sàng lọc CV Nghiên cứu của nhóm IBM, do Gugnani và Mirsa thực hiện, đã giới thiệu một phương pháp kết hợp nhiều kỹ thuật xử lý ngôn ngữ tự nhiên nhằm xác định xem một từ hoặc cụm từ có phải là kỹ năng hay không.

The module for skill identification is illustrated in Figure 3.1, where the authors categorize it into four smaller modules: Named Entity Recognition (NER), Part of Speech (POS) tagging, Word2Vec (W2V), and a skill dictionary.

Dữ liệu từ đoạn văn bản thô sẽ được trích xuất qua ba module để tạo thành tập hợp các thuật ngữ cùng với điểm số riêng cho từng module Dựa vào điểm số này, thuật ngữ sẽ được xác định khả năng trở thành kỹ năng, như minh họa trong hình 3.1 Kết hợp điểm số của cả bốn module, tác giả sẽ tính toán điểm tổng quát (“relevance score”) để đánh giá khả năng của một từ hoặc cụm từ là kỹ năng.

Nghiên cứu về phương pháp so khớp CV và JD

Trong bài báo của Gugnani, tác giả đã giới thiệu phương pháp so khớp dựa trên điểm tương thích (“Affinity Score”), giúp đánh giá mức độ phù hợp giữa CV và JD, với giá trị từ 0 đến 1, trong đó 0 là không phù hợp và 1 là rất phù hợp Để tính toán điểm này, Gugnani đã áp dụng thuật toán greedy maximal match cho tập kỹ năng từ nhỏ đến lớn và thực hiện thuật toán maximum matching cho tập kỹ năng từ lớn đến nhỏ.

Trong thuật toán ghép cặp cực đại (greedy maximal match) trên đồ thị hai phía, mục tiêu là đạt được điểm net cao nhất từ trái sang phải Cặp ghép cực đại (maximum match) là cặp ghép có số lượng cạnh lớn nhất có thể, trong khi mọi cặp ghép cực đại đều là cặp ghép tối đại (maximal match), nhưng không phải ngược lại Tác giả đã xem xét các phương pháp phỏng đoán khác nhau để tối ưu hóa quá trình ghép cặp và tạo ra các cạnh cho tập kỹ năng của CV và tập kỹ năng của JD.

Nếu một kỹ năng xuất hiện trong cả hai tập dữ liệu (CV và JD), điểm "Edge Score" sẽ là 1 và chúng sẽ được ghép cặp Tác giả sẽ loại bỏ những kỹ năng chung giữa hai tập dữ liệu, gán một edge-weight giá trị 1 và tính tổng số kỹ năng chung để xác định điểm tương thích Ngoài ra, tác giả cũng nhận thấy mối tương quan mạnh mẽ giữa các yếu tố sau khi so sánh các kỹ năng, đặc biệt là độ tương đồng cosine.

Bài viết đề cập đến ba yếu tố quan trọng trong việc tính toán trọng số của cạnh (edge-weight): a) sử dụng W2V, b) tần suất xuất hiện của kỹ năng trong văn bản, và c) việc thúc đẩy dựa trên kỹ năng tường minh hoặc không tường minh Các yếu tố này được kết hợp để xác định trọng số của cạnh khi tìm thấy cặp ghép thành công, với công thức cụ thể được trình bày trong bài.

Trong bài viết này, Y đại diện cho trọng số của cạnh, trong khi 𝐸 1 là độ tương tự cosine giữa kỹ năng từ mô hình W2V và 𝐸 2 là điểm tần suất của kỹ năng, được tính bằng tổng tần suất của kỹ năng đó trên toàn bộ văn bản chia cho số lượng văn bản Đối với 𝐸 3, giá trị sẽ là 1 nếu kỹ năng là tường minh và 0.5 nếu không tường minh Cuối cùng, Y được tính với 𝜔 1 là 0.5, 𝜔 2 là 0.2 và 𝜔 3 là 0.3, và điểm tương thích giữa CV và JD được xác định bằng cách tính trung bình trọng số các cạnh mà nó có.

PHƯƠNG PHÁP THỰC HIỆN

Cơ sở lý thuyết

Word Embedding là một không gian vector dùng để biểu diễn dữ liệu, giúp mô tả mối liên hệ và sự tương đồng về ngữ nghĩa, ngữ cảnh của dữ liệu Trong không gian này, các từ có cùng ngữ cảnh hoặc ngữ nghĩa sẽ nằm gần nhau Chẳng hạn, trong hai câu “Hôm nay ăn táo” và “Hôm nay ăn xoài”, khi tạo Word Embedding, “táo” và “xoài” sẽ có vị trí gần nhau trong không gian vector do chúng có vai trò tương tự trong câu.

3.1.1.2 Phương pháp biểu diễn Word Embedding

Có hai phương pháp chính để tính toán Word Embedding: phương pháp dựa trên tần số (Count-based method) và phương pháp dự đoán (Predictive method) Cả hai phương pháp này đều dựa trên giả thuyết rằng các từ xuất hiện trong cùng một ngữ cảnh sẽ nằm gần nhau trong không gian được biến đổi.

Phương pháp này xác định mức độ liên quan ngữ nghĩa giữa các từ thông qua việc thống kê tần suất xuất hiện của chúng Ví dụ, với hai câu “Mèo ăn cơm” và “Mèo ăn cá”, ta có thể xây dựng ma trận đồng xuất hiện từ, cho thấy rằng “cơm” và “cá” có ý nghĩa tương đồng và do đó sẽ nằm gần nhau trong không gian vector biểu diễn.

Phương pháp này có nhược điểm là khi xử lý dữ liệu lớn, một số từ có tần suất xuất hiện cao nhưng không cung cấp nhiều thông tin, chẳng hạn như các từ như "a", "an", "the" trong tiếng Anh Việc thống kê số lượng từ này có thể dẫn đến kết quả không chính xác về tần suất thực sự của các từ có ý nghĩa.

Phương pháp dựa trên tần suất từ (count-based method) có thể làm giảm giá trị của những từ mang nhiều thông tin nhưng ít gặp Để khắc phục vấn đề này, một giải pháp hiệu quả là điều chỉnh trọng số dữ liệu phù hợp với bài toán, trong đó thuật toán TF-IDF thường được sử dụng TF (tần suất từ) đo lường số lần xuất hiện của một từ trong văn bản, trong khi IDF (hệ số tần suất ngược) giúp giảm trọng số của những từ thường gặp trong văn bản Nhờ vậy, phương pháp TF-IDF có khả năng giảm bớt trọng số của những từ xuất hiện nhiều nhưng không cung cấp nhiều thông tin.

Word2Vec là một phương pháp tính toán sự tương đồng ngữ nghĩa giữa các từ để dự đoán từ tiếp theo Phương pháp này sử dụng mạng nơ-ron với một hoặc nhiều lớp, dựa trên các từ xung quanh (context word) làm đầu vào Một context word có thể là

15 một hoặc nhiều từ Có hai phương pháp tạo word2vec phổ biến là Continuous Bag- of-words (CBOW) và Skip-gram

Mô hình CBOW (Continuous Bag of Words) là một phương pháp trong xử lý ngôn ngữ tự nhiên, sử dụng một hoặc nhiều từ ngữ bối cảnh để dự đoán từ mục tiêu Qua việc đánh giá lỗi đầu ra so với từ mục tiêu ở dạng one-hot, mô hình điều chỉnh trọng số để học được vector biểu diễn cho từ mục tiêu Quá trình này bao gồm việc chuyển đổi từ đầu vào thành dạng one-hot, đi qua một tầng ẩn và áp dụng softmax để phân loại, từ đó dự đoán từ tiếp theo.

Mô hình Skip-gram sử dụng từ mục tiêu (target word) để dự đoán các từ hàng xóm (neighbor words) của nó, trái ngược với mô hình CBOW Các từ hàng xóm được xác định thông qua tham số kích thước cửa sổ (window size) Chẳng hạn, trong câu "Tôi đang học ở Đại học Công nghệ Thông tin" với từ mục tiêu "học" và kích thước cửa sổ là 2, các từ hàng xóm sẽ là (tôi, đang, ở, Đại) Từ đó, chúng ta tạo ra 4 cặp input-output: (học, tôi), (học, đang), (học, ở), và (học, Đại), trong quá trình huấn luyện mô hình, các từ hàng xóm được coi là tương đương.

Trong triết học, "ontology" hay "bản thể học" xuất phát từ tiếng Hy Lạp, nghiên cứu về sự tồn tại Hiện nay, ontology được áp dụng trong nhiều lĩnh vực như khoa học máy tính, hệ thống kỹ thuật, kỹ thuật phần mềm, tin sinh học, khoa học thư viện, kiến trúc thông tin và web ngữ nghĩa Nhiều định nghĩa về ontology hiện nay đang được sử dụng rộng rãi.

Ontology là một tập hợp từ vựng dành cho các nhà nghiên cứu, giúp họ chia sẻ thông tin trong một lĩnh vực cụ thể Nó bao gồm các định nghĩa về khái niệm cơ bản và mối quan hệ giữa chúng, đảm bảo rằng máy tính có thể hiểu và xử lý thông tin một cách hiệu quả.

Trong lĩnh vực khoa học máy tính, ontology được định nghĩa là một mô hình dữ liệu thể hiện một lĩnh vực cụ thể, cho phép suy luận về các đối tượng cũng như mối quan hệ giữa chúng.

Trong khoa học máy tính, ontology được hiểu là tập hợp các khái niệm và mối quan hệ trong một lĩnh vực cụ thể Nó mô tả rõ ràng các thực thể, khái niệm, ràng buộc và quan hệ ngữ nghĩa, giúp cả con người và máy móc hiểu và suy luận theo ngữ nghĩa trong lĩnh vực đó Chúng tôi sử dụng ontology trong đồ án này vì những lý do quan trọng.

Ontology giúp chia sẻ kiến thức giữa con người và hệ thống bằng cách định nghĩa các khái niệm trong một lĩnh vực cùng với mối quan hệ mà máy tính có thể hiểu Qua đó, nó tạo điều kiện cho việc trao đổi thông tin hiệu quả giữa con người và công nghệ.

Ontology trong lĩnh vực IT cho phép tái sử dụng kiến thức, giúp người khác có thể mở rộng và làm giàu thêm nội dung Ngoài ra, việc tích hợp các ontology có sẵn cũng giúp mô tả nhiều khái niệm thuộc một lĩnh vực nhỏ trong một ontology lớn hơn.

Việc sử dụng ontology thay vì ngôn ngữ lập trình giúp làm rõ các giả định chuyên ngành và dễ dàng điều chỉnh khi kiến thức trong lĩnh vực thay đổi Nếu các giả định này được mã hóa bằng ngôn ngữ lập trình, sẽ gây khó khăn trong việc hiểu và sửa đổi, đặc biệt đối với những người không phải là chuyên gia lập trình.

Công nghệ sử dụng

3.2.1 CSO (Computer Science Ontology) Classifier

CSO Classifier là một phương pháp tự động gán nhãn bài báo dựa trên ontology trong lĩnh vực Khoa học máy tính Phương pháp này áp dụng công nghệ NLP phổ biến, giúp nâng cao khả năng khái quát Nó bao gồm hai thành phần chính: mô đun cú pháp và mô đun ngữ nghĩa.

Mô đun cú pháp sẽ chuyển đổi các n-gram trong văn bản thành các khái niệm, đồng thời loại bỏ các từ dừng (stopword) và thu thập các unigram và bigram.

Mỗi n-gram trong trigrams sẽ được tính toán khoảng cách Levenshtein với nhãn chủ đề trong ontology Độ tương tự tối thiểu được cài đặt thủ công là 0.94, giúp nhận diện sự khác biệt giữa các khái niệm và ontology.

Mô đun ngữ nghĩa được phát triển nhằm xác định các chủ đề có mối quan hệ ngữ nghĩa với từ hoặc văn bản đã cho, ngay cả khi chúng không được đề cập rõ ràng Để thực hiện điều này, mô đun sử dụng kỹ thuật word embedding do word2vec cung cấp, cho phép tính toán sự tương đồng ngữ nghĩa giữa các thuật ngữ trong văn bản và ontology.

Mô hình word embedding trong nghiên cứu này được phát triển bởi CSO thông qua việc sử dụng mô hình word2vec Mô hình này đã được huấn luyện trên một tập dữ liệu phong phú, bao gồm nhiều bài báo trong lĩnh vực khoa học máy tính.

Hình 3.3: Kiến trúc của CSO Classifier

Phương pháp thực hiện

Hiện nay, có rất nhiều bộ dữ liệu miễn phí trên Internet, nhưng việc chọn lựa một bộ dữ liệu phù hợp với nhu cầu và mục đích của dự án là điều quan trọng.

Sau khi xem xét nhiều bộ dữ liệu trên Kaggle nhưng không tìm thấy dữ liệu phù hợp, nhóm chúng tôi quyết định tự phát triển công cụ thu thập dữ liệu tự động từ các trang web tuyển dụng lớn như TopCV và Dice Để thực hiện việc này một cách nhanh chóng và hiệu quả, chúng tôi đã tìm hiểu và cài đặt module crawler bằng Puppeteer.

Puppeteer là một thư viện Node.js cho phép người dùng điều khiển Chrome headless Tất cả các thao tác trên Chrome đều có thể thực hiện được qua Puppeteer Một số ưu điểm nổi bật của Puppeteer đã khiến chúng tôi chọn công cụ này.

So với các công cụ crawl dữ liệu cũ như HTML Agility Pack chỉ thu thập được HTML thuần, Puppeteer nổi bật hơn nhờ khả năng lấy dữ liệu từ các trang web sử dụng Javascript và Ajax Điều này cho phép Puppeteer thu thập thông tin cần thiết ngay cả khi trang yêu cầu đăng nhập hoặc sử dụng AJAX để giao tiếp với backend, mang lại hiệu quả cao hơn trong việc thu thập dữ liệu.

Puppeteer có khả năng vượt qua Google reCaptcha, một công cụ xác thực giúp phân biệt người dùng thực và bot, cho phép nhóm thu thập dữ liệu một cách không bị hạn chế.

Chúng em chọn Puppeteer vì nó sử dụng ngôn ngữ Javascript, một ngôn ngữ mà nhóm đã quen thuộc, giúp tiết kiệm thời gian trong việc học hỏi thêm.

Sau khi cài đặt thuật toán crawl dữ liệu, nhóm tiến hành thu thập được khoảng 4000

TopCV cung cấp CV cho nhiều lĩnh vực khác nhau như Frontend, Backend, iOS và Android Đội ngũ của chúng tôi cũng liên tục thu thập thông tin tuyển dụng từ nhiều lĩnh vực trên Dice.com Chúng tôi đặt mục tiêu thu thập 10,000 tin tuyển dụng cho mỗi lĩnh vực mà chúng tôi muốn phát triển trong hệ thống, và với mỗi tin tuyển dụng, nhóm sẽ tiến hành phân tích chi tiết.

Nhóm nghiên cứu đã tiến hành làm sạch dữ liệu từ tin tuyển dụng để đưa vào mô hình Word2vec, đồng thời thu thập và xây dựng một bộ từ điển kỹ năng nhằm hỗ trợ việc tạo các ontology, như đề xuất bởi Gugnani Bộ từ điển này được hình thành từ dữ liệu thu thập trên nhiều website chuyên về làm giàu dữ liệu kỹ năng trong lĩnh vực IT, như ESCO và Stackshare Sau khi xử lý, nhóm đã tạo ra một bộ từ điển với hơn 30.000 tên kỹ năng và các tên đồng nghĩa.

3.3.2 Tạo ontology Để có thể sử dụng CSO Classifier cho những domain khác ngoài khoa học máy tính

The team needs to develop an ontology framework for specialized skills tailored to various domains, including Frontend Developer, Backend Developer, Fullstack Developer, DevOps Engineer, iOS Developer, Android Developer, Data Science, and AI Engineer.

Chúng tôi đã thu thập 10,000 tin tuyển dụng cho từng lĩnh vực cụ thể như Frontend Developer và lọc ra danh sách từ khóa liên quan Sau khi loại bỏ các stopword và từ khóa không liên quan, chúng tôi tạo ra một tập kỹ năng từ các từ khóa này Tiếp theo, chúng tôi kết hợp tập từ khóa với tập kỹ năng thu thập từ Stackshare để xây dựng một bộ kỹ năng hoàn chỉnh Cuối cùng, với dữ liệu đã có, chúng tôi sử dụng phần mềm Protegé để tạo ontology.

Ontology này cần phải có một số quan hệ sau để có thể đưa vào CSO làm mô hình dữ liệu:

Quan hệ "superTopicOf" được sử dụng để xác định kỹ năng nào là chủ đề rộng hơn của một kỹ năng khác, thể hiện mối quan hệ cha – con giữa các kỹ năng Chẳng hạn, Semantic Web là chủ đề rộng hơn của Linked Data.

• preferentialEquivalent : quan hệ này dùng để liên kết các kỹ năng có nhiều nhãn với một nhãn chính của nó

Bên cạnh tạo các domain ontology, việc train là một trong hai phần chính để có thể áp dụng CSO Classifier ở domain khác [15]

3.3.3.1 Tiền xử lý dữ liệu

Dữ liệu từ các nguồn khác nhau như ESCO, Stackoverflow, Wikipedia và Dice.com có cấu trúc không đồng nhất, do đó quy trình tiền xử lý cũng sẽ khác nhau Cụ thể, dữ liệu từ ESCO bao gồm tên kỹ năng, các tên thay thế và mô tả kỹ năng Tên kỹ năng cùng với các tên thay thế được kết hợp thành một câu, phân cách bằng dấu phẩy, tương tự như phương pháp được đề xuất trong xây dựng Skill2Vec.

Sau đó lưu vào tệp với mỗi hàng là một câu đã được tạo như trên và các mô tả về kỹ năng

Dữ liệu thu thập từ Stackoverflow, Wikipedia và Dice.com đã được làm sạch các thẻ HTML bằng BeautifulSoup Sau đó, thư viện spaCy được sử dụng để tách đoạn văn thành từng câu và lưu trữ mỗi câu trên một hàng riêng biệt Nhằm tạo ra bộ dữ liệu training liên quan đến ngành IT, nhóm đã thực hiện lọc câu dựa trên sự xuất hiện của các từ ngữ trong từ điển.

Sau khi có tập dữ liệu là tệp chứa các câu, ta xử lý mỗi câu tuần tự theo các bước như sau:

• Xoá các kí tự đặc biệt, tuy nhiên giữ lại một số các kí tự thường xuất hiện trong ngôn ngữ lập trình như “+”, “#” trong “C++”, “C#”

• Xoá stop words (ví dụ như: and, or, it, the, if, a,…) thường được xuất hiện trong văn bản tiếng anh mà không mang đến ý nghĩa cho skill-tems

• Đưa các từ về định dạng gốc (Lemmatization)

Sau cùng, nhóm có được tập dữ liệu gồm 1.9 triệu câu sẵn sàng cho việc training Word2Vec model

Nhóm nghiên cứu đã sử dụng Gensim, một thư viện với API thân thiện cho người không chuyên về NLP, để hỗ trợ việc huấn luyện mô hình Word2Vec Do tên kỹ năng có thể bao gồm một hoặc nhiều từ liên tiếp, hay còn gọi là n-gram, nhóm đã thực hiện việc nhận diện và đánh dấu các từ này bằng cách thay thế khoảng trống bằng dấu gạch nối (ví dụ: ruby_on_rails) thông qua Gensim Phrases package Số lượng từ liên tiếp được giới hạn tối đa là 3, chỉ áp dụng cho bigram và trigram.

Sau đó, ta tiến thành việc train mô hình với các tham số được gợi ý từ team phát triển CSO Classifier như bảng sau: min-count threshold

Bảng 3.1: Các tham số cho Gensim Phrase để nhận diện bigram và trigram method emb size window size min count cutoff skipgram 128 10 10

Bảng 3.2: Các tham số cho Gensim để nhận train Word2vec model

Sau 75 phút training, nhóm thu về được Word2Vec model có dung lượng gần 100MB Sẵn sàng để sử dụng cho CSO Classifier module Dưới đây là một số ví dụ để kiểm tra kết quả của model

Hình 3.4: Top 10 từ/ cụm từ liên quan gần nhất với từ khoá reactjs

Hình 3.5: Top 10 từ/ cụm từ liên quan gần nhất với từ khoá oop

3.3.4 Áp dụng CSO Ontology để trích xuất kỹ năng

3.3.4.1 Tạo cached model cho CSO Classifier

CÀI ĐẶT HỆ THỐNG

Thiết kế hệ thống

4.1.1.1 Các sơ đồ use case

Use case mức tổng quát:

Hình 4.1: Biểu đồ use case mức tổng quát Use case Chưa đăng nhập:

• Mục đích: trải nghiệm ứng dụng trước khi quyết định sử dụng ứng dụng

• Tác nhân: người dùng chưa đăng nhập(Ứng viên)

• Mô tả: người dùng chưa đăng nhập chỉ sử dụng được các tính năng như: Tìm kiếm danh sách và xem chi tiết việc làm, đăng ký tài khoản

Hình 4.2: Biểu đồ use case Chưa đăng nhập Use case Đăng nhập

• Mục đích: đảm bảo xác thực thông tin người dùng và an toàn bảo mật hệ thống

• Tác nhân: Ứng viên và nhà tuyển dụng

Nhà tuyển dụng có thể đăng nhập vào ứng dụng để đăng tải thông tin tuyển dụng và tìm kiếm ứng viên phù hợp, trong khi ứng viên cũng đăng nhập để ứng tuyển công việc và đăng tải thông tin tìm kiếm việc làm, bao gồm cả CV.

Hình 4.3: Biểu đồ use case Đăng nhập Use case Nhà tuyển dụng đăng ký tài khoản:

• Mục đích: Tạo tài khoản cho nhà tuyển dụng có thể đăng nhập vào hệ thống

• Tác nhân: Nhà tuyển dụng

Để sử dụng các chức năng đăng thông tin tuyển dụng và tìm kiếm ứng viên, nhà tuyển dụng cần phải đăng ký tài khoản Sau khi hoàn tất đăng ký, họ cần xác nhận tài khoản qua email để kích hoạt và sử dụng các tính năng này.

Hình 4.4: Biểu đồ use case Đăng ký tài khoản Use case Ứng viên đăng ký tài khoản

• Mục đích: Tạo tài khoản cho ứng viên có thể đăng nhập vào hệ thống

Để truy cập các chức năng ứng tuyển và đăng tải thông tin tìm kiếm việc làm, bao gồm CV, ứng viên cần thực hiện việc đăng ký tài khoản Sau khi hoàn tất đăng ký, hãy xác nhận tài khoản qua email để kích hoạt.

Hình 4.5: Biểu đồ use case ứng viên đăng ký tài khoản Use case Xem danh sách việc làm

• Mục đích: Giúp ứng viên có thể xem các việc làm đang được tuyển dụng

• Mô tả: Không cần đăng nhập, ứng viên vào để xem danh sách tất cả các việc làm, tìm kiếm và xem chi tiết của từng việc làm

Hình 4.6: Biểu đồ use case Xem danh sách việc làm Use case Upload sơ yếu lý lịch:

• Mục đích: Ứng viên có thể tải lên hồ sơ sơ yếu lý lịch để lưu lại

Sau khi đăng nhập, ứng viên có thể dễ dàng tải lên CV của mình Đồng thời, họ có thể ứng tuyển bằng cách xem chi tiết các vị trí việc làm phù hợp với hồ sơ của mình.

Hình 4.7: Biểu đồ use case Upload sơ yếu lý lịch Use case Quản lý thông tin cá nhân

Mục đích của việc ứng viên quản lý thông tin cá nhân là giúp người dùng nắm rõ thông tin của bản thân và thông tin trong CV, từ đó có thể chỉnh sửa hợp lý nếu cần thiết.

• Mô tả: Sau khi đăng nhập, ứng viên có xem thông tin cá nhân, chỉnh sửa thông tin cá nhân nếu cần và xóa CV (nếu có)

Hình 4.8: Biểu đồ use case Quản lý thông tin cá nhân Use case Tìm kiếm việc làm:

• Mục đích: Giúp ứng viên tìm kiếm việc làm mong muốn

• Mô tả: Ứng viên không cần đăng nhập vẫn có thể tìm việc làm mong muốn bằng từ khóa cần tìm

Hình 4.9: Biểu đồ use case Tìm kiếm việc làm Use case Quản lý thông tin tuyển dụng:

• Mục đích: Nhà tuyển dụng quản lý thông tin tuyển dụng

• Tác nhân: Nhà tuyển dụng

• Mô tả: Sau khi đăng nhập vào ứng dụng, nhà tuyển dụng tiến hành cập nhật danh sách thông tin tuyển dụng của mình

Hình 4.10: Biểu đồ use case Quản lý thông tin tuyển dụng Use case Xem danh sách ứng tuyển:

• Mục đích: Xem danh sách ứng viên ứng tuyển

• Tác nhân: Nhà tuyển dụng

Nhà tuyển dụng có khả năng xem danh sách các ứng viên đã nộp hồ sơ cho vị trí công việc đã đăng, bao gồm thông tin cá nhân và CV của từng ứng viên.

Hình 4.11: Biểu đồ use case Xem danh sách ứng tuyển Use case Tìm kiếm ứng viên

• Mục đích: Tìm ứng viên phù hợp

• Tác nhân: Nhà tuyển dụng

• Mô tả: Nhà tuyển dụng lọc ra danh sách ứng viên phù hợp thông qua các tiêu chí đề ra

Hình 4.12: Biểu đồ use case Tìm kiếm ứng viên Use case Thêm ứng viên vào danh sách ứng viên tiềm năng

• Mục đích: Đánh dấu ứng viên có tiềm năng phù hợp với công việc

• Tác nhân: Nhà tuyển dụng

Nhà tuyển dụng xác định ứng viên phù hợp với công việc thông qua việc xem xét danh sách ứng tuyển và danh sách tìm kiếm ứng viên.

Hình 4.13: Biểu đồ use case Thêm ứng viên tiềm năng

1 Nhà tuyển dụng Nhà tuyển dụng có tài khoản riêng để đăng nhập vào ứng dụng

Nhà tuyển dụng có khả năng khai thác các tính năng trong quy trình tuyển dụng, bao gồm việc xem danh sách ứng viên, quản lý thông tin tuyển dụng, thêm ứng viên mới, lọc hồ sơ và đăng tin tuyển dụng.

2 Ứng viên Ứng viên là người có tài khoản riêng và đăng nhập vào ứng dụng

Khách hàng có thể tận dụng nhiều tính năng của ứng dụng, bao gồm tải lên CV, quản lý thông tin cá nhân, ứng tuyển, lưu việc làm, chỉnh sửa thông tin cá nhân và CV, cũng như xem chi tiết về các vị trí tuyển dụng.

Bảng 4.1: Danh sách các actors

4.1.1.3 Danh sách các use case

STT Tên use case Ý nghĩa

1 Use case Mức tổng quát Đưa ra các actor có trong hệ thống quản lý, và chức năng chính của mỗi actor

2 Use case Chưa đăng nhập Đánh giá mức độ yêu thích ứng dụng của người dùng (quyết định tiếp tục sự dụng ứng dụng hay không)

3 Use case Đăng nhập Yêu cầu đăng nhập để xác thực trong ứng dụng

4 Use case Nhà tuyển dụng đăng ký tài khoản Đăng ký tài khoản để có thể sử dụng chức năng tuyển dụng ứng viên

5 Use case Ứng viên đăng ký tài khoản Đăng ký tài khoản để có thể sử dụng chức năng tìm kiếm việc làm

6 Use case Xem danh sách việc làm

Giúp ứng viên có thể xem các việc làm đang được tuyển dụng

7 Use case Upload sơ yếu lý lịch: Ứng viên có thể tải lên hồ sơ sơ yếu lý lịch để lưu lại thông tin

Quản lý thông tin cá nhân giúp ứng viên theo dõi và chỉnh sửa thông tin của mình cùng với nội dung CV một cách hợp lý, đảm bảo người dùng nắm rõ các thông tin cần thiết.

9 Use case Tìm kiếm việc làm

Giúp ứng viên tìm kiếm việc làm mong muốn

10 Use case Quản lý thông tin tuyển dụng

Quản lý thông tin tuyển dụng tốt hơn(đảm bảo tính công bằng, tiện lợi)

11 Use case Xem danh sách ứng tuyển

Xem danh sách các ứng viên ứng tuyển, dễ dàng sàng lọc

12 Use case Tìm kiếm ứng viên

Lọc ra danh sách ứng viên 1 cách dễ dàng, nhanh chóng

13 Use case Thêm ứng viên tiềm năng

Dánh dấu các ứng viên tìm năng phù hợp với công việc Dễ dành xem lại các ứng viên này Bảng 4.2: Danh sách các use case

Mô tả sơ đồ lớp

STT Tên lớp Mô tả

1 RECRUITER_SAVE_RESUMES Lớp NTD theo dõi CV

2 CANDIDATE_SAVE_JP Lớp ứng viên lưu tin tuyển dụng

6 FILTER_CANDIDATES Lớp bộ lọc ứng viên

7 JOB_POSTS Lớp tin tuyển dụng

8 JOB_RESUME_SUBMISSIONS Lớp đăng ký ứng tuyển

9 RECRUITERS Lớp nhà tuyển dụng

10 RESUMES Lớp sơ yếu lý lịch

11 JOB_DOMAINS Lớp chuyên ngành

Bảng 4.3: Các lớp của sơ đổ lớp

4.1.3 Phân tích và thiết kế cơ sở dữ liệu

Dựa trên việc xác định và phân tích yêu cầu, website của nhóm bao gồm các đối tượng sau đây:

STT Tên đối tượng Thuộc tính

ID, RECRUITER_ID, RESUME_ID, TIMESTAMP

2 CANDIDATE_SAVE_JP ID, CAND_ID, JOB_POST_ID,

3 EDUCATION ID, RESUME_ID, SCHOOL_NAME,

DEGREE_LEVEL, MAJOR, START_DATE, GRADUATION_DATE

4 CANDIDATES ID, EMAIL, PASSWORD_HASH,

PHONE, FULL_NAME, GENDER, DATE_OF_BIRTH, STATUS, PROVINCE_ID, REGISTER_ON, CONFIRMED, CONFIRMED_ON

5 COMPANIES ID, NAME, LOCATION, PHONE,

EMAIL, LOGO, WEBSITE, DESCRIPTION, BACKGROUND

6 FILTER_CANDIDATES ID, NAME, JOB_DOMAINS,

PROVINCES, ATLEAST_SKILLS, REQUIRED_SKILLS,

NOT_ALLOWED_SKILLS, MIN_YEAR, MAX_YEAR, GENDER,

MONTHS_OF_EXPERIENCE, RECRUITER_ID

7 JOB_POSTS ID, RECRUITER_ID, FULL_TEXT,

DESCRIPTION_TEXT, REQUIREMENT_TEXT, BENEFIT_TEXT, TECHNICAL_SKILLS, SOFT_SKILLS, TOTAL_VIEWS,

DEALINE, CLOSED_IN, POST_IN, LAST_EDIT, JOB_DOMAIN,

JOB_TITLE, LAST_EDIT, MAX_SALARY, MIN_SALARY,

POSTED_IN, AMOUNT, CLOSED_IN, CONTRACT_TYPE,

ID, RESUME_ID, JOB_POST_ID, SUBMIT_DATE, PROCESS_STATUS, IS_CALCULATING, SCORE_ARRAY, SCORE_EXPLANATION_ARRAY

9 RECRUITERS ID, EMAIL, PASSWORD_HASH,

PHONE, FULL_NAME, GENDER, STATUS, COMPANY_ID

10 RESUMES ID, MONTH_OF_EXPERIENCE,

CAND_ID, CAND_PICTURE, CAND_LINKEDIN, CAND_GITHUB, CAND_FACEBOOK, CAND_TWITTER, CAND_BLOG, CAND_MAIL,

CAND_PHONE, SOFT_SKILLS, TECHNICAL_SKILLS, STORE_ID, STORE_URL, TOTAL_VIEWS, EDUCATIONS, EXPERIENCES, JOB_DOMAIN_ID

11 JOB_DOMAINS ID, NAME, ALTERNATIVE_NAME

Bảng 4.4: Các đối tượng và thuộc tính của đối tượng

4.1.3.1 Bảng NTD theo dõi CV

Bảng NTD theo dõi CV lưu thông tin NTD và danh sách CV mà NTD đó đang theo dõi

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT Primary key Mã hoạt động

RECRUITER_ID INT Foreign key Mã nhà tuyển dụng

RESUME_ID INT Foreign key Mã sơ yếu lý lịch

TIMESTAMP DATETIME Null Thời gian diễn ra

Bảng 4.5: Bảng NTD theo dõi CV

4.1.3.2 Bảng ứng viên lưu tin tuyển dụng

Bảng ứng viên lưu tin tuyển dụng lưu các thông tin việc làm mà người tìm việc đang muốn xem lại sau

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT Primary key Mã đánh dấu

CAND_ID INT Foreign key Mã ứng viên

JOB_POST_ID INT Foreign key Mã tin tuyển dụng

TIMESTAMP DateTime Not Null Thời gian

Bảng 4.6: Bảng ứng viên lưu tin tuyển dụng

Bảng học vấn lưu các thông tin về bằng cấp, trình độ của ứng viên

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT Primary key Mã tham số

RESUME_ID INT Foreign key Tên tham số

DEGREE_LEVEL INT Not null Bằng cấp

START_DATE DATETIME Not null Ngày bắt đầu

GRADUATION_DATE DATETIME Null Ngày tốt nghiệp

Bảng ứng viên lưu các thông tin cơ bản của ứng viên như thông tin đăng nhập, thông tin cá nhân

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT Primary key Mã ứng viên

PHONE VARCHER(15) Not null Số điện thoại

FULL_NAME VARCHER(80) Not null Họ và tên

GENDER BIT Not null Giới tính

DATE_OF_BIRTH DATETIME Not null Ngày sinh

STATUS INT Not null Trạng thái tài khoản

PROVINCE_ID INT Null Mã tỉnh nơi ở

Bảng công ty lưu các thông tin của công ty nơi nhà tuyển dụng làm việc

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT Primary key Mã công ty

NAME VARCHAR(80) Unique Tên công ty

LOCATION VARCHAR(180) Not null Địa chỉ

PHONE VARCHAR(15) Not null Số điện thoại

EMAIL VARCHAR(255) Not null Email liên lạc

LOGO VARCHAR(255) Not null Địa chỉ liên kết ảnh đại diện WEBSITE VARCHAR(255) Not null Địa chỉ liên kết trang chủ DESCRIPTION VARCHAR(255) Not null Mô tả

BACKGROUND VARCHAR(512) Not null Địa chỉ liên kết ảnh bìa

4.1.3.6 Bảng bộ lọc ứng viên

Bảng bộ lọc ứng viên lưu trữ thông tin giúp nhà tuyển dụng lọc ra danh sách ứng viên nhanh nhất

Tên trường Kiểu dữ liệu Ràng buộc

JOB_DOMAINS VARCHAR(100) Null Vị trí công việc

PROVINCES VARCHAR(100) Null Tỉnh thành

ATLEAST_SKILLS VARCHAR(300) Null Các kĩ năng tối thiểu REQUIRED_SKILLS VARCHAR (300) Null Các kĩ năng yêu cầu

NOT_ALLOWED_SKILLS VARCHAR (300) Null Không cho phép kĩ năng

MIN_YEAR VARCHAR (10) Null Số năm tối thiểu

MAX_YEAR VARCHAR(10) Null Số năm tối đa

GENDER INT(11) Null Giới tính

INT(11) Null Số tháng kinh nghiệm

RECRUITER_ID INT(11) Foreign key

Mã của nhà tuyển dụng

Bảng 4.10: Bảng bộ lọc ứng viên

Bảng tin tuyển dụng lưu trữ các thông tin chi tiết về một bài tuyển dụng để người dùng có thể xem một cách chi tiết

Tên trường Kiểu dữ liệu Ràng buộc

Mã bài đăng tuyển dụng công việc

RECRUITER_ID INT(11) Foreign key

FULL_TEXT VARCHAR(256) Not null Nội dung

DESCRIPTION_TEXT TEXT Not null Phần mô tả công việc REQUIREMENT_TEXT TEXT Not null Thông tin yêu cầu BENEFIT_TEXT TEXT Not null Thông tin về quyền lợi

TECHNICAL_SKILLS VARCHAR(500) Null Các kỹ năng công nghệ

SOFT_SKILLS VARCHAR(500) Null Các kỹ năng mềm

TOTAL_VIEWS INT(11) Null Tổng lượt xem

DEALINE DATETIME Not null Hạn chót

CLOSED_IN DATETIME Not null Ngày đóng

POST_IN DATETIME Not null Ngày đăng

LAST_EDIT DATETIME Not null Thời gian chỉnh sửa cuối cùng JOB_DOMAIN VARCHAR(128) Not null Miền công việc

JOB_TITLE VARCHAR(200) Not null Tiêu đề của công việc

LAST_EDIT DATETIME Not null Lần chỉnh sửa cuối cùng

MAX_SALARY FLOAT Null Lương tối đa

MIN_SALARY FLOAT Null Lương tối thiểu

POSTED_IN DATETIME Not null Ngày đăng

AMOUNT INT(11) Not null Số lượng

CLOSED_IN DATETIME Null Ngày đóng

CONTRACT_TYPE INT(11) Not null Loại hợp đồng

EDUCATION_LEVEL INT Null Kỹ năng về vị trí công việc

PROVINCE_ID INT(11) Null Mã tỉnh thành

Bảng 4.11: Bảng tin tuyển dụng

4.1.3.8 Bảng đăng ký ứng tuyển

Bảng đăng ký ứng tuyển lưu trữ các thông tin ứng tuyển công việc của ứng viên JOB_RESUME_SUBMISSIONS

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

RESUME_ID INT(11) Foreign key Mã hồ sơ công việc JOB_POST_ID INT(11) Foreign key Mã bài đăng tuyển dụng

SUBMIT_DATE DATETIME Null Ngày đăng ký

PROCESS_STATUS BOOLEAN Null Trạng thái xử lý dữ liệu

IS_CALCULATING BOOLEAN Null Trạng thái tính điểm tương thích hoàn thành hay chưa

Null Danh sách điểm tương thích

Null Danh sách chú thích tương ứng cho score Bảng 4.12: Bảng đăng ký ứng tuyển

Bảng nhà tuyển dụng lưu trữ thông tin của nhà tuyển dụng giúp thể hiện rõ thông tin của nhà tuyển dụng

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT(11) Primary key Mã nhà tuyển dụng

EMAIL VARCHAR(255) Foreign key Email

PASSWORD_HASH VARCHAR(128) Null Mật khẩu

PHONE VARCHAR(15) Null Số điện thoại

FULL_NAME VARCHAR(80) Null Họ và tên

GENDER GENDER Not null Giới tính

STATUS INT(11) Null Trạng thái hoạt động

COMPANY_ID INT(11) Foreign key Mã công ty

Bảng 4.13: Bảng nhà tuyển dụng

4.1.3.10 Bảng sơ yếu lý lịch

Bảng sơ yếu lý lịch lưu trữ thông tin hồ sơ của ứng viên, giúp nhận biết cụ thể các thông tin của hồ sơ yếu lý lịch

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT(11) Primary key Mã đơn sơ yếu lý lịch

INT(11) Null Số tháng kinh nghiệm

CAND_ID INT(11) Foreign key Mã ứng viên

CAND_PICTURE VARCHAR(200) Null Ảnh đại diện

CAND_LINKEDIN VARCHAR(200) Null Linkedin

CAND_GITHUB VARCHAR(200) Null Github

CAND_FACEBOOK VARCHAR(200) Null Facebook

CAND_TWITTER VARCHAR(200) Null Twitter

CAND_BLOG VARCHAR(200) Null Trang giới thiệu

CAND_MAIL VARCHAR(200) Null Email

CAND_PHONE VARCHAR(15) Null Số điện thoại

SOFT_SKILLS VARCHAR(500) Null Kỹ năng mềm

TECHNICAL_SKILLS VARCHAR(500) Null Kỹ năng công nghệ

STORE_ID INT Not null Mã lưu trữ

STORE_URL VARCHAR(200) Not null Link lưu trữ

RESUME_FILENAME VARCHAR(200) Not null Tên của tệp tải lên

VARCHAR(10) Not null Định dạng của tệp tải lên

EDUCATIONS TEXT Null Thông tin học vấn của ứng viên trích xuất ra từ tệp tải lên

EXPERIENCES TEXT Null Thông tin kinh nghiệm làm việc của ứng viên trích xuất ra từ tệp tải lên

JOB_DOMAIN_ID INT Not null Mã chuyên ngành

Bảng 4.14: Bảng sơ yếu lý lịch

Bảng chuyên ngành lưu trữ thông tin của chuyên ngành hẹp của ngành IT

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ID INT Primary key Mã chuyên ngành

NAME VARCHAR(100) Not null Tên chuyên ngành

VARCHAR(100) Null Tên gọi khác của chuyên ngành Bảng 4.15: Bảng chuyên ngành

Kiến trúc hệ thống

Hình 4.15: Kiến trúc hệ thống

Hệ thống được thiết kế để tự động sàng lọc CV dựa trên các tiêu chí đánh giá, từ đó xếp hạng CV theo điểm trọng số do nhà tuyển dụng điều chỉnh Chúng tôi tập trung vào bốn tiêu chí đánh giá: Học vấn (dựa trên trình độ cao nhất của ứng viên), Kỹ năng chung, Kỹ năng chuyên ngành theo yêu cầu của JD, và Kỹ năng mềm Kiến trúc của hệ thống bao gồm các thành phần chính như đã mô tả trong hình 5.

CV parser là công cụ giúp nhận diện và xử lý CV từ ứng viên, chuyển đổi chúng thành văn bản dễ đọc và trích xuất các thông tin quan trọng.

• Extracting skills module: chức năng chính là nhận vào một đoạn văn bản, sau đó trả về danh sách kỹ năng có trong văn bản

• Matching module: chức năng chính là nhận vào danh sách kỹ năng từ CV và

JD và trả về độ tương đồng giữa chung

Sau khi so khớp và xác định điểm tương thích, toàn bộ điểm tính toán sẽ được lưu trữ trong cơ sở dữ liệu của hệ thống Cuối cùng, nhà tuyển dụng sẽ nhận được danh sách xếp hạng CV dựa trên điểm trọng số cho từng mức độ tương thích.

Cài đặt hệ thống

4.3.1 Tổng quan về công nghệ

Flask là một framework web nhẹ được viết bằng Python, giúp lập trình viên dễ dàng xây dựng các API nhỏ và ứng dụng web Nó hỗ trợ nhiều thành phần mở rộng như tích hợp cơ sở dữ liệu, xác thực biểu mẫu, xử lý upload, và các công nghệ xác thực khác Với Flask, người dùng có thể nhanh chóng phát triển ứng dụng web từ đầu và mở rộng quy mô theo yêu cầu.

Flask dựa trên bộ công cụ Werkzeug WSGI và Jinja2 và đều là dự án của Pocco

WSGI, hay Giao diện cổng máy chủ web, là tiêu chuẩn quan trọng cho việc phát triển ứng dụng web bằng Python Nó tạo ra một giao diện phổ biến giữa máy chủ web và các ứng dụng, giúp tối ưu hóa khả năng tương tác và hiệu suất của các ứng dụng web.

Werkzeug là một bộ công cụ WSGI quan trọng, giúp xử lý các yêu cầu và phản hồi đối tượng, cùng với nhiều chức năng tiện ích khác Flask dựa vào Werkzeug như một trong những nền tảng chính của nó.

Jinja2 là một công cụ tạo mẫu giao diện phổ biến cho Python, cho phép kết hợp mẫu với nguồn dữ liệu để tạo ra các trang web động.

Một số tính năng nổi bật của Flask:

• Tài liệu mở rộng, dễ dàng tìm hiểu

• Dễ dàng cài đặt, triển khai

Flask cung cấp các thành phần cốt lõi thiết yếu cho phát triển ứng dụng web, bao gồm URL routing, đối tượng request và response, cùng với template, thay vì cung cấp tất cả các tính năng.

4.3.1.2 Hệ quản trị cơ sở dữ liệu MySQL

MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở hàng đầu thế giới, được ưa chuộng trong phát triển ứng dụng nhờ tốc độ cao, tính ổn định và dễ sử dụng Nó có khả năng thay đổi mô hình sử dụng linh hoạt theo điều kiện công việc và hoạt động trên nhiều hệ điều hành, cung cấp một bộ hàm tiện ích mạnh mẽ.

MySQL là một hệ quản trị cơ sở dữ liệu mạnh mẽ, lý tưởng cho các ứng dụng truy cập dữ liệu qua Internet nhờ tốc độ nhanh và tính bảo mật cao Người dùng có thể tải MySQL miễn phí từ trang chủ cho nhiều hệ điều hành khác nhau, bao gồm Windows, Linux, Mac OS, Unix, FreeBSD và NetBSD.

MySQL là một hệ quản trị cơ sở dữ liệu có cấu trúc và cách truy xuất tương tự như ngôn ngữ SQL Được phát hành từ những năm 90 của thế kỷ 20, MySQL mang lại nhiều ưu điểm cho người dùng.

MySQL là một cơ sở dữ liệu nhanh chóng và ổn định, dễ dàng sử dụng và tương thích với nhiều hệ điều hành khác nhau.

MySQL cung cấp tính bảo mật cao, phù hợp cho các ứng dụng cần truy cập cơ sở dữ liệu qua internet, nhờ vào nhiều tính năng bảo mật, bao gồm cả bảo mật cấp cao.

MySQL là một hệ quản trị cơ sở dữ liệu quan hệ đa tính năng, hỗ trợ nhiều chức năng SQL cả trực tiếp và gián tiếp.

• Khả năng mở rộng mạnh mẽ: Công cụ MySQL có khả năng xử lý khối dữ liệu lớn và có thể mở rộng khi cần thiết

• Tương thích trên nhiều hệ điều hành

• Cho phép khôi phục: MySQL cho phép các transaction được khôi phục, cam kết và phục hồi sự cố

Firebase là nền tảng phát triển ứng dụng di động và web dựa trên đám mây, với hệ thống máy chủ mạnh mẽ của Google Nền tảng này cung cấp dịch vụ đa năng và bảo mật cao, hỗ trợ cả Android và iOS Firebase Storage cho phép lưu trữ nhiều loại dữ liệu như tệp tin, hình ảnh và video một cách dễ dàng, đồng thời tích hợp tính năng bảo mật của Google để thuận tiện trong việc tải lên và tải về ứng dụng.

Dịch vụ lưu trữ đối tượng này cho phép bạn lưu trữ hình ảnh, âm thanh, video và nội dung do người dùng tạo ra, mang lại giải pháp mạnh mẽ, đơn giản và tiết kiệm chi phí.

Firebase Storage, được Google hỗ trợ, là nền tảng lưu trữ mạnh mẽ với quy mô toàn cầu, phục vụ cho các doanh nghiệp lớn và ứng dụng có hàng triệu người dùng Người dùng có thể sử dụng dịch vụ miễn phí trong một giới hạn nhất định và có tùy chọn nâng cấp lên các gói cao cấp nếu cần.

Trong ứng dụng này, nhóm sử dụng dịch vụ Firebase Storage để lưu CV của khách hàng, các tập tin thông tin người dùng,

Nhóm thiết kế API dựa trên tiêu chuẩn Restful API [23] với base URL: /api

• POST: /company ̶ Header: Authorization: Bearer token ̶ Thông số truyền vào:

Tên Kiểu dữ liệu Mô tả name String Tên công ty location String Địa chỉ của công ty email String Email của công ty

60 logo File Logo của công ty background File Hình nền của công ty website String Website của công ty description String Mô tả công ty

API POST: /company cho phép nhà tuyển dụng tạo mới một công ty với đầy đủ thông tin nếu công ty chưa tồn tại trong cơ sở dữ liệu Kết quả trả về sẽ thông báo việc thêm công ty thành công hoặc thất bại.

• GET: /company ̶ Header: Authorization: Bearer token ̶ Thông số truyền vào:

Tên Kiểu dữ liệu Mô tả name String Tên công ty page Int Số trang

Bảng 4.17: Thông số truyền vào của API GET: /company ̶ Kết quả:

Đánh giá

Nhóm đã tiến hành đánh giá kết quả trích xuất từ mô hình và tập dữ liệu đã được tạo trước đó Để thực hiện việc này, nhóm sử dụng một độ đo nhằm kiểm tra độ chính xác của kết quả.

Bài viết này trình bày về việc đánh giá hiệu quả của các phương pháp dựa trên kỹ năng tự động và thủ công, sử dụng các chỉ số như độ chính xác (precision), độ phủ (recall) và chỉ số F1-score Các chỉ số này được áp dụng để phân tích dữ liệu thực tế, giúp xác định mức độ hiệu quả của các kỹ thuật được sử dụng.

• TP: là tổng số lượng kỹ năng được trích xuất được xác định là đúng

• FP: là tổng số lượng kỹ năng được trích xuất được xác định là sai

• FN: là tổng số lượng kỹ năng được xác định là không liên quan

4.4.2 Kết quả đánh giá Để có thể tiến hành đánh giá, nhóm sử dụng bộ dữ liệu thực tế được thu thập từ trang web tuyển dụng và sau đó tiến hành gán nhãn bổ sung cho các kỹ năng bị liệt kê thiếu từ JD Sau đó, nhóm tiến hành trích xuất kỹ năng của tập dữ liệu đó bằng mô hình đã xây dựng được và so sánh với các kỹ năng được gán nhãn thủ công rồi sử dụng độ đo Precision, Recall và F1-score để đánh giá độ hiệu quả của phương pháp Kết quả thu được là độ chính xác (Precision) là 24.29% và độ phủ (Recall) là 78.17% và cuối cùng là F1-score là 36.71%

Kết quả thực nghiệm cho thấy sự khác biệt rõ rệt giữa các kỹ năng được rút trích từ mô hình và các kỹ năng được gán nhãn thủ công Giá trị Precision tương đối thấp có thể được chấp nhận do một số lý do nhất định.

Mô hình mà nhóm áp dụng bao gồm cả module phân tích ngữ nghĩa, giúp nâng cao khả năng thông minh của mô hình và cho phép trích xuất các kỹ năng liên quan đến những kỹ năng trong JD mà không xuất hiện trực tiếp Tuy nhiên, điều này cũng ảnh hưởng đáng kể đến giá trị đo lường, dẫn đến độ chính xác (Precision) thấp hơn mong đợi, nhưng vẫn trong mức chấp nhận được.

Việc xác định kỹ năng bằng cách gán nhãn thủ công trong một số lượng lớn JD khiến cho việc sai sót xảy ra là điều không tránh khỏi

4.4.3 Đánh giá kết quả xếp hạng danh sách CV Đối với việc đánh giá xếp hạng danh sách CV, nhóm chọn ngẫu nhiên 10 CVs đang tìm việc ở vị trí Frontend Developer và một JD ngẫu nhiên từ ITviec Sau đó cho chạy hệ thống và cho ra kết quả sau đây

CV ID Domain Score General Score Soft Skill Score Overall Score

Bảng 4.49: Bảng xếp hạng danh sách 10 CV với 1 JD cho vị trí Frontend Developer

Theo bảng trên, các CV ở hàng đầu có khả năng được chọn cao hơn so với các CV ở hàng sau Nhóm sẽ lựa chọn đại diện là CV_2 và CV_1 để so sánh điểm số của Domain Score, nhằm giải thích lý do tại sao CV_2 lại đạt điểm cao hơn.

Bên dưới là hình ảnh đồ thị biểu diễn danh sách kỹ năng được trích xuất từ JD, CV_2 và CV_1

Hình 4.42: Đồ thị biểu diễn kỹ năng cho JD

Hình 4.43: Đồ thị biểu diễn kỹ năng cho CV_2

Hình 4.44: Đồ thị biểu diễn kỹ năng cho CV_1

Từ đồ thị CV_2 sang

• Update: reac hook -> jquery, algorithms -> api, https -> code review, oop -> responsive, three -

• Insert: wireframes, sass, bitbucket, sourcetree, svn, testing, modernizr

Từ đồ thị CV_1 sang

• Update: reactjs -> bootstrap, redux -> jquery, https -> code review, oop -> responsive, restful -

• Insert: sass, scss, css preprocessors, bitbucket, git, github, sourcetree, svn, source control, testing, modernizr, tools

Bảng 4.50: Các bước chuyển đổi từ đồ thị CV_1, CV_2 sang đồ thị JD

Dựa vào việc phân tích đồ thị và các bước chuyển đổi, rõ ràng số bước chuyển đổi của CV_1 vượt trội hơn so với CV_2 Điều này dẫn đến việc CV_2 có mức độ phù hợp với JD cao hơn CV_1, do đó, việc CV_2 có domain score cao hơn là hoàn toàn hợp lý.

4.4.4 Đánh giá thực nghiệm Để đánh giá được hệ thống một cách trực quan, nhóm sẽ tiến hành so sánh tương quan ưu nhược điểm của hệ thống so với một vài website lớn về lĩnh vực tuyển dụng hiện có trên thị trường như Itviec – một website hàng đầu về lĩnh vực tuyển dụng chuyên cho ngành IT

ITviec cung cấp hệ thống đánh giá CV của ứng viên trước khi gửi cho nhà tuyển dụng, dựa trên các tiêu chuẩn của Itviec Điều này giúp nhà tuyển dụng dễ dàng tiếp cận và lựa chọn những ứng viên tiềm năng nhất.

Hệ thống sàn lọc và xếp hạng CV tự động giúp nhà tuyển dụng nhanh chóng xác định ứng viên phù hợp dựa trên các tiêu chí quan trọng Điều này không chỉ tiết kiệm thời gian mà còn nâng cao hiệu quả trong việc xử lý lượng CV lớn.

- Cung cấp đánh giá công ty và môi trường làm việc cho ứng viên tìm nơi phù hợp

- Việc đăng ký tài khoản tuyển dụng hoàn toàn miễn phí

Nhược điểm - Thời gian duyệt CV trong vòng

12 tiếng vào các ngày trong tuần

- Chưa hỗ trợ sắp xếp danh sách

CV theo mức độ phù hợp với JD của nhà tuyển dụng

- Việc đăng ký tài khoản nhà tuyển dụng cần liên hệ với ITviec để xét duyệt

- Chưa có chức năng đánh giá công ty

- Số lượng lĩnh vực trong ngành IT được hỗ trợ việc tìm kiếm và sàn lọc, sắp xếp còn hạn chế

Bảng 4.51: Ưu nhược điểm của hệ thống so với Itviec

Ngày đăng: 05/09/2021, 20:45

HÌNH ẢNH LIÊN QUAN

Hình 4.2: Biểu đồ use case Chưa đăng nhập Use case Đăng nhập  - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.2 Biểu đồ use case Chưa đăng nhập Use case Đăng nhập (Trang 47)
Hình 4.6: Biểu đồ use case Xem danh sách việc làm Use case Upload sơ yếu lý lịch:  - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.6 Biểu đồ use case Xem danh sách việc làm Use case Upload sơ yếu lý lịch: (Trang 49)
Hình 4.9: Biểu đồ use case Tìm kiếm việc làm Use case Quản lý thông tin tuyển dụng:  - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.9 Biểu đồ use case Tìm kiếm việc làm Use case Quản lý thông tin tuyển dụng: (Trang 50)
Hình 4.10: Biểu đồ use case Quản lý thông tin tuyển dụng Use case Xem danh sách ứng tuyển:  - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.10 Biểu đồ use case Quản lý thông tin tuyển dụng Use case Xem danh sách ứng tuyển: (Trang 51)
Hình 4.12: Biểu đồ use case Tìm kiếm ứng viên Use case Thêm ứng viên vào danh sách ứng viên tiềm năng  - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.12 Biểu đồ use case Tìm kiếm ứng viên Use case Thêm ứng viên vào danh sách ứng viên tiềm năng (Trang 52)
Bảng 4.1: Danh sách các actors - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Bảng 4.1 Danh sách các actors (Trang 53)
4.1.3. Phân tích và thiết kế cơ sở dữ liệu - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
4.1.3. Phân tích và thiết kế cơ sở dữ liệu (Trang 56)
Bảng 4.4: Các đối tượng và thuộc tính của đối tượng - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Bảng 4.4 Các đối tượng và thuộc tính của đối tượng (Trang 58)
Bảng 4.7: Bảng học vấn - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Bảng 4.7 Bảng học vấn (Trang 60)
Bảng 4.8: Bảng ứng viên - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Bảng 4.8 Bảng ứng viên (Trang 61)
4.1.3.6. Bảng bộ lọc ứng viên - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
4.1.3.6. Bảng bộ lọc ứng viên (Trang 62)
Bảng 4.10: Bảng bộ lọc ứng viên - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Bảng 4.10 Bảng bộ lọc ứng viên (Trang 63)
4.1.3.9. Bảng nhà tuyển dụng - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
4.1.3.9. Bảng nhà tuyển dụng (Trang 65)
4.1.3.10. Bảng sơ yếu lý lịch - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
4.1.3.10. Bảng sơ yếu lý lịch (Trang 66)
Bảng 4.13: Bảng nhà tuyển dụng - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Bảng 4.13 Bảng nhà tuyển dụng (Trang 66)
Bảng 4.32: Thông số truyền vào của API GET: /job-posts ̶Kết quả:  - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Bảng 4.32 Thông số truyền vào của API GET: /job-posts ̶Kết quả: (Trang 79)
Bảng 4.31: Thông số truyền vào của API POST: /job-posts ̶Kết quả:  Trả về thông báo cập nhật thành công hay thất bại - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Bảng 4.31 Thông số truyền vào của API POST: /job-posts ̶Kết quả: Trả về thông báo cập nhật thành công hay thất bại (Trang 79)
Bảng 4.46: Tham số truyền vào của API GET: /filters/candidates ̶Kết quả:  - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Bảng 4.46 Tham số truyền vào của API GET: /filters/candidates ̶Kết quả: (Trang 86)
Hình 4.16: Giao diện trang chủ cho ứng viên - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.16 Giao diện trang chủ cho ứng viên (Trang 87)
Bảng 4.48: Kết quả trả về của API GET: /filters/{id} - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Bảng 4.48 Kết quả trả về của API GET: /filters/{id} (Trang 87)
Hình 4.21: Giao diện chi tiết tin tuyển dụng - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.21 Giao diện chi tiết tin tuyển dụng (Trang 90)
Hình 4.22: Giao diện ứng tuyển - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.22 Giao diện ứng tuyển (Trang 91)
Hình 4.23: Giao diện Xem việc làm đã lưu - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.23 Giao diện Xem việc làm đã lưu (Trang 91)
Hình 4.31: Giao diện Danh sách bộ lọc ứng viên - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.31 Giao diện Danh sách bộ lọc ứng viên (Trang 95)
Hình 4.34: Giao diện Tạo/ Cập nhật bộ lọc ứng viên - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.34 Giao diện Tạo/ Cập nhật bộ lọc ứng viên (Trang 97)
Hình 4.38: Giao diện Xác nhận xoá - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.38 Giao diện Xác nhận xoá (Trang 99)
Hình 4.40: Giao diện Chi tiết tin tuyển dụng - Đồ án hệ thống sàn lọc sơ yếu lý lịch tự động
Hình 4.40 Giao diện Chi tiết tin tuyển dụng (Trang 100)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w