Một hệ thống việc làm hay thương mại điện tử sẽ được người dùng yêu thích khi hệ thống gợi ý đó gợi ý cho họ những job hay sản phẩm từ các hành vi của họ một cách nhanh chóng và chính xá
Trang 1Tìm hiểu Recommendation System trong lĩnh vực tuyển dụng
& Áp dụng xây dựng ứng dụng hỗ trợ tìm kiếm việc làm
Giảng viên hướng dẫn:
Cô Thái Thụy Hàn Uyển
Sinh viên thực hiện
18521275 - Lương Kim Phượng
18520282 - Đinh Quang Hoàng
Thành phố Hồ Chí Minh, tháng 12 năm 2021
Trang 22
NHẬN XÉT CỦA GIẢNG VIÊN
………
…… ………
………… ………
……… ………
……… ………
……… ………
……… ………
……… ………
……… ………
……… ………
……… ………
……… ………
……… ………
……… ………
……… ………
……… ………
……… ………
……… …
………
… ………
… ………
……… ………
……… ………
……… ………
……… ………
……… ………
………
Trang 33
LỜI CẢM ƠN
Nhóm em trân trọng cảm ơn cô Thái Thụy Hàn Uyển đã tạo điều kiện và hướng
dẫn để chúng em có cơ hội tìm hiểu về đề tài này Chúng em cũng cảm ơn tất cả các bạn cùng lớp đã chia sẻ những tìm hiểu và kinh nghiệm về những kiến thức bổ ích liên quan đến Công nghệ Phần mềm Trải qua 14 tuần tìm hiểu và nghiên cứu đã cho chúng em cái nhìn chi tiết về các chủ đề, bài nghiên cứu mới lạ và hấp dẫn Chúng em tin rằng những kiến thức này sẽ hỗ trợ chúng em trên con đường sự nghiệp sắp tới Một lần nữa, cảm ơn cô và các bạn đã đồng hành và hỗ trợ nhóm chúng em trong môn học này
Trang 55
A RECOMMENDATION SYSTEM
I Tổng quan về Recommendation System
Tóm tắt chương: trong chương 1, nhóm sẽ trình bày tổng quan về đề tài và lý do
thực hiện đề tài Qua đó làm rõ đối tượng tìm hiểu và phương pháp thực hiện đề tài
● Amazon sử dụng nó để đề xuất sản phẩm cho khách hàng
● Netflix sử dụng gợi ý việc làm cho người dùng
● YouTube sử dụng nó để đề xuất các video và quyết định video sẽ phát tiếp theo trên chế độ tự động phát
● Facebook sử dụng nó để gợi ý kết bạn, đề xuất các trang để thích và mọi người theo dõi
Như vậy, một trong những yếu tố tiên quyết giúp tăng trưởng doanh số của các hệ thống gợi ý là việc đáp ứng nhu cầu của người dùng Một hệ thống việc làm hay thương mại điện tử sẽ được người dùng yêu thích khi hệ thống gợi ý đó gợi ý cho họ những job hay sản phẩm từ các hành vi của họ một cách nhanh chóng và chính xác nhất Có thể nói đây là một trong những vấn đề được các hệ thống việc làm hay thương mại điện tử, mạng
xã hội đặt lên hàng đầu sau các yếu tố về thị trường và chất lượng, …
Trang 66
Bài toán hệ thống gợi ý được mô tả như sau:
● Input: dữ liệu về item và ratings của người dùng
● Output: Các item liên quan
Trong đề tài này, nhóm sẽ đưa ra các phương pháp xây dựng hệ thống gợi ý, tiến hành so sánh, đánh giá và tiến hành xây dựng một ứng dụng minh họa trên di động
2 Đối tượng tìm hiểu
Để cụ thể hóa được đối tượng tìm hiểu, nhóm sẽ tập trung vào tìm hiểu về lĩnh vực tuyển dụng việc làm, cụ thể là xây dựng hệ thống gợi ý về việc làm, để hiện thực và đánh giá đề tài, nhóm đề ra những mục tiêu sau là: Tổng quan bài toán xây dựng hệ thống gợi ý việc làm dựa trên CV và lịch sử tìm kiếm của người dùng Đánh giá và phân tích các thuật toán
3 Phạm vi tìm hiểu
Trong phạm vi của đề tài, nhóm sẽ tập trung hoàn thành các nội dung sau:
● Tổng quan về kiến thức trong lĩnh vực hệ thống gợi ý: tập trung vào các hướng tiếp cận, phương pháp sử dụng Machine Learning
● Tập trung đánh giá và phân tích các phương pháp đã thực hiện trên bộ dữ liệu Movielens
● Xây dựng và triển khai hệ thống trên thiết bị di động
4 Phương pháp thực hiện
● Trong đề tài này, nhóm sẽ thực hiện bằng các phương pháp:
● Phương pháp lọc dựa trên nội dung (Content-based Filtering)
● Phương pháp lọc công tác (Collaborative Filtering)
Trang 77
II Hướng tiếp cận xây dựng Recommendation System
Tóm tắt chương: Nội dung chính của chương này sẽ giới thiệu tổng quan về bài
toán hệ thống gợi ý Nhóm chọn tìm hiểu trong lĩnh vực việc làm ảnh vì lượng tài liệu đầy đủ và phong phú Giới thiệu các phương pháp và các nghiên cứu có thể áp dụng cho bài toán hệ thống gợi ý việc làm
1 Giới thiệu bài toán
Một hệ thống gợi ý việc làm thường được chia thành 3 quá trình chính:
● Bước 1: Tìm các đặc trưng (features) có ảnh hưởng đến việc đánh giá của người dùng, thông qua việc phân tích và thăm dò dữ liệu
● Bước 2: Phân tích và áp dụng giải thuật filtering phù hợp
● Bước 3: Tiến hành training mô hình
Nhìn chung, hệ thống Recommender System có thể được chia thành 4 loại chính:
Hình 1: Kiến trúc hệ thống gợi ý
Trang 88
2 Simple Recommenders
Đưa ra các đề xuất tổng quát cho mọi người dùng, dựa trên mức độ phổ biến và/hoặc các loại công nghệ công việc cần tuyển Ý tưởng cơ bản đằng sau hệ thống này là những công việc nổi tiếng hơn và được nhà tuyển dụng đánh giá cao hơn sẽ có xác suất được người ứng tuyển bình thường thích cao hơn
3 Content-based Recommenders
Content-based filtering trong lĩnh vực hệ thống gợi ý là một giải thuật tập trung vào các đánh giá đặc tính của items Nó sẽ gợi ý các item dựa trên hồ sơ (profiles) của người dùng hoặc dựa vào nội dung, thuộc tính (attributes) của những item tương tự như item
mà người dùng đã chọn trong quá khứ
Cụ thể là trong bài toán hệ thống gợi ý công việc đầu vào là thông tin về công việc (sử dụng công nghệ nào, ngôn ngữ gì, cần tuyển vị trí nào, ) và đầu ra là các công việc liên quan
Content-based filtering chỉ quan tâm đến người dùng hiện tại, ngoài ra không có liên kết mối quan hệ với các người dùng khác Dựa trên những gì người dùng đang xem
mà hệ thống gợi ý ra các công việc khác tương tự
Ví dụ: một người rất thích ăn cam, vậy thì hệ thống gợi ý một loại trái cây tương
tự với cam, ở đây là bưởi để đề xuất Cách tiếp cận này yêu cầu việc sắp xếp các items vào từng nhóm hoặc đi tìm các đặc trưng của từng item
Trang 99
Hình 2: Ý tưởng thuật toán Content-based
Giải thuật này sẽ có ít các gợi ý các công việc được cộng đồng tuyển dụng đánh giá cao Tuy nhiên điều này sẽ hoạt động ngay cả khi người dùng có thói quen không đánh giá nhà tuyển dụng Tất nhiên là người dùng sẽ chỉ được gợi ý các công việc có tính chất tương tự mà không có các gợi ý khác đa dạng hơn công việc người dùng đang xem trừ khi họ chủ động xem một công việc khác
Trang 1010
Hình 3: Một số hạn chế khi áp dụng thuật toán Content-based
Một ví dụ khác, khi người dùng thích ngôn ngữ C#, công nghệ NET, hệ thống sẽ
đề xuất công việc tuyển dụng NET Winform C#, cùng công nghệ với công việc người dùng thích Chính vì vậy, hệ thống chỉ cần biết người dùng xem công việc nào chứ không cần dữ liệu về ratings, giúp nó hoạt động ngay cả khi người dùng không có thói quen đánh giá công việc Và tất nhiên nó chỉ đề xuất các công việc có tính chất tương tự mà không đề xuất đa dạng công việc hay các công việc được cộng đồng tìm việc làm đánh giá cao
4 Collaborative filtering Recommenders
Như Nhóm đã trình bày ở trên, content-based chỉ đề xuất các công việc có tính chất tương tự mà không đề xuất đa dạng công việc hay các công việc được cộng đồng xem
việc làm đánh giá cao Bên cạnh đó, contented-based Recommender System trên có
hai nhược điểm:
● Thứ nhất, khi xây dựng mô hình cho một user, các hệ thống Content-based không tận
dụng được thông tin từ các users khác Những thông tin này thường rất hữu ích vì hành vi mua hàng của các users thường được nhóm thành một vài nhóm đơn giản; nếu biết hành vi mua hàng của một vài users trong nhóm, hệ thống sẽ suy luận ra hành vi của những users còn lại
● Thứ hai, không phải lúc nào chúng ta cũng có bản mô tả cho mỗi item Việc yêu
cầu users gắn tags còn khó khăn hơn vì không phải ai cũng sẵn sàng làm việc đó; hoặc
có làm nhưng sẽ mang xu hướng cá nhân Các thuật toán NLP cũng phức tạp hơn ở việc phải xử lý các từ gần nghĩa, viết tắt, sai chính tả, hoặc được viết ở các ngôn ngữ khác nhau.
Những nhược điểm phía trên có thể được giải quyết bằng Collaborative Filtering
Ý tưởng thuật toán
Trang 11Hình 4: Ý tưởng thuật toán Collaborative filtering
Ví dụ: Hai users A, B đều thích các công việc có công nghệ NET C# (tức là đều
đánh giá các công việc thuộc thể loại này 4 -> 5 sao) Dựa vào lịch sử công việc của B, ta
Trang 12● Bước 2: Tìm một nhóm {N} bao gồm những người đã công việc X và đồng
thời đã cùng xem và chấm điểm những công việc khác nhau với điểm số tương tự A
● Bước 3: Ước lượng điểm số mà người dùng A sẽ chấm cho công việc X dựa
trên điểm số mà nhóm {N} đã chấm cho công việc X
Trang 1313 Hình 5: Quy trình hoạt động thuật toán Collaborative Filtering
Trang 1414
Đối với Collaborative filtering, có 2 hướng tiếp cận nhỏ:
● User based filtering: xác định mức độ quan tâm của mỗi user tới một item dựa trên mức độ quan tâm của users gần giống nhau (similar users) tới item đó Mức
độ tương đồng được đánh giá thông qua cosine similarity hoặc Pearson Correlation
● Item based filtering: thay vì xác định user similarities, hệ thống sẽ dựa trên những điểm tương đồng giữa các items với mặt hàng được làm mốc đánh giá
Từ đó, hệ thống gợi ý những items gần giống với những items mà user có mức
độ quan tâm cao Tương tự như user-based filtering, item-based filtering đo lường được đánh giá thông qua cosine similarity hoặc Pearson Correlation
5 Hybrid Recommenders
Hybrid Filtering là sự kết hợp của hai giải thuật Content-based Filtering và Collaborative Filtering: Hybrid Filtering được sử dụng mềm dẻo khi hệ thống Collaborative Filtering không có các hành vi (ratings), khi đó hệ thống sẽ sử dụng Content-based Filtering và ngược lại
Trang 1515
III Xây dựng hệ thống gợi ý cho bài toán gợi ý công việc
Tóm tắt chương: Nội dung chính của chương này sẽ trình bày cách thức xây dựng
hệ thống gợi ý Các kỹ thuật nhóm sẽ sử dụng là Content based recommender và Collaborative recommender
1 Content-based Recommenders
1.1 Nhắc lại thuật toán
Ý tưởng cơ bản của thuật toán này là dự đoán mức độ yêu thích của một user đối với một item dựa trên các users khác “gần giống” với user đang xét Việc xác định độ
“giống nhau” giữa các users có thể dựa vào mức độ quan tâm (rating) của các users này với các items khác mà hệ thống đã biết trong quá khứ
Hình 6: Ý tưởng thuật toán Content-based
Trang 1616
1.2 Thiết kế
Hình 7: Các bước thiết kế hệ thống
1.2.1 Khởi tạo dữ liệu
Nhóm clone danh sách công việc kèm bộ kỹ năng yêu cầu từ nhiều website tuyển dụng như TopCV, Vietnamwork, ITvieclam, Sau đó xử lý, lưu vào file csv Sau khi
xử lý, files csv sẽ chứa thông tin về từng job (id job, tên job, skills) Một jobs có thể có thể yêu cầu nhiều skill được ngăn cách bởi “|” hoặc cần skill nào hết
Sử dụng module read_csv của Pandas để đọc file và lưu thành Dataframe
Hình 8: Minh họa dữ liệu
Trang 1717
1.2.2 Thiết lập ma trận TF – IDF
● Mỗi item là 1 job
● Dựa trên skill của mỗi item, nhóm xây dựng một bộ hồ sơ (profile) cho mỗi item Profile này được biểu diễn dưới dạng toán học là một feature vector Feature vector được trực tiếp trích xuất từ item:
● Sử dụng Class TfIdfVectorizer tạo ra ma trận TF - IDF:
o Nhập module Tfidf bằng scikit-learning
o Thay thế các giá trị not-a-number bằng một chuỗi trống
Trang 1818
Hình 9: Ma trận dữ liệu job
1.2.3 Tính độ tương đồng giữa các item
● Tiếp theo, ta sử dụng độ tương tự cosine để tính toán một đại lượng số biểu thị
sự giống nhau giữa hai việc làm Chọn điểm tương tự cosine vì nó không phụ thuộc vào độ lớn và tương đối dễ dàng để tính toán (đặc biệt khi được sử dụng kết hợp với điểm TF - IDF)
● Nhóm sử dụng module linear_kernel () của sklearn thay vì cosine_similities () tốc độ xử lý của linear_kernal nhanh hơn Kết quả thu được của Nhóm là ma trận có hình dạng 9743x9743, có nghĩa là điểm tương đồng của mỗi tổng quan
về cosine của mỗi job với mọi tổng quan của job khác Do đó, mỗi job sẽ là một vectơ cột 1x9743 trong đó mỗi cột sẽ là một điểm tương đồng với mỗi job
Hình 10: Độ tương đồng giữa các job
1.2.4 Kết quả
Sau khi đã có ma trận điểm tương đồng của các job, Nhóm lấy ra được top job có điểm tương đồng cao nhất so với job được so sánh với các bước:
Trang 1919
● Lấy chỉ mục của job với tiêu đề của nó
● Nhận danh sách điểm tương đồng cosine của việc làm cụ thể với các job
● Sắp xếp danh sách các bộ giá trị nói trên dựa trên điểm số tương tự
● Trả về các tiêu đề tương ứng với chỉ số của các phần tử trên cùng
2 Collaborative filtering Recommenders
2.1 Nhắc lại thuật toán
Ý tưởng cơ bản của thuật toán này là dự đoán mức độ yêu thích của một user đối với một item dựa trên các users khác “gần giống” với user đang xét Việc xác định độ “giống nhau” giữa các users có thể dựa vào mức độ quan tâm (rating) của các users này với các items khác mà hệ thống đã biết trong quá khứ
Trang 2020
Hình 11: Ý tưởng thuật toán Collaborative filtering
2.2 Thiết kế
Hình 12: Các bước thiết kế hệ thống
2.2.1 Khởi tạo dữ liệu
Đối với Collaborative filtering, nhóm sử dụng 3 thành phần dữ liệu là user, movies
và ratings (1), cụ thể:
● Users: là danh sách người dùng
Trang 2121
● Items: là danh sách các job, mỗi jobs có thể kèm theo thông tin mô tả
● Ratings: là số điểm user đánh giá cho các jobs
Để lưu trữ được 3 thành phần dữ liệu trên, Nhóm tiếp tục sử dụng module read_csv của Pandas để lưu trữ, Nhóm gọi là ma trận user – items Cụ thể, ma trận user - items biểu diễn mức độ quan tâm (rating) của user với mỗi item Ma trận này được xây dựng từ dữ liệu (1)
Hình 13: Khởi tạo ma trận dữ liệu
Ma trận này có rất nhiều các giá trị miss Nhiệm vụ của hệ thống là dựa vào các ô đã
có giá trị trong ma trận trên (dữ liệu thu được từ trong quá khứ), thông qua mô hình đã được xây dựng, dự đoán các ô còn trống (của user hiện hành), sau đó sắp xếp kết quả dự đoán (ví dụ, từ cao xuống thấp) và chọn ra Top-N items theo thứ tự rating giảm dần, từ đó gợi ý chúng cho người dùng
2.2.2 Chuẩn hóa ma trận dữ liệu user – item
Để có thể sử dụng ma trận này vào việc tính toán, nhóm cần thay những dấu ‘?’ bởi một giá trị Đơn giản nhất có thể thay giá trị ‘0’ hay một cách khác là ‘2.5’ – giá trị trung bình giữa 0 và 5 Tuy nhiên, cách tính này có độ chính xác thấp vì những giá trị này sẽ hạn chế với những users dễ hoặc khó tính Thay vào đó, nhóm sử dụng giá trị trung bình
Trang 22Sau khi chuẩn hóa ma trận Utility, ta tính toán độ tương đồng giữa các users Nhóm
sử dụng hàm cosine similarity (hàm có sẵn của thư viện sklearn của Python):
Trang 2323
Hình 15: Hàm cosine similarity, tính độ tương đồng giữa 2 vector
Hình 16: Ma trận độ tương đồng giữa các users
2.2.3 Dự đoán ratings user
Nhóm sẽ dự đoán ratings của một user với mỗi item dựa trên k users gần nhất (neighbor users), tương tự như phương pháp K-nearest neighbors (KNN)
Hình 17: Công thức dự đoán ratings
Trong đó, N(u, i) là tập k users gần nhất (có độ tương đồng cao nhất) với user u và
đã từng đánh giá item i.Ví dụ nhóm sẽ dự đoán normalized rating của user u1 cho item i1
với k = 2 là số users gần nhất.
− Bước 1: Xác định các users đã rated cho i1, đó là u0, u3, u5
− Bước 2: Lấy similarities của u1 với u0, u3, u5 Kết quả lần lượt là: {u0, u3, u5: {0.83,
Trang 2424
Hình 18: Ví dụ về áp dụng công thức dự đoán ratings
Thực hiện dự đoán cho các trường hợp missing ratings (chưa có dự đoán), ta sẽ thu được ma trận normalized ratings matrix như ví dụ:
Hình 19: Ma trận user-item sau khi đã dự đoán ratings
Cuối cùng, cộng lại các giá trị ratings với ratings trung bình (ở bước chuẩn hóa) theo từng cột Chúng ta sẽ thu được ma trận hoàn thiện
2.2.4 Kết quả
Sau khi chúng ta đã dự đoán được ratings của các job mà người dùng sẽ đánh giá, chúng ta lấy ra được top job mà user sẽ thích theo các bước:
− Lấy id người dùng
− Nhận danh sách rating của người dùng đối với các job chưa xem
− Sắp xếp và trả về danh sách các job theo rating từ cao xuống thấp