1. Trang chủ
  2. » Tất cả

Tìm hiểu beautiful soup để lấy dữ liệu từ trang web và gợi ý mức lương cho ứng viên xin việc làm

29 55 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Tìm hiểu Beautiful Soup để lấy dữ liệu từ trang web và gợi ý mức lương cho ứng viên xin việc làm
Tác giả Thiều Quang Lâm, Nguyễn Huy Đức
Người hướng dẫn Nguyễn Hồng Thủy
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh, Trường Đại học Công nghệ Thông tin
Chuyên ngành Khoa Công Nghệ Phần Mềm
Thể loại Đồ án môn học
Năm xuất bản 2022
Thành phố Hồ Chí Minh
Định dạng
Số trang 29
Dung lượng 1,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Sử dụng AI hay trong đề tài này là máy học, chúng em mong muốn giải quyết những nhu cầu cơ bản của con người, mà cụ thể trong trường hợp này, đó chính là dự đoán mức lương cho một công v

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

mức lương cho ứng viên xin việc làm

GIẢNG VIÊN GIẢNG DẠY NGUYỄN HỒNG THUỶ

Trang 2

3.2 Thực hiện huấn luyện mô hình máy học 17

Trang 3

DANH MỤC HÌNH ẢNH

Hình 1: Logo của scikit-learn 7

Hình 2: Import package 9

Hình 3: Giao diện trang vieclam24h 10

Hình 4: Khám phá các thành phần của trang web 10

Hình 5: Lấy dữ liệu dựa trên thẻ HTML 11

Hình 6: Tách dữ liệu từ chuỗi salary 11

Hình 7: Lưu dữ liệu vừa lấy được 12

Hình 8: Giao diện trang careerlink.vn 12

Hình 9: Hàm chuyển đổi đơn vị tiền tệ 13

Hình 10: Hàm tách một số từ chuỗi 13

Hình 11: Hàm tách hai số từ một chuỗi, và trả về giá trị trung bình 14

Hình 12: Xử lý trường dữ liệu lương 14

Hình 13: Import thư viện và mở các file csv 15

Hình 14: Loại bỏ các dữ liệu rỗng 15

Hình 15: Loại bỏ các dữ liệu lặp 15

Hình 16: Tách một hàng chứa nhiều giá trị 15

Hình 17: Chuẩn hoá cách ghi tên địa điểm 16

Hình 18: Import thư viện 17

Hình 19: Nạp dữ liệu 17

Hình 20: Chuyển chữ cái hoa thành chữ cái thường 18

Hình 21: Loại bỏ ký tự đặc biệt 18

Hình 22: Vector hoá dữ liệu 18

Hình 23: Tạo tập dữ liệu đầu vào 18

Hình 24: Tạo tập dữ liệu đầu ra 18

Hình 25: Tách bộ dữ liệu 19

Hình 26: Huấn luyện mô hình decision_dataset1 19

Hình 27: Lưu mô hình decision_dataset1 19

Hình 28: Tính toán RMSE và MAPE của decision_dataset1 20

Hình 29: RMSE và MAPE của decision_dataset1 20

Hình 30: Huấn luyện mô hình decision_dataset2 21

Hình 31: RMSE và MAPE của decision_dataset2 21

Hình 32: RMSE và MAPE của forest_dataset1 21

Hình 33: RMSE và MAPE của forest_dataset2 21

Hình 34: Giao diện trang web thực hiện dự đoán 22

Trang 4

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

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

Theo dòng chảy của cuộc cách mạng 4.0, trí tuệ nhân tạo (AI) ngày càng được phổ biến và ứng dụng rộng rãi trong mọi lĩnh vực của cuộc sống, mặc dù được John McCarthy – nhà khoa học máy tính người Mỹ đề cập lần đầu tiên vào những năm

1950 nhưng đến ngày nay thuật ngữ trí tuệ nhân tạo mới thực sự được biết đến rộng rãi và được các “ông lớn” của làng công nghệ chạy đua phát triển

AI là công nghệ sử dụng đến kỹ thuật số có khả năng thực hiện những nhiệm vụ mà bình thường phải cần tới trí thông minh của con người, được xem là phổ biến nhất Đặc trưng của công nghệ AI là năng lực “tự học” của máy tính, do đó có thể tự phán đoán, phân tích trước các dữ liệu mới mà không cần sự hỗ trợ của con người, đồng thời có khả năng xử lý dữ liệu với số lượng rất lớn và tốc độ cao Trí tuệ nhân tạo là một lĩnh vực liên quan đến chuyên ngành khoa học máy tính và công nghệ thông tin, bản chất của trí tuệ nhân tạo vẫn do con người làm ra, họ xây dựng các thuật toán, lập trình bằng các công cụ phần mềm công nghệ thông tin, giúp các máy tính

có thể tự động xử lý các hành vi thông minh như con người

Sử dụng AI hay trong đề tài này là máy học, chúng em mong muốn giải quyết những nhu cầu cơ bản của con người, mà cụ thể trong trường hợp này, đó chính là

dự đoán mức lương cho một công việc Đề tài này sẽ giúp ích cho những người cần tìm kiếm việc làm và mong muốn biết thêm được mức lương phù hợp với công việc

đó

1.2 Tóm tắt đồ án

Trong đồ án này, chúng em thực hiện công việc kéo dữ liệu từ các trang web tuyển dụng việc làm như vieclam24h, sau đó sử dụng các dữ liệu vừa thu thập được cho vào các mô hình máy học, cuối cùng là dựa theo kết quả của các mô hình vừa rồi để gợi ý mức lương phù hợp cho người dùng khi họ cần đi ứng tuyển việc làm

Trang 5

Chương 2 CƠ SỞ LÝ THUYẾT

2.1 Data Scraping

Lấy dữ liệu (Data Scraping) là quá trình thu thập dữ liệu và thông tin website nhằm phục vụ nhiều mục đích khác nhau Các phần mềm lấy dữ liệu truy cập vào website bằng giao thức HTTP hoặc bằng trình duyệt web để lấy ra các dữ liệu mà người thực hiện quan tâm Quá trình này có thể được thực hiện thủ công bằng cách sử dụng phần mềm, tuy nhiên phần lớn khi nhắc đến scraping tương đương với quá trình thu thập dữ liệu tự động được triển khai bằng bot hoặc các web crawler

Khi thực hiện lấy dữ liệu, mã HTML bên dưới trang web được trích xuất bởi trình lấy dữ liệu (data scraper) và được lưu trữ trong cơ sở dữ liệu Web scraping được sử dụng trong nhiều loại hình kinh doanh kỹ thuật số dựa vào việc thu thập dữ liệu Một số trường hợp sử dụng hợp pháp bao gồm:

• Các bot của công cụ tìm kiếm thu thập thông tin của một website, phân tích nội dung của nó và sau đó xếp hạng nó

• Các trang web so sánh giá triển khai bot để tự động tìm giá và mô tả sản phẩm cho các seller trên website

• Các công ty nghiên cứu thị trường sử dụng scraper để lấy dữ liệu từ các forum

và phương tiện truyền thông xã hội

Cách thức hoạt động của một Web Scraping:

• Đầu tiên, trình duyệt web sẽ được cung cấp một hoặc nhiều URL để tải trước khi scrape Sau đó, scraper sẽ tải toàn bộ HTML cho trang được đề cập Các công cụ scraper nâng cao hơn sẽ hiển thị toàn bộ trang web, bao gồm cả các phần tử CSS và Javascript

• Sau đó, scraper sẽ trích xuất tất cả dữ liệu trên trang hoặc dữ liệu cụ thể được người dùng chọn trước khi chạy project

Trang 6

• Người dùng sẽ được trải qua quá trình chọn dữ liệu cụ thể mà họ muốn chọn

từ website Ví dụ: có thể muốn scrape trang Amazon để biết giá cả và mẫu mã nhưng không nhất thiết phải quan tâm đến các bài đánh giá sản phẩm

• Cuối cùng, web scraper sẽ output tất cả dữ liệu đã được thu thập sang một định dạng có ích hơn cho người dùng

Hầu hết các web scraper sẽ output dữ liệu sang CSV hoặc Excel spreadsheet Trong khi các scraper nâng cao sẽ hỗ trợ các định dạng như JSON để có thể sử dụng được cho một API

Cũng giống như cách mọi người có thể xây dựng một trang web, bất kỳ ai cũng có thể xây dựng web scraper của riêng mình Tuy nhiên, các công cụ có sẵn để xây dựng web scraper vẫn yêu cầu một số kiến thực lập trình nâng cao Phạm vi của kiến thức cũng tăng lên theo số lượng các tính năng muốn có cho scraper của người lập trình Mặt khác, có rất nhiều công cụ web scraper pre-built mà có thể dễ dàng tải xuống và chạy ngay lập tức Một trong số này cũng sẽ được bổ sung các tùy chọn nâng cao như scrape scheduling, xuất JSON và GoogleSheets…

2.2 Beautiful Soup

BeautifulSoup là một thư viện Python dùng để lấy dữ liệu ra khỏi các file HTML và XML Nó hoạt động cùng với các parser (trình phân tích cú pháp) cung cấp các cách để điều hướng, tìm kiếm và chỉnh sửa trong parse tree (cây phân tích được tạo

từ parser) Nhờ các parser này nó đã giúp các lập trình viên tiết kiệm được nhiều giờ làm việc

Một số tính năng chính của BeautifulSoup có thể kể đến bao gồm:

• BeautifulSoup cung cấp các phương thức đơn giản và kiểu từ vựng của Python

để điều hướng, tìm kiếm và sửa đổi cây phân tích cú pháp: một bộ công cụ để chia nhỏ một văn bản HTML và chỉ lấy ra những gì cần thiết, tất cả đều gói gọn trong một vài dòng code

Trang 7

• BeautifulSoup tự động chuyển đổi tài liệu đầu vào thành Unicode và tài liệu đầu ra sang UTF-8, vì thế việc mã hoá là không cần thiết, trừ khi trong tài liệu không có cách mã hoá cụ thể mà BeautifulSoup có thể nhận dạng được

• BeautifulSoup có thể hoạt động với các parser như lxml và html5lib, cho phép chúng ta thử nhiều cách khác nhau để parse đoạn văn bản

So với một số công cụ lấy dữ liệu khác như Selenium hay Scrapy thì BeautifulSoup

có một số ưu điểm nhất định như dễ học, dễ sử dụng, và thân thiện với người dùng Phiên bản mới nhất của BeautifulSoup là phiên bản 4.x, trong đó phiên bản cuối cùng còn hỗ trợ Python 2.7 là BeautifulSoup 4.9.3

2.3 Hồi quy (Regression)

Trong máy học, hồi quy là một phương pháp học có giám sát (Supervised learning)

và là quá trình tìm kiếm mối liên hệ giữa các biến phụ thuộc và độc lập Hồi quy được dùng để dự đoán một chuỗi những giá trị liên tục như dự đoán giá nhà, dự báo thời tiết, …

Trong hồi quy, chúng ta vẽ một biểu đồ giữa các biến phù hợp nhất với các điểm dữ liệu đã cho, và dựa vào biểu đồ này, mô hình học máy có thể đưa ra dự đoán về dữ liệu Nói một cách đơn giản, “Hồi quy hiển thị một đường thẳng hoặc đường cong

đi qua tất cả các điểm dữ liệu trên biểu đồ dự đoán mục tiêu theo cách sao cho khoảng cách dọc giữa các điểm dữ liệu và hồi quy là nhỏ nhất.” Khoảng cách giữa các điểm dữ liệu và đường thẳng cho biết liệu mô hình đó có dự đoán gần đúng với giá trị thực tế không

Có nhiều thuật toán hồi quy khác nhau được sử dụng trong khoa học dữ liệu và học máy Mỗi loại có tầm quan trọng riêng đối với các tình huống khác nhau, nhưng cốt lõi, tất cả các phương pháp hồi quy đều phân tích ảnh hưởng của biến độc lập đối với các biến phụ thuộc Một số thuật toán hồi quy bao gồm:

Linear Regression: Là một phương pháp thống kê để hồi quy dữ liệu với biến phụ

thuộc có giá trị liên tục trong khi các biến độc lập có thể có một trong hai giá trị liên

Trang 8

tục hoặc là giá trị phân loại Nói cách khác "Hồi quy tuyến tính" là một phương pháp để dự đoán biến phụ thuộc (Y) dựa trên giá trị của biến độc lập (X) Nó có thể được sử dụng cho các trường hợp chúng ta muốn dự đoán một số lượng liên tục Ví

dụ, dự đoán giao thông ở một cửa hàng bán lẻ, dự đoán thời gian người dùng dừng lại một trang nào đó hoặc số trang đã truy cập vào một website nào đó, …

Linear Regression là thuật toán hồi quy đơn giản nhất nên thường được sử dụng rộng rãi Tuy nhiên, Linear Regression có một số nhược điểm như rất nhạy với nhiễu, không thể biểu diễn được các mô hình phức tạp, …

Support Vector Machine (SVM): SVM là thuật toán có thể sử dụng cho cả bài

toán Phân loại và Hồi quy Mục tiêu của thuật toán SVM là tìm một hyperplane trong không gian N chiều phân loại rõ ràng các điểm dữ liệu Kích thước của

hyperplane phụ thuộc vào số lượng feature, nếu số feature đầu vào là hai, thì

hyperplane chỉ là một đường thẳng, còn nếu số lượng feature đầu vào là ba, thì hyperplane được biểu diễn dưới dạng một mặt phẳng hai chiều

SVM có một số ưu điểm như: hoạt động tốt trong trường hợp số chiều (dimension) nhiều hơn số mẫu (sample), sử dụng một tập hợp các điểm training trong hàm quyết định (được gọi là support vector) nên tiết kiệm bộ nhớ Nhưng cũng có một số hạn chế nhất định, như khó tránh khỏi overfitting nếu số feature nhiều hơn số mẫu, và SVM không đưa ra giá trị dự đoán xác suất, mà được tính toán bằng cách sử dụng xác thực chéo năm lần (five-fold cross-validation)

Decision Tree: Tương tự như SVM, Cây quyết định là thuật toán có thể sử dụng

cho cả bài toán Phân loại và Hồi quy Thuật toán này sử dụng mô hình quyết định dạng cây để dự đoán giá trị (Hồi quy) hoặc dự đoán một lớp các giá trị (Phân loại) Quá trình phân tách để tạo cây bắt đầu tại nút gốc và được theo sau bởi một cây phân nhánh cuối cùng dẫn đến một nút lá (nút đầu cuối) có chứa dự đoán hoặc kết quả cuối cùng của thuật toán Việc xây dựng cây quyết định thường hoạt động từ trên xuống, bằng cách chọn một biến ở mỗi bước để phân chia sao cho hợp lý nhất tập hợp các mục Mỗi cây con của mô hình cây quyết định có thể được biểu diễn

Trang 9

dưới dạng cây nhị phân trong đó một nút quyết định chia thành hai nút tuỳ thuộc vào các điều kiện

Cây nhị phân có thể được biểu diễn một cách trực quan, dễ hiểu, và có thể xử lý cả hai loại dữ liệu là số và chữ Nhưng cây nhị phân cũng rất dễ bị overfitting, và các cây nhị phân cũng không ổn định bởi vì các biến có giá trị nhỏ trong tập dữ liệu có thể sinh ra một cây mới hoàn toàn

Random Forest: Như tên gọi, Random Forest là thuật toán chứa một số lượng cây

quyết định trên các tập hợp con khác nhau của tập dữ liệu đã cho và lấy giá trị trung bình để cải thiện độ chính xác cho dự đoán cuối cùng của tập dữ liệu đó Thay vì dựa vào một cây quyết định, Random Forest lấy dự đoán từ mỗi cây và tuỳ thuộc vào mục tiêu, mô hình sẽ dự đoán kết quả cuối cùng hoặc một tập các kết quả Vì được dựa trên Cây quyết định nên thuật toán này có thể sử dụng cho cả bài toán Phân loại và Hồi quy

Random Forest có ưu điểm là có thể đưa ra kết quả có độ chính xác rất cao, và có thể xử lý các bộ dữ liệu có kích thước lớn Nhưng cũng có một số nhược điểm, như tiêu tốn nhiều tài nguyên, và cần thời gian dài để huấn luyện mô hình

2.4 Scikit-learn

Trang 10

Hình 1: Logo của scikit-learn

Scikit-learn (Sklearn) là thư viện mạnh mẽ nhất dành cho các thuật toán học máy được viết trên ngôn ngữ Python Thư viện cung cấp một tập các công cụ xử lý các bài toán machine learning và statistical modeling gồm: classification, regression, clustering, và dimensionality reduction Scikit-learn hỗ trợ mạnh mẽ trong việc xây dựng các sản phẩm Nghĩa là thư viện này tập trung sâu trong việc xây dựng các yếu tố: dễ sử dụng, dễ code, dễ tham khảo, dễ làm việc, hiệu quả cao

Mặc dù được viết cho Python nhưng thực tế, các thư viện nền tảng của scikit-learn lại được viết dưới các thư viện của C để tăng hiệu suất làm việc Ví dụ như: Numpy (Tính toán ma trận), LAPACK, LibSVM và Cython

Thư viện được cấp phép bản quyền chuẩn FreeBSD và chạy được trên nhiều nền tảng Linux Scikit-learn có thể được sử dụng như một tài liệu để học tập

Khi cài đặt scikit-learn, một số thư viện khác cũng có thể được cài đặt chung để có thể kết hợp được với nhau, bao gồm:

• Numpy: Gói thư viện xử lý dãy số và ma trận nhiều chiều

• SciPy: Gói các hàm tính toán logic khoa học

• Matplotlib: Biểu diễn dữ liệu dưới dạng đồ thị 2 chiều, 3 chiều

• IPython: Notebook dùng để tương tác trực quan với Python

Trang 11

• SymPy: Gói thư viện các kí tự toán học

• Pandas: Xử lý, phân tích dữ liệu dưới dạng bảng

Các thư viện này, kể cả scikit-learn, đều có được cài đặt một cách dễ dàng nhờ vào PyPI (Python Package Manager) với cú pháp pip hoặc Anaconda

Trang 12

Chương 3 QUÁ TRÌNH THỰC HIỆN

3.1 Chuẩn bị dữ liệu

3.1.1 Lấy dữ liệu từ web

Trước khi bắt đầu, chúng ta cần tải về các package hỗ trợ việc lấy dữ liệu

Cài đặt BeautifulSoup 4 và html5lib bằng PyPI:

pip install bs4

pip install html5lib

Ngoài ra, để tránh trường hợp các ký tự tiếng Việt không thể được lưu trong csv, chúng ta cài đặt thêm unidecode để chuyển tất cả ký tự tiếng Việt sang ký tự Latin không dấu:

pip install unidecode

Nếu như trong môi trường chưa có package requests thì chúng ta tải về Tuy nhiên, nếu như đang sử dụng Python 3.7 trở lên, chúng ta không cần tải nữa vì trong Python đã được cài sẵn requests:

pip install requests

Sau khi cài đặt, chúng ta import vào chương trình:

Để bắt đầu, chúng ta tìm hiểu chút về trang vieclam24h Tìm kiếm cho tất cả công việc, chúng ta thấy kết quả hiện ra theo các trang, mỗi trang chứa tối đa 30 thông tin việc làm:

Hình 2: Import package

Trang 13

Hình 3: Giao diện trang vieclam24h

Chúng ta tìm hiểu phần dữ liệu cần lấy bằng cách nhần chuột phải vào tên công việc, chọn “Inspect”:

Có rất nhiều mục khác nhau, ở đây chúng ta chỉ quan tâm đến tên công việc, tên công ty, nơi làm việc, và mức lương

Tuy nhiên trong số các công việc được liệt kê, những công việc có gắn nhãn “hot”

sử dụng thẻ HTML khác với những thẻ tên còn lại, thế nên phải lấy cả những thẻ tên đó

Hình 4: Khám phá các thành phần của trang web

Trang 14

Hình 5: Lấy dữ liệu dựa trên thẻ HTML

Sau khi lấy được các thông tin cần thiết, chúng ta xem qua một chút các giá trị trong mục lương Có ba kiểu ghi khác nhau, bao gồm “Trên X triệu”, “X – Y

triệu”, và “Thoả thuận”

Để đơn giản hoá công việc cho mô hình máy học, chúng ta sẽ gộp các giá trị lương lại thành một giá trị duy nhất là mức lương trung bình (nếu như lương nằm trong khoảng), và chỉ lưu trữ giá trị hàng triệu về trước (ví dụ như 6,000,000 đồng thì lưu lại trong tập dữ liệu là 6):

Cuối cùng, chúng ta lưu các dữ liệu vừa thu thập được vào một dictionary, và lưu các dictionary đó vào file csv:

Hình 6: Tách dữ liệu từ chuỗi salary

Ngày đăng: 01/02/2023, 21:11

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w