Tải bản đầy đủ (.pdf) (30 trang)

Báo Cáo Đề Tài Phân Loại Văn Bản Tiếng Việt Bằng Machine Learning.pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (8.53 MB, 30 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>Đ¾I HàC BÁCH KHOA HÀ NỘI </b>

TR¯àNG CÔNG NGHà THÔNG TIN VÀ TRUYÀN THÔNG

BÁO CÁO MÔN HàC

NHÀP MÔN HàC MÁY VÀ KHAI PHÁ DĀ LIàU Đề tài: Phân loại văn bản Tiếng Việt bằng Machine Learning

<b>Giảng viên h°ßng d¿n: PGS.TS.Nguyßn Thß Kim Anh Mã lßp hác: 132647 </b>

<b>Danh sách sinh viên thực hián: </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

Mục l c ụ

<b><small>I.Gißi thiáu và mơ tả bài tốn ... 3 </small></b>

<small>1.1 Gißi thiáu bài tốn ... 3 </small>

<small>1.2 Mơ tả bài tốn ... 3 </small>

<small>II. Lấy và xÿ lý dā liáu ... 3 </small>

<small>2.1 Lấy dā liáu ... 3 </small>

<small>2.2 Xÿ lý dā liáu ... 4 </small>

<small>III. Các mơ hình phân lo¿i ... 7 </small>

<b><small>3.1 Mơ hình phân lßp Naive Bayes... 7 </small></b>

<small>3.2 Mơ hình tuy¿n tính Logistic Regression... 8 </small>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>I. Gißi thiáu và mơ tả bài tốn</b>

<b>1.1 Gißi thiáu bài toán </b>

Phân loại văn bản (Text Classification) là bài toán thuộc nhóm hác có giám sát (Supervised learning) trong hác máy. Bài tốn này u cầu dữ liệu cần có nhãn (label). Mơ hình sẽ hác từ dữ liệu có nhãn đó, sau đó được dùng để dự đốn nhãn cho các dữ liệu mới mà mơ hình chưa gặp. Phân loại văn bản Tiếng Việt là bài toán cổ điển và đã có nhiều ngưßi giải quyết, và ta có thể hác hỏi rất nhiều từ những ngưßi đi trước. Do đó nhóm đã quyết đßnh chán đề tài này.

<b>1.2 Mơ tả bài tốn </b>

- Đầu vào phần text gồm: Đề mục và phần tóm tắt (title and abstract) - Đầu ra: Thể loại của bài báo.

<b>II. Lấy và xÿ lý dā liáu </b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>2.2 Xÿ lý dā liáu </b>

- Bước tiền xử lý dữ liệu là bước đầu tiên cần làm. Việc tiền sử lý dữ liệu là quá trình chuẩn hóa dữ liệu và loại bỏ các thành phần khơng có ý nghĩa cho việc phân loại văn bản.

- Tiền xử lý dữ liệu tiếng Việt cho bài tốn phân loại văn bản thưßng gồm các việc sau:

• Chuẩn hóa bảng mã Unicode (đưa về Unicode tổ hợp dựng sẵn) • Thực hiện tách từ tiếng Việt (sử dụng thư viện tách từ như pyvi, undertheresa, vncorenlp,…)

• Đưa về văn bản lower (vit thòng)

ã Xúa cỏc ký t c bit: <.=, <,=, <;=, <)=, … • Xóa các khoảng trắng thừa

<b>2.2.1. Chuẩn hóa bảng mã Unicode </b>

Hiện nay, có 2 loại bảng mã Unicode dùng cho văn bản tiếng Việt, đó là Unicode tổ hợp và Unicode dựng sẵn. Hướng xử lý á đây nhóm chúng em sẽ đưa tất cả về chuẩn Unicode dựng sẵn.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Đầu tiên import thư viện <regex import regex as re

<b>2.2.2 Thực hián tách từ ti¿ng Viát </b>

Để cho mơ hình hác máy khơng bß nhầm lẫn giữa từ đơn và từ ghép (ví dụ từ <Ngủ= là từ đơn, <Hác sinh= là từ ghép). Chúng em sẽ ghép từ ghép lại bằng dấu <_= để cho dễ phân biệt (ví dụ <Hác sinh= => <Hác_sinh=) bằng cách sử dụng thư viện undertheresa để xử lý.

from undertheresa import word_tokenize

<b>2.2.3 Đ°a văn bản vÁ lowercase </b>

Việc đưa dữ liệu về chữ viết thưßng là rất cần thiết. Bái vì đặc trưng này khơng có tác dụng á bài toán phân loại văn bản. Đưa về chữ viết thưßng giúp giảm số lượng đặc trưng (vì máy tính hiểu hoa thưßng là 2 từ khác nhau) và tăng độ chính xác hơn cho mơ hình.

<b>2.2.4. Xóa các ký tự đặc biát </b>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Tiền xử lý bao gồm việc loại bỏ các dữ liệu không có tác dụng cho việc phân loại văn bản. Các dấu ngắt câu, số đếm và các ký tự đặc biệt khác không giúp ta phân loại một văn bản thuộc chuyên mục nào.

<b>2.2.5. Xóa các khoảng trắng thừa </b>

Việc có các khoảng trắng thừa như lùi dịng, xuống dịng khơng có ý nghĩa trong việc phân loại văn bản. Do vậy cần loại bỏ để giảm độ phức tạp cho máy hác.

<b>2.2.6. Tổng hợp quá trình tiÁn xÿ lý dā liáu </b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>III. Các mơ hình phân lo¿i </b>

<b>3.1 Mơ hình phân lßp Naive Bayes </b>

<b>3.1.1 C¡ sở lý thuy¿t </b>

- Cơng th c tính xác suứ ất cĩ điều kiện: Xác suất điều kiện của bi n c ế ố ý v i ớđiều kiện biến cố þ đã xảy ra là một số khơng âm, ký hi u l (ý|ỵ) n biu th kh ß ả năng xảy ra biến cố trong tình hu ng bi n cý ố ế ố þ đã xảy ra.

Suy ra :

- Cơng thức xác suất đầy đủ:

Giả s ỵ<small>1</small>, , ... , ỵ<small>2</small> ỵ<small></small> l 1 nhĩm đầy đủ. Xét biến cố ý, sao cho chý ỉ xảy ra khi m t trong các bi n c ỵ<small>1</small>, , ... , ỵ<small>2</small> ỵ<small></small> xy ra. Khi :

- Cơng thức xác suất Bayes:

- Phương pháp phân loại văn bản bằng Bayes:

Phân loại Bayes là phương pháp phân loại sử dụng tri thức các xác suất đã qua huấn luyện. Phương pháp này thích hợp với những lớp bài tốn địi hỏi phải dự đốn chính xác lớp của mẫu cần kiểm tra dựa trên những thơng tin từ tập huấn luyện ban đầu.

<b>3.1.2 Huấn luyán mơ hình Nạve Bayes </b>

Dữ liệu được tiền xử lí sau đĩ được vector hĩa và sử dụng TF – IDF để xử lí số liệu . Sau đĩ đưa vào model để train.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

Sau đó chúng ta sẽ có code để check accuracy của thuật toán. Phần này sẽ được thể hiện á phần so sánh giữa các thuật toán.

3.2 Mơ hình tuy¿n tính Logistic Regression.

3.2.1 Gißi thiáu c¡ bản vÁ hồi quy logistic và hàm logistic

Hồi quy logistic là một kỹ thuật được hác máy mượn từ lĩnh vực thống kê. Đây là phương pháp đi đầu cho các bài tốn phân loại nhß phân (các bài tốn có hai giá trß lớp).

Hồi quy logistic được đặt tên theo hàm được sử dụng á cốt lõi của phương pháp , hàm logistic . Hàm logistic, còn được gái là hàm sigmoid được phát triển bái các nhà thống kê để mô tả các đặc tính của sự gia tăng dân số trong sinh thái, tăng nhanh và đạt cực đại theo khả năng của mơi trưßng. Đó là một đưßng cong hình chữ S có thể lấy bất kỳ số nào có giá trß thực và ánh xạ nó thành một giá trß từ 0 đến 1, nhưng khơng bao giß chính xác á các giới hạn đó.

<b>1 / ( 1 + e^-value) </b>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Trong đó e là cơ sá của logarit tự nhiên (số Euler hoặc hàm EXP () trong bảng tính của bạn) và giá trß là giá trß số thực mà bạn muốn chuyển đổi. Dưới đây là biểu đồ của các số từ 5 đến 5 được chuyển thành phạm vi 0 và 1 bằng cách sử -dụng hàm logistic.

Bây giß chúng ta đã biết hàm logistic là gì, hãy xem nó được sử dụng như thế nào trong hồi quy logistic.

3.2.2 Áp dụng hàm logistic cho hồi quy logistic

Hồi quy logistic sử dụng một phương trình làm đại diện, rất giống với hồi quy tuyến tính.

Giá trß đầu vào (x) được kết hợp tuyến tính bằng cách sử dụng tráng số hoặc giá trß hệ số (được gái là chữ viết hoa tiếng Hy Lạp Beta) để dự đốn giá trß đầu ra (y). Một điểm khác biệt chính so với hồi quy tuyến tính là giá trß đầu ra đang được mơ hình hóa là các giá trß nhß phân (0 hoặc 1) chứ khơng phải là giá trß số.

Dưới đây là một phương trình hồi quy logistic ví dụ :

<b>y = e^(b0 + b1*x) / (1+ e^(b0 + b1*x)) </b>

Trong đó y là đầu ra dự đốn, b0 là giới hạn thiên vß hoặc giới hạn chặn và b1 là hệ số cho giá trß đầu vào duy nhất (x). Mỗi cột trong dữ liệu đầu vào của

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

bạn có một hệ số b liên quan (một giá trß thực khơng đổi) phải được hác từ dữ liệu đào tạo của bạn.

Biểu diễn thực tế của mơ hình mà bạn sẽ lưu trữ trong bộ nhớ hoặc trong tệp là các hệ số trong phương trình (giá trß beta hoặc b’s )

3.2.3 Dự đoán hồi quy logistic xác suất (phần kỹ thuÁt)

Hồi quy logistic mơ hình hóa xác suất của lớp mặc đßnh (ví dụ: lớp đầu tiên). Ví dụ: nếu chúng tơi đang lập mơ hình giới tính của mái ngưßi là nam hoặc nữ từ chiều cao của há, thì lớp đầu tiên có thể là nam và mơ hình hồi quy logistic có thể được viết dưới dạng xác suất của nam so với chiều cao của một ngưßi :

<small>● </small> <b>P(sex = male | height) </b>

Mặt khác, chúng tơi đang mơ hình hóa xác suất đầu vào (X) thuộc về lớp mặc đßnh (Y = 1), chúng tơi có thể viết điều này một cách formally hơn :

<small>● </small> <b>P(X) = P(Y=1|X) </b>

Hồi quy logistic là một phương pháp tuyến tính, nhưng các dự đoán được biến đổi bằng cách sử dụng hàm logistic. Tác động của điều này khiến chúng ta khơng cịn có thể hiểu các dự đốn là sự kết hợp tuyến tính của các yếu tố đầu vào như chúng ta có thể làm với hồi quy tuyến tính, ví dụ, tiếp tục từ trên xuống, mơ hình có thể được phát biểu là :

3.2.4 Hác mơ hình hồi quy logistic

Các hệ số (giá trß Beta b) của thuật tốn hồi quy logistic phải được ước tính từ dữ liệu training. Điều này được thực hiện bằng cách sử dụng Maximum – Likelihood.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Đây là một thuật toán phổ biến được sử dụng bái nhiều thuật toán hác máy, mặc dù nó đưa ra giả đßnh về việc phân phối dữ liệu.

Các hệ số tốt nhất sẽ dẫn đến một mơ hình dự đốn giá trß rất gần với 1 (ví dụ: nam) cho lớp mặc đßnh và giá trß rất gần 0 (ví dụ: nữ) cho lớp kia. Trực giác về khả năng tối đa cho hồi quy logistic là quy trình tìm kiếm tìm kiếm các giá trß cho các hệ số (giá trß Beta) để giảm thiểu lỗi trong các xác suất được dự đốn bái mơ hình đối với các xác suất trong dữ liệu (ví dụ: xác suất bằng 1 nếu dữ liệu là dữ liệu primary. )

3.2.5 Đ°a ra dự đốn vßi hồi quy logistic

Đưa ra dự đốn với mơ hình hồi quy logistic đơn giản như cắm các con số vào phương trình hồi quy logistic và tính tốn kết quả.

Với bài toán phân loại văn bản , dữ liệu được tiền xử lí sau đó được vector hóa và sử dụng TF – IDF để xử lí số liệu . Sau đó đưa vào model để train

Sau đó chúng ta sẽ có code để check accuracy của thuật toán. Phần này sẽ được thể hiện á phần so sánh giữa các thuật tốn.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

3.3 Mơ hình phân lßp SVM.

<b>3.3.1 SVM là gì ? </b>

<b>SVM là một thuật tốn giám sát, nó có thể sử dụng cho cả việc phân loại </b>

hoặc đệ quy. Tuy nhiên nó được sử dụng chủ yếu cho việc phân loại. Trong thuật toán này, chúng ta vẽ đồi thß dữ liệu là các điểm trong n chiều ( á đây n là số lượng các tính năng bạn có) với giá trß của mỗi tính năng sẽ là một phần liên kết. Sau đó chúng ta thực hiện tìm "đưßng bay" (hyper-plane) phân chia các lớp. Hyper-plane nó chỉ hiểu đơn giản là 1 đưßng thẳng có thể phân chia các lớp ra thành hai phần riêng biệt.

<small>-● </small> <b>Identify the right hyper-plane (Scenario-1): </b>

à đây, có 3 đưßng hyper lane (A,B and C). Bây giß đưßng nào là hyper- lane đúng cho nhóm ngơi sao và hình trịn.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

-Quy tắc số một để chán 1 hyper lane, chán một hyper plane để phân chia - hai lớp tốt nhất. Trong ví dụ này chính là đưßng B.

<small>-● </small> <b>Identify the right hyper-plane (Scenario-2): </b>

à đây chúng ta cũng có 3 đưßng hyper plane (A,B và C), theo quy tắc số 1, chúng đều thỏa mãn.

Quy tắc thứ hai chính là xác đßnh khoảng cách lớn nhất từ điểu gần nhất của một lớp nào đó đến đưßng hyper plane. Khoảng cách này được gái là -

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

"Margin", Hãy nhìn hình bên dưới, trong đấy có thể nhìn thấy khoảng cách margin lớn nhất đấy là đưßng C. Cần nhớ nếu chán lầm hyper lane có margin thấp hơn -thì sau này khi dữ liệu tăng lên thì sẽ sinh ra nguy cơ cao về việc xác đßnh nhầm lớp cho dữ liệu.

<small>● </small> <b>Identify the right hyper-plane (Scenario-3): </b>

Sử dụng các nguyên tắc đã nêu trên để chán ra hyper plane cho trưßng hợp sau:

Có thể có một vài ngưßi sẽ chán đưßng B bái vì nó có margin cao hơn đưßng A, nhưng đấy sẽ khơng đúng bái vì nguyên tắc đầu tiên sẽ là nguyên tắc số 1, chúng ta cần chán hyper plane để phân chia các lớp thành riêng biệt. Vì vậy -đưßng A mới là lựa chán chính xác.

<small>● </small> <b>Can we classify two classes (Scenario-4)? </b>

Tiếp theo hãy xem hình bên dưới, không thể chia thành hai lớp riêng biệt với 1 đưßng thẳng, để tạo 1 phần chỉ có các ngôi sao và một vùng chỉ chứa các điểm tròn.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

à đây sẽ chấp nhận, một ngơi sao á bên ngồi cuối được xem như một ngơi sao phía ngồi hơn, SVM có tính năng cho phép bỏ qua các ngoại lệ và tìm ra hyper-plane có biên giới tối đa . Do đó có thể nói, SVM có khả năng mạnh trong việc chấp nhận ngoại lệ.

<small>● </small> <b>Find the hyper-plane to segregate to classes (Scenario-5) </b>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Trong trưßng hợp dưới đây, khơng thể tìm ra 1 đưßng hyper plane tương đối để chia các lớp, vậy làm thế nào để SVM phân tách dữ liệu thành hai lớp riêng biệt? Cho đến bây giß chúng ta chỉ nhìn vào các đưßng tuyến tính hyper-plane.

SVM có thể giải quyết vấn đề này, Khá đơn giản, nó sẽ được giải quyết bằng việc thêm một tính năng, à đây chúng ta sẽ thêm tính năng z = x^2+ y^2. Bây giß dữ liệu sẽ được biến đổi theo trục x và z như sau:

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Trong sơ đồ trên, các điểm cần xem xét là: • Tất cả dữ liệu trên trục z sẽ là số dương vì nó là tổng bình phương x và y • Trên biểu đồ các điểm tròn đỏ xuất hiện gần trục x và y hơn vì thế z sẽ nhỏ hơn => nằm gần trục x hơn trong đồ thß (z,x) Trong SVM, rất dễ dàng để có một siêu phẳng tuyến tính (linear hyper-plane) để chia thành hai lớp, Nhưng một câu hỏi sẽ nảy sinh đấy là, chúng ta có cần phải thêm một tính năng phân chia này bằng tay hay khơng. Khơng, bái vì SVM có một kỹ thuật được gái là kernel trick ( kỹ thuật hạt nhân), đây là tính năng có khơng gian đầu vào có chiều sâu thấm và biến đổi nó thành khơng gian có chiều cao hơn, tức là nó khơng phân chia các vấn đề thành các vấn đề riêng biệt, các tính năng này được gái là kernel. Nói một cách đơn giản nó thực hiện một số biết đổi dữ liệu phức tạp, sau đó tìm ra q trình tách dữ liệu dựa trên các nhãn hoặc đầu ra mà chúng ra đã xác đßnh trước.

<b>3.3.3 Margin trong SVM </b>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Margin là khoảng cách giữa siêu phẳng đến 2 điểm dữ liệu gần nhất tương ứng với các phân lớp. Trong ví dụ quả táo quả lê đặt trên mặt bán, margin chính là khoảng cách giữa cây que và hai quả táo và lê gần nó nhất. Điều quan tráng á đây đó là phương pháp SVM ln cố gắng cực đại hóa margin này, từ đó thu được một siêu phẳng tạo khoảng cách xa nhất so với 2 quả táo và lê. Nhß vậy, SVM có thể giảm thiểu việc phân lớp sai (misclassification) đối với điểm dữ liệu mới đưa vào.

3.3.4 Huấn lun mơ hình vßi SVM.

Dữ liệu được tiền xử lý sau đó được vector hóa và sử dụng TF – IDF để xử lí số liệu . Sau đó đưa vào model để train. 

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>3.4.1.2 Các hàm kích ho¿t: </b>

Các hàm kích hoạt quyết đßnh một nơ ron có được kích hoạt hay khơng bằng cách tính tổng có tráng số và cộng thêm hệ số điều chỉnh vào nó. Chúng là các tốn tử khả vi và hầu hết đều biến đổi các tín hiệu đầu vào thành các tín hiệu đầu ra theo một cách phi tuyến tính

- Xác suất sẽ ln nằm trong khoảng (0:1]. - Tổng tất cả các xác suất bằng 1.

<b>3.4.1.3 Hàm loss: Categorical crossentropy </b>

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<lớp Dropout nhằm giảm Overfitting>

<b>3.4.1.5 Optimization algorithm: Adam 3.4.2 PhoBERT </b>

- Là một công cụ pre-train cho Tiếng Việt

- Tác giả : Dat Quoc Nguyen and Anh Tuan Nguyen Link:

PhoBERT Giúp vector hóa 1 đoạn văn bản thành 1 vector 1x768

<b>3.4.3 Quá trình thực hián: </b>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<b>3.4.3.1 Pre-train: Cài đặt PhoBERT, pre-train dataset và xuất ra d¿ng dataframe </b>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<b>Trainning Model: </b>

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

Kết quả của mơ hình perceptron đa tầng

Như đã thấy thì mơ hình SVM có tỷ lệ Accuracy là cao nhất là 0.83, tuy nhiên so với các lßi giải bài tốn phân loại văn bản tiếng Việt đã có thì tỷ lệ này cịn khá là thấp. Do những nguyên nhân sau:

- Tập dữ liệu chỉ có đề mục và tóm tắt nên chắc chắn không thể mô tả đầy đủ thuộc tính để mà ta có thể dự đốn được

- Sử dụng mơ hình cịn đơn giản

- Rõ ràng là mỗi bài báo nó có thể có nhiều nhãn khác nhau chứ khơng thể chỉ có 1 nhãn:

VD: <Ronando chính thức rßi khỏi MU vào tháng 7 này làm cổ phiếu hãng dầu gội Clear giảm 10%= Thì tin này vừa là thể thao nhưng mà lại có thể là kinh tế.

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>V. Khó khăn và cách khắc phục </b>

<b>1.Khó khăn </b>

- Trong việc thu thập dữ liệu : Chúng em đã cố gắng thu thập 1 lượng lớn dữ liệu tuy nhiên lại gặp phải khó khăn trong q trình tiền xử lí . Do đó lượng dữ liệu được sử dụng cịn hạn chế dẫn tới các model khơng có kết quả test quá rõ ràng.

- Quá trình làm việc nhóm ban đầu cịn gặp nhiều khó khăn do các thành viên chưa có nhiều kinh nghiệm trong việc phân loại văn bản dẫn tới chậm trễ trong 1 vài cơng đoạn.

<b>2.Cách khắc phục </b>

<b>- Nhß sự đồn kết của các thành viên trong nhóm cũng như khả năng phân </b>

công chỉ đạo cũng như giúp đỡ của giáo viên hướng dẫn mà chúng em đã có thể lần lượt vượt qua các khó khăn và hồn thiện bản báo cáo này.

VI. Tài liáu tham khảo và công nghá sÿ

<b>dụng </b>

- Bài giảng Nhập mơn Machine Learning and Data Mining, cơ Nguyễn Thß Kim Anh

- Thư viện Keras: Thư viện sklearn: PhoBERT:

×