1. Trang chủ
  2. » Công Nghệ Thông Tin

NGHIÊN CỨU XÂY DỰNG CHƯƠNG TRÌNH PHÂN LOẠI VĂN BẢN DÙNG GIẢI THUẬT KNEAREST NEIGHBORS BẰNG NGÔN NGỮ PYTHON

13 45 1

Đ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

Định dạng
Số trang 13
Dung lượng 415,98 KB

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

Nội dung

NGHIÊN CỨU XÂY DỰNG CHƯƠNG TRÌNH PHÂN LOẠI VĂN BẢN DÙNG GIẢI THUẬT KNEAREST KNEIGHBORS BẰNG NGÔN NGỮ PYTHON PHÂN LOẠI VĂN BẢN DÙNG NGÔN NGỮ PYTHON GIẢI THUẬT KNEAREST NEIGHBORS PHÂN LOẠI VĂN BẢN DÙNG GIẢI THUẬT KNEAREST NEIGHBORS

Trang 1

BÀI TIỂU LUẬN

ĐỀ TÀI:

NGHIÊN CỨU XÂY DỰNG CHƯƠNG TRÌNH PHÂN LOẠI VĂN BẢN DÙNG GIẢI THUẬT K-NEAREST NEIGHBORS BẰNG NGÔN NGỮ PYTHON

Hồ Chí Minh, tháng 8 năm 2021

Trang 2

Mục lục

CHƯƠNG 1: TỔNG QUAN BÀI TOÁN PHÂN LOẠI VĂN BẢN

1.1 Khái niệm phân lớp văn bản

1.1.1 Khái niệm

Phân lớp văn bản (Text classification) là quá trình gán nhãn (tên lớp / nhãn lớp) các văn bản ngôn ngữ tự nhiên một cách tự động vào một hoặc nhiều lớp cho truớc Phân lớp văn bản là bài toán cơ bản trong khai phá dữ liệu văn bản Bài toán phân lớp văn bản

là việc gán tên các chủ đề (tên lớp/nhãn lớp) đã được xác định trước, vào các văn bản dựa trên nội dung của chúng

Phân lớp văn bản là công việc được sử dụng để hỗ trợ trong quá trình tìm kiếm thông tin, chiết lọc thông tin, lọc văn bản hoặc tự động dẫn đường cho các văn bản tới những chủ đề xác định trước Phân lớp văn bản có thể thực hiện thủ công hoặc tự động sử dụng các kỹ thuật học máy có giám sát Các hệ thống phân lớp có thể ứng dụng trong việc phân loại tài liệu của các thư viện điện tử, phân loại văn bản báo chí trên các trang tin điện tử… những hệ thống tốt, cho ra kết quả khả quan, giúp ích nhiều cho con người

1.1.2 Phân loại bài toán phân lớp văn bản

- Phân lớp văn bản nhị phân / đa lớp: Bài toán phân lớp văn bản được gọi là nhị phân nếu số lớp là 2, gọi là đa lớp nếu số lớp lớn hơn 2

-Phân lớp văn bản đơn nhãn / đa nhãn: Bài toán phân lớp văn bản được gọi là đơn nhãn nếu mỗi tài liệu được gán vào chính xác mộtlớp Bài toán phân lớp văn bản được gọi là đa nhãn nếu một tài liệu có thể được gán nhiều hơn một nhãn

1.2 Mục tiêu

Mục tiêu của một hệ thống phân loại văn bản là nó có thể tự động phân loại một văn bản cho trước, để xác định xem văn bản đó thuộc thể loại nào Một số ứng dụng của

hệ thống phân loại như:

• Hiểu được ý nghĩa, đánh giá, bình luận của người dùng từ mạng xã hội

• Phân loại emails là spam hay không spam

• Tự động gắn thẻ cho những truy vấn, tìm kiếm của người dùng

• Phân loại các bài báo điện tử

1.3 Mô hình phân lớp văn bản dùng tiếp cận học máy

Hình 1 mô tả quy trình xây dựng mô hình phân loại văn bản sử dụng các thuật toán học máy, gồm hai quá trình: huấn luyện và dự đoán

Trang 3

Hình 1 Quy trình xây dựng mô hình phân loại văn bản sử dụng các thuật toán máy học

Phân lớp văn bản được các nhà nghiên cứu định nghĩa thống nhất như là việc gán tên các chủ đề (tên lớp / nhãn lớp) đã được xác định cho trước vào các văn bản text dựa trên nội dung của nó Để phân loại văn bản, người ta sử dụng phương pháp học máy có giám sát Tập dữ liệu được chia ra làm hai tập là tập huấn luyện và tập kiểm tra, trước hết phải xây dựng mô hình thông qua các mẫu học bằng các tập huấn luyện, sau đó kiểm tra

sự chính xác bằng tập dữ liệu kiểm tra

Đầu vào của quá trình huấn luyện là các dữ liệu văn bản và các nhãn tương ứng với chủ đề cần phân loại Quá trình này gồm 3 bước: tiền xử lý văn bản, trích xuất đặc trưng và huấn luyện sử dụng các thuật toán học máy

Đầu ra của quá trình huấn luyện là mô hình được xây dựng và các tham số tối ưu tương ứng cho mô hình

1.3 Các bước thực hiện

Bài toán phân loại văn bản là một bài toán học giám sát (supervised learning) trong học máy (machine learning), bởi vì nội dung của văn bản đã được gán nhãn, và được sử dụng để thực hiện phân loại Để giải quyết một bài toán phân loại văn bản, ta thực hiện 4 bước:

• Chuẩn bị dữ liệu (Dataset Preparation)

• Xử lý thuộc tính của dữ liệu (Feature Engineering)

• Xây dựng mô hình (Build Model)

• Tinh chỉnh mô hình và cải thiện hiệu năng (Improve Performance)

Trang 4

1.4 Tiền xử lý văn bản

Bước đầu tiên và không thể thiếu trong việc xử lý ngôn ngữ tự nhiên là tiền xử lý

Vì văn bản vốn dĩ được liệt kê mà không có cấu trúc, để nguyên vậy để xử lý là rất khó khăn Đặc biệt là loại văn bản trên web có lẫn các HTML tag, code JS, đó chính là noise

Vì vậy, ta phải biến đổi các tài liệu sang một khuôn dạng phù hợp với các giải thuật phân loại Phép xử ý như vậy được gọi là tiền xử lý văn bản (text preprocessing)

Bước tiền xử lý văn bản gồm 4 công đoạn:

1 Thực hiện làm sạch dữ liệu để loại bỏ tạp nhiễu nhằm có kết quả xử lý dữ liệu tốt Đa phần tạp nhiễu là các thẻ HTML, JavaScript

2 Thực hiện tách từ - một công đoạn quan trọng bậc nhất trong xử lý ngôn ngữ tự nhiên, do Tiếng Việt có độ phức tạp hơn ngôn ngữ khác (bởi có các từ ghép) Việc tách từ theo nhiều cách khác nhau có thể gây ra sự hiểu nhầm về mặt ngữ nghĩa Tuy nhiên, có một số công cụ hỗ trợ thực hiện việc này, phổ biến nhất là VnTokenizer

3 Chuẩn hóa từ để đưa văn bản từ các dạng không đồng nhất về cùng một dạng (ví dụ tất cả đều chuẩn về chữ thường) Việc tối ưu bộ nhớ lưu trữ và tính chính xác cũng rất quan trọng Có nhiều cách viết, mỗi cách viết khi lưu trữ sẽ tốn dung lượng bộ nhớ khác nhau (như half size chỉ tốn 1/2 dung lượng so với full size) Do đó, tuỳ theo nhu cầu, tình hình thực tế để đưa văn bản về một dạng đồng nhất

4 Loại bỏ những từ không có ý nghĩa (stop words) mà xuất hiện nhiều trong ngôn ngữ tự nhiên Có 2 cách chính để loại bỏ stop words, đó là dùng từ điển hoặc dựa theo tần suất xuất hiện Bài báo này sử dụng phương pháp từ điển là phương pháp đơn giản nhất tạo một từ điển gồm những từ không có ý nghĩa và tiến hành lọc các tệp tin văn bản để loại bỏ những từ xuất hiện trong từ điển stop words

1.5 Thuận toán phân loại văn bản

Dưới đây là một số thuật toán phổ biến được dùng trong khai phá dữ liệu:

• Naive Bayes

• Cây quyết định: Decision tree

• Láng giềng gần nhất: Nearest Neighbor

• Mạng Neural: Neural Network

• Luật quy nạp: Rule Induction

• Thuật toán K-Means: K-Means

CHƯƠNG 2: THUẬT TOÁN K-NEAREST NEIGHBORS

2.1 Giới thiệu chung

KNN là một trong những thuật toán học có giám sát đơn giản nhất mà hiệu quả trong một vài trường hợp trong học máy Khi huấn luyện, thuật toán này không học một điều gì từ dữ liệu huấn luyện (đây cũng là lý do thuật toán này được xếp vào loại lazy

Trang 5

learning), mọi tính toán được thực hiện khi nó cần dự đoán kết quả của dữ liệu mới KNN

có thể áp dụng được vào cả hai loại của bài toán học có giám sát là phân lớp và hồi quy KNN còn được gọi là một thuật toán instance-based hay memory-based learning

Một cách ngắn gọn, KNN là thuật toán đi tìm đầu ra của một điểm dữ liệu mới bằng cách chỉ dựa trên thông tin của K điểm dữ liệu gần nhất trong tập huấn luyện

2.2 Nội dung thuật toán

Mô tả thuật toán:

• Xác định giá trị tham số K (số láng giềng gần nhất)

• Tính khoảng cách giữa điểm truy vấn phân lớp với tất cả các đối tượng trong tập

dữ liệu huấn luyện

• Sắp xếp khoảng cách theo thứ tự tăng dần và xác định K-nearest neighbors với điểm truy vấn phân lớp

• Lấy tất cả các lớp của K-nearest neighbors đã xác định

• Dựa vào phần lớn lớp của láng giềng gần nhất để xác định lớp cho điểm truy vấn phân lớp, lớp của điểm truy vấn phân lớp được định nghĩa là lớp chiếm đa số trong K-nearest neighbors

2.3 Ý tưởng của thuật toán KNN

Thuật toán KNN cho rằng những dữ liệu tương tự nhau sẽ tồn tại gần nhau trong một không gian, từ đó công việc của chúng ta là sẽ tìm k điểm gần với dữ liệu cần kiểm tra nhất Việc tìm khoảng cách giữa 2 điểm củng có nhiều công thức có thể sử dụng, tùy trường hợp mà chúng ta lựa chọn cho phù hợp Đây là 3 cách cơ bản để tính khoảng cách

2 điểm dữ liệu x, y có k thuộc tính:

Trang 6

Việc tính khoảng cách giữa các đối tượng cần phân lớp với tất cả các đối tượng trong tập

dữ liệu huấn luyện được thường được sử dụng với công thức tính khoảng cách Euclidean Cho 2 điểm P1(x1, y1) và P2(x2, y2) thì khoảng cách Euclidean distance sẽ được tính theo công thức:

2.4 Ví dụ

Ví dụ đơn giản nhất

Bài toán đặt ra: Bạn có điểm của một môn học nhưng bạn không biết thuộc loại nào (Giỏi, khá, trung bình, yếu) Giả sử bạn không biết bất kì quy tắc nào để phân loại cả

Có một cách giải quyết là bạn phải đi khảo sát những người xung quanh Để biết điểm của mình thuộc loại nào thì bạn phải đi hỏi những đứa có điểm gần số điểm mình nhất Giả sử trong lớp 50 đứa, mình khảo sát 5 đứa gần điểm mình nhất và được dữ liệu như sau:

Điểm của tôi: 7

Điểm của bạn tôi:

7.1 => Khá 7.2 => Khá 6.7 => Khá

6.6 => Khá 6.4 => Trung bình

Qua kết quả trên thì ta sẽ dễ đoán được điểm của tôi là loại Khá? Với cách này chúng ta

có thể phân loại dữ liệu 1 chiều (1 feature) bằng cách làm khá đơn giản Và nhận thấy rằng dữ liệu mình khảo sát càng nhiều, càng rộng thì dự đoán đưa ra càng chính xác (Giả

sử lớp bạn không có ai loại khá ngoài bạn thì cho dù bạn lấy bao nhiêu người gần điểm bạn nhất củng sẽ ra kết quả sai)

Với KNN, trong bài toán Classification, label của một điểm dữ liệu mới (hay kết quả của câu hỏi trong bài thi) được suy ra trực tiếp từ K điểm dữ liệu gần nhất trong training set Label của một test data có thể được quyết định bằng major voting (bầu chọn theo số phiếu) giữa các điểm gần nhất, hoặc nó có thể được suy ra bằng cách đánh trọng

số khác nhau cho mỗi trong các điểm gần nhất đó rồi suy ra label

Trong bài toán Regresssion, đầu ra của một điểm dữ liệu sẽ bằng chính đầu ra của điểm

dữ liệu đã biết gần nhất (trong trường hợp K=1), hoặc là trung bình có trọng số của đầu ra của những điểm gần nhất, hoặc bằng một mối quan hệ dựa trên khoảng cách tới các điểm gần nhất đó

Một cách ngắn gọn, KNN là thuật toán đi tìm đầu ra của một điểm dữ liệu mới bằng cách chỉ dựa trên thông tin của K điểm dữ liệu trong training set gần nó nhất (K-lân

Trang 7

cận), không quan tâm đến việc có một vài điểm dữ liệu trong những điểm gần nhất này là nhiễu

Ví dụ trên đây là bài toán Classification với 3 classes: Đỏ, Lam, Lục Mỗi điểm dữ liệu mới (test data point) sẽ được gán label theo màu của điểm mà nó thuộc về Trong hình này, có một vài vùng nhỏ xem lẫn vào các vùng lớn hơn khác màu Ví dụ có một điểm màu Lục ở gần góc 11 giờ nằm giữa hai vùng lớn với nhiều dữ liệu màu Đỏ và Lam Điểm này rất có thể là nhiễu Dẫn đến nếu dữ liệu test rơi vào vùng này sẽ có nhiều khả năng cho kết quả không chính xác

Hình dưới đây là một ví dụ về KNN trong classification với K = 1.

2.5 Ưu điểm và nhược điểm của KNN

- Ưu điểm

• Độ phức tạp tính toán của quá trình huấn luyện là bằng 0

• Việc dự đoán kết quả của dữ liệu mới rất đơn giản (sau khi đã xác định được các điểm lân cận)

• Không cần giả sử về phân phối của các lớp

- Nhược điểm

• KNN rất nhạy cảm với nhiễu khi K nhỏ

Trang 8

• Như đã nói, KNN là một thuật toán mà mọi tính toán đều nằm ở khâu kiểm thử, trong

đó việc tính khoảng cách tới từng điểm dữ liệu trong tập huấn luyện tốn rất nhiều thời gian, đặc biệt là với các cơ sở dữ liệu có số chiều lớn và có nhiều điểm dữ liệu Với K càng lớn thì độ phức tạp cũng sẽ tăng lên Ngoài ra, việc lưu toàn bộ dữ liệu trong bộ nhớ cũng ảnh hưởng tới hiệu năng của KNN

2.6 Các tham số quan trọng của thuật toán KNN

Các tham số quan trọng đối với thuật toán KNN:

- Giá trị K: K càng lớn thì thuật toán càng ít nhạy cảm với nhiễu, nhưng nếu K lớn quá một ngưỡng nào đó thì độ chính xác của thuật toán có thể giảm vì K-nearest neighbors này có thể thuộc về nhiều lớp khác nhau, dẫn đến độ tin cậy của việc phân lớp giảm

- Hàm khoảng cách: để tính khoảng cách giữa điểm cần phân loại và điểm trong tập dữ liệu huấn luyện Có nhiều hàm khoảng cách và em chọn hàm khoảng cách Euclidean vì

sự đơn giản và phổ biến của nó

- Cách đánh trọng số các điểm lân cận: có nhiều cách đánh trọng số cho các điểm lân cận nhưng em chọn phương pháp đồng nhất (uniform) vì tính đơn giản

Ngoài các tham số trên của thuật toán KNN thì độ chính xác của thuật toán còn phụ thuộc vào số chiều của vectơ đặc trưng biểu diễn mỗi điểm dữ liệu (trong trường hợp này là một văn bản)

2.7 Làm thế nào để chọn một giá trị K

Giá trị K cho biết số lượng các hàng xóm gần nhất Ta phải tính toán khoảng cách giữa các điểm kiểm tra và các điểm nhãn được đào tạo Việc cập nhật số liệu khoảng cách với mỗi lần lặp lại rất tốn kém về mặt tính toán và đó là lý do tại sao KNN là một thuật toán lười học

Trang 9

Ta có thể xác minh từ hình trên, nếu chúng ta tiếp tục với K = 3, thì chúng ta dự đoán đầu vào bài kiểm tra thuộc Class B và nếu chúng ta tiếp tục với K = 7, thì chúng ta dự đoán đầu vào bài kiểm tra thuộc Class A

Cho nên giá trị K có ảnh hưởng mạnh mẽ đến hiệu suất KNN

Khi đó làm thế nào để chọn giá trị K tối ưu?

• Không có phương pháp thống kê nào được xác định trước để tìm giá trị thuận lợi nhất của K

• Khởi tạo một giá trị K ngẫu nhiên và bắt đầu tính toán

• Việc chọn một giá trị nhỏ của K dẫn đến ranh giới quyết định không ổn định

• Giá trị K đáng kể sẽ tốt hơn cho việc phân loại vì nó dẫn đến việc làm dịu các ranh giới quyết định

Bài học rút ra là:

• Các giá trị K nhỏ không phù hợp để phân loại

• Giá trị K tối ưu thường được tìm thấy là căn bậc hai của N, trong đó N là tổng số mẫu

• Sử dụng biểu đồ sai số hoặc biểu đồ độ chính xác để tìm giá trị K có lợi nhất

• KNN hoạt động tốt với các lớp đa nhãn, nhưng ta phải lưu ý những điểm khác biệt

• KNN được sử dụng rộng rãi trong lĩnh vực nhận dạng mẫu và đánh giá phân tích CHƯƠNG 3: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH PYTHON

3.1 Python

Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991 Python được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình và là ngôn ngữ lập trình dễ học được dùng rộng rãi trong phát triển trí tuệ nhân tạo hoặc AI

3.2 Cài đặt Python

Tải python tại đây: https://www.python.org/downloads/

Khi đã cài xong, mở IDLE và chạy thử

Trang 10

Như vậy đã hoàn thành xong việc cài đặt Python, việc còn lại là cài đặt những thư viện cần thiết để hỗ trợ bài toán

Việc hỗ trợ xử lý văn bản của Python rất mạnh, nhiều thư viện và thuật toán cho phân loại văn bản, Machine learning Ở đây, bài toàn cần các thư viện sau: numpy, sklearn, nltk, …

Sử dụng cmd để cài đặt:

- Nếu pip chưa có sẵn gói thì ta phải cài đặt cho nó, ta thực hiện như sau:

- Sau khi cài đặt thành công gói pip ta sẽ tiếp tục cài đặt thư viện numpy:

- Tương tự ta cài đặt thư viện sklearn và các thư viện cần thiết:

Như vậy là đã hoàn thành việc cài đặt các thư viện hỗ trợ cho python cũng như bài toán Tìm hiểu một chút về thư viện Sklearn:

Trang 11

Sklearn là thư viện phổ biến nhất của python Nó viết sẵn các thuật toán phức tạp, ta chỉ cần nhét dữ liệu vào rồi chờ nó tính toán rồi lấy kết quả

CHƯƠNG 3: TRIỂN KHAI THUẬT TOÁN K-NEAREST NEIGHBOR TRÊN NGÔN NGỮ PYTHON

3.1 Chuẩn bị dữ liệu

Dưới đây là các file văn bản theo 05 chủ đề được dùng trong thực nghiệm:

3.2 Triển khai thử nghiệm

Một quy trình từng bước rất đơn giản để xây dựng đường ống để đào tạo mô hình học máy cho các ứng dụng phân tích văn bản có thể được tuân theo như thế này:

Texts ==> Stop words removal ==> Punctuation free ==> Word Lemmatization ==> Digit removal ==> Feature Extraction (Tf-Idf) ==> Model training

Em sẽ sử dụng kỹ thuật TF-IDF để biến văn bản thành một vector và sử dụng thuật toán KNN trong thư viện sklearn để tiến hành phân lớp

3.2.1 Khai báo các thư viện cần thiết

Ngày đăng: 16/10/2021, 16:54

TỪ KHÓA LIÊN QUAN

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

w