Bài to¡n ph¥n lo⁄i v«n b£n, hay cÆn đưæc bi‚t đ‚n phŒ bi‚n tr¶n th‚ giới với c¡i t¶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 to¡n này y¶u cƒu dœ li»u đƒu vào cƒn g¡n nh¢n (label) trước. Mô h…nh s‡ học tł dœ li»u có nh¢n đó, sau đó mô h…nh đưæc dùng đ” dự đo¡n nh¢n cho c¡c dœ li»u mới mà mô h…nh chưa gặp. Mục ti¶u cıa ph¥n lo⁄i v«n b£n là tự đºng hóa ph¥n lo⁄i v«n b£n vào mºt hoặc nhi•u danh mục (chuy¶n mục) đ¢ đưæc x¡c định trước đó.Vi»c tự đºng ph¥n lo⁄i v«n b£n vào mºt chı đ• nào đó giúp cho vi»c s›p x‚p, lưu trœ và truy v§n tài li»u d„ dàng hơn v• sau
Giới thiệu đề tài
Đặt vấn đề
Với lượng thông tin đồ sộ, một yêu cầu lớn đặt ra đối với chúng ta là làm sao tổ chức và tìm kiếm thông tin có hiệu quả nhất Phân loại thông tin là một trong những giải pháp hợp lý cho yêu cầu trên Nhưng một thực tế là khối lượng thông tin quá lớn, việc phân loại dữ liệu thủ công là điều tương đối khó khăn Hướng giải quyết là cần một chương trình có chức năng tự động phân loại các thông tin trên Bài toán phân loại văn bản sẽ giúp ta giải quyết vấn đề này Mục tiêu của phân loại văn bản là tự động hóa phân loại văn bản vào một hoặc nhiều danh mục (chuyên mục) đã được xác định trước đó Bài toán phân loại văn bản bao gồm nhiều bài toán nhỏ như:
• Phân loại cảm xúc của người viết bài (vui, buồn, tức giận ) từ mạng xã hội.
• Phân loại thư rác (spam hoặc non-spam)
• Tự động gán nhãn các truy vấn của khách hàng.
• Phân loại các bài báo thành các chủ đề đã được xác định trước.
• Ứng dụng chatbot trong đó bài toán phân loại văn bản được sử dụng để phát hiện mục đích của người dùng.
Phân loại văn bản là một lĩnh vực nghiên cứu rất tích cực cả trong học tập và trong các ngành công nghiệp Với mong muốn tìm hiểu về phân loại văn bản cũng như những thuật toán học sâu, tôi quyết định chọn đề tài phân loại văn bản hay cụ thể hơn là bài toán phân loại các bài báo vào chủ đề xác định trước.
Mục tiêu và phạm vi của đề tài
• Đầu vào: Cho một đoạn văn bản tiếng Việt và nhiệm vụ cần phải phân loại văn bản này vào một trong các chủ đề đã cho trước.
• Đầu ra của bài toàn có thể là một hoặc nhiều nhãn mà văn bản thuộc thể loại đó.
Hình 1.1: Bài toán phân loại văn bản
Ví dụ : Lãi suất liên ngân hàng kỳ hạn dài có xu hướng giảm Giá USD liên ngân hàng, tự do và USD của các NHTM tương đối ổn định Trong ngày 11/3, giá mua USD trên thị trường tự do giảm 5 đồng/1USD so với ngày 10/3, phổ biến ở mức 21.115 đồng/1USD, giá bán không thay đổi ở mức 21.130 đồng/1USD Chênh lệch mua-bán là 15 đồng/1USD Tỷ giá niêm yết tại hầu hết các ngân hàng thương mại hiện đang ổn định so với ngày đầu tuần Tỷ giá mua của Vietcombank tăng nhẹ 5 đồng/1USD so với ngày hôm qua, trong khi tỷ giá bán vẫn được giữ nguyên, ở mức 21.080-21.120 đồng/1USD; tỷ giá các ngân hàng thương mại khác như BIDV, Eximbank, Maritime đều giữ nguyên mức 21.080-21.120 đồng/1USD Giá niêm yết tại ACB và MBB cũng được giữ nguyên ở mức 21.075-21.115 đồng/1USD.
Thông tin thu được là: ngân hàng
• Trong phạm vi của bài toán, chỉ có thể phân loại văn bản tiếng Việt và đầu ra của bài toán có thể là một hoặc nhiều chủ đề cho trước ứng với văn bản đầu vào.
• Do việc sử dụng với những dữ liệu tự thu thập được trên những trang báo nên những chủ đề của văn bản chưa được đa dạng.
Hướng giải quyết
Trong đồ án này, tôi có cài đặt thử nghiệm các phương pháp sử dụng học sâu kết hợp với các mô hình học sẵn như: Word2Vec, PhoBert sử dụng trên tập dữ liệu tiếng Việt.
• Với phương pháp sử dụng mô hình học sẵn Word2Vec, tôi đã thử nghiệm với các mô hình học sâu: mô hình mạng nơ-ron tích chập (Convolutional Neural Networks), mô hình mạng trí nhớ ngắn hạng định hướng dài hạn (LSTM), mô hình LSTM hai chiều Tôi xây dựng một tập dữ liệu đã gán nhãn sẵn với các văn bản tiếng Việt, sau đó tôi sử dụng mô hình để học tham số và đánh giá độ chính xác dựa trên dữ liệu tôi thu thập được và so sánh khi học với bộ dữ liệu VNTC cho dữ liệu tin tức 1
• Với phương pháp sử dụng mô hình học sẵn PhoBert, tôi sử dụng lại mô hình này và tinh chỉnh cho phù hợp với bài toán phân loại văn bản sau đó đánh giá độ chính xác dựa trên dữ liệu tôi thu thập được và bộ dữ liệu VNTC cho dữ liệu tin tức.
• Sau khi có kết quả đánh giá 2 mô hình học sẵn trên tôi tiến hành đánh giá dựa trên 2 bộ dữ liệu và đưa ra những ưu nhược điểm của từng mô hình trong bài toán phân loại văn bản.
Chi tiết các phương pháp sẽ được trình bày ở các chương sau.
Bố cục đồ án
Đồ án được trình bày theo bố cục sau:
• Chương 1 - Mở đầu: giới thiệu đề tài, đặt vấn đề, mục tiêu phạm vi đề tài, định hướng giải pháp và bố bục đồ án
• Chương 2 - Dữ liệu văn bản Việt Nam: đặc điểm phân cấp hành chính, đặc điểm địa chỉ Việt Nam, các dữ liệu địa chỉ sử dụng trong đồ án.
• Chương 3 - Cơ sở lý thuyết: cơ sở lý thuyết về các phương pháp, công nghệ sử dụng trong đồ án.
• Chương 4 - Phương pháp giải quyết: trình bày về việc áp dụng các phương pháp với bài toán chuẩn hóa địa chỉ.
• Chương 5 - Đánh giá và cài đặt thử nghiệm: trình bày về dữ liệu thử nghiệm, các kịch bản thử nghiệm, đánh giá độ chính xác của các phương pháp theo các kịch bản này.
1 https://github.com/duyvuleo/VNTC
• Chương 6 - Kết luận và hướng phát triển: Nhận xét tổng quan về đề tài,những khó khăn, thiếu sót trong đề tài cũng như phương hướng phát triển trong tương lai.
Dữ liệu văn bản Tiếng Việt
Đặc trưng văn bản tiếng Việt
Tiếng Việt là một ngôn ngữ đơn lập, đặc điểm này bao quát toàn bộ đặc trưng tiếng Việt về mặt ngữ âm, ngữ nghĩa và ngữ pháp Do đó, chúng ta phải tiến hành nghiên cứu đặc điểm này của tiếng Việt để có thể có được hướng nghiên cứu phù hợp cho bài toán xử lý phân loại văn bản tiếng Việt
2.1.1 Các đơn vị của tiếng Việt
2.1.1.1 Tiếng và đặc điểm của tiếng
Trong tiếng Việt, cũng như trong các văn bản tiếng Việt, tiếng là một thành phần khá quan trọng Trong ký pháp, mỗi tiếng đứng độc lập, và có thể phát hiện được ngay các tiếng trong tiếng nói cũng như trong văn bản.
• Tiếng và giá trị ngữ âm: Ngữ âm chính là mặt âm của ngôn ngữ Trên thực tế, các ứng dụng liên quan đến tiếng Việt như dịch thuật, lưu trữ người ta vẫn ghi lại âm thành dạng văn bản, sau đó mới tiến hành các thao tác xử lý Mỗi tiếng chính là một âm tiết và được ghi lại thành một cụm trong văn bản
• Tiếng và giá trị ngữ pháp: Nếu xét về mặt ngữ nghĩa thì tiếng là đơn vị nhỏ nhất có thể có nghĩa Thực ra ta có thể thấy rằng đơn vị ngữ âm thấp nhất là âm vị thì hoàn toàn không có nghĩa (ví dụ như các chữ cái đứng riêng rẽ) Tuy nhiên cũng có những tiếng có nghĩa (ví dụ như ạ, ừ) Các tiếng bao gồm: các tiếng tự nó có nghĩa (ví dụ như chuông, bút, gió), các tiếng bản thân không hề có nghĩa mà chỉ dùng để kết hợp tạo thành nghĩa cho đơn vị trực tiếp cao hơn, đó là từ (ví dụ: lãng,dãng không có nghĩa nhưng lãng đãng có nghĩa).
• Tiếng và giá trị ngữ pháp: Khía cạnh ngữ pháp bao gồm những quy tắc cấu tạo từ, cấu tạo câu Và ta có thể thấy rằng tiếng là đơn vị ngữ pháp dùng để cấu tạo từ Các tiếng cấu tạo nên từ bao gồm 2 trường hợp sau: từ một tiếng(ví dụ: cây, đá, hoa) và từ nhiều tiếng.
2.1.1.2 Từ và các đặc điểm của từ
• Từ là đơn vị nhỏ nhất để đặt câu: từ có thể gồm có một tiếng nhưng cũng có thể gồm hai hay nhiều tiếng, tuy nhiên từ là đơn vị nhỏ nhất để đặt câu
• Từ có nghĩa hoàn chỉnh và cấu tạo ổn định: Điều này thể hiện rõ ở các từ 1 tiếng còn đối với những từ nhiều tiếng thì đó là những đặc điểm xác định lẫn nhau, cấu tạo ổn định dẫn đến nghĩa hoàn chỉnh và ngược lại
2.1.1.3 Câu và các đặc điểm của câu
Trong nghữ pháp tiếng Việt, từ và câu là những đơn vị ngữ pháp rất quan trọng. Đối với con người, từ được coi như sẵn có trong kho từ vựng được tích luỹ trong quá trình sống Còn để có thể hiểu, giao tiếp thì con người phải dùng đến câu Trong ngôn ngữ, câu là đơn vị ở bậc cao hơn cả Nói gì, viết gì cũng phải thành câu
• Câu có ý nghĩa hoàn chỉnh: Tính hoàn chỉnh về nghĩa của câu là tính hoàn chỉnh của cả một quá trình tư duy, quá trình thông báo diễn ra trong một hoàn cảnh nhất định
• Câu có cấu tạo đa dạng: Câu có dạng đơn giản như là câu đơn, và còn có những cấu trúc phức tạp hơn gọi là câu ghép Xét về mặt ngữ nghĩa, câu đơn có nhiều dạng khác nhau, biểu lộ những ý nghĩa, trạng thái, nội dung cần thông báo khác nhau.
2.1.2 Ngữ pháp của tiếng Việt
2.1.2.1 Trong phạm vi cấu tạo từ
Trong phạm vi cấu tạo từ, phương tiện ngữ pháp chủ yếu là sự kết hợp các tiếng.Trật tự sắp xếp các tiếng rất quan trọng trong cấu tạo từ Kết hợp hai phương tiện này, có hai phương thức cấu tạo từ chủ yếu là láy và ghép Láy là việc sắp đặt các tiếng thành đôi, kề cận nhau, có sự phối hợp về ngữ âm tạo nên nghĩa Ghép là việc sắp đặt các tiếng thành nhóm, kề cận nhau, có sự phối hợp về ngữ nghĩa tạo nên nghĩa của từ ghép.
2.1.2.2 Trong phạm vi cấu tạo câu
Bao gồm các phương diện như sau:
• Trật tự sắp đặt các từ là phương tiện chính để biểu thị quan hệ ngữ pháp
• Hư từ là những từ dùng để biểu thị một số những quan hệ cú pháp nhất định Ví dụ trong câu Anh, chị đã đi chơi rồi, có thể dùng từ và để nối hai từ anh, chị để làm rõ hơn mối quan hệ liên hợp, bình đẳng giữa hai từ
Từ trong tiếng Việt có thể có một tiếng hay gồm nhiều tiếng Những từ nhiều tiếng lại có thể được ghép bởi những tiếng hay từ khác có nghĩa Ví dụ hai từ đất, nước ghép với nhau thành một từ có ý nghĩa trừu tượng hơn là đất nước Những từ này được gọi là các từ ghép Do tồn tại cả hai dạng từ đơn (một tiếng) và từ ghép, do đó việc tách các từ trong một câu là vấn đề quan trong.
Ví dụ: Học sinh học sinh học. Ở đây ta có thể tách ra các từ như sau:học sinh|học|sinh học
Có thể phân loại các từ theo cách thức cấu tạo như đã xét ở phần trên, cũng có thể phân loại theo các chữ cái đầu như khi ta làm từ điển Tuy nhiên, có một cách phân loại đặc biệt quan trọng về mặt cấu tạo câu, đó là xác định từloại cho mỗi từ tiếng Việt tiếng Việt có thể có những từ loại sau:
• Danh từ (Việt Nam, Hà Nội)
• Động từ (đi, đứng, soạn bài)
• Tính từ (xấu, đẹp, trắng, đỏ)
• Phó từ (sẽ, đã, rồi, rất)
• Đại từ (tôi, nó, anh, em, hắn)
• Trợ từ (nhỉ, hả, nhé)
• Cảm từ (ái chà, chao ôi, vâng, dạ)
• Giới từ (cùng, với, bằng, để)
2.1.4 Các đặc điểm chính tả và văn bản tiếng Việt
Một số vấn đề về chính tả tiếng Việt mà ta cần quan tâm như sau:
• Các từ đồng âm thường sử dụng tùy tiện như “Mĩ”/“Mỹ”, “kĩ”/“kỹ”
• Từ địa phương: Người ta vẫn hay sử dụng một số từ địa phương thay cho các từ phổ thông trong văn bản Ví dụ “cây kiểng” thay cho “cây cảnh”
Dữ liệu huấn luyện cho phương pháp sử dụng các mô hình học sâu 19 Chương 3 Cơ sở lý thuyết
các mô hình học sâu
Trong phạm vi của đồ án lần này, tôi sử dụng mô hình các mô hình học sâu trong bài toán phân loại văn bản.
Về dữ liệu huấn luyện, được thu thập từ các nguồn:
• Dữ liệu từ website kenh14.vn 1 ,baomoi.com 2 : chứa các văn bản theo chủ đề của từng bài báo vì vậy đã được gán nhãn cụ thể Trong bộ dữ liệu này tôi đã thu thâp được theo 8 chủ đề sau:
– Thời sự pháp luật: 5718 văn bản
• Dữ liệu có sẵn từ trangGithub 3 : Dữ liệu này đã được phân chia các chủ để thành các thư mục, mỗi thư mục bao gồm nhiều đoạn văn bản trong đó.
3 https://github.com/duyvuleo/VNTC
Cơ sở lý thuyết Ở chương này, tôi tập trung vào việc giới thiệu các thuật toán, mô hình, các công nghệ mà tôi sử dụng trong đồ án và đi sâu về mặt lý thuyết.
Mô hình mạng nơ-ron tích chập (Convolutional
CNN (Convolutional Neural Networks) - Mô hình mạng neural tích chập là một trong những mô hình deep learning (mô hình học sâu) phổ biến nhất và có ảnh hưởng nhiều nhất trong cộng đồng Computer Vision CNN được dùng trong trong nhiều bài toán như nhân dạng ảnh, phân tích video, ảnh MRI, hoặc cho bài các bài của lĩnh vự xử lý ngôn ngữ tự nhiên và hầu hết đều giải quyết tốt các bài toán này.
3.1.1 Giới thiệu về tích chập
Tích chập là một khái niệm trong xử lý tín hiệu số nhằm biến đổi thông tin đầu vào thông qua một phép tích chập với bộ lọc để trả về đầu ra là một tín hiệu mới Tín hiệu này sẽ làm giảm những đặc trưng mà bộ lọc không quan tâm và chỉ giữ lại những đặc trưng chính Mạng tích chập hay sử dụng nhất là tích chập 2 chiều được áp dụng trên ma trận đầu vào và ma trận bộ lọc 2 chiều Phép tích chập của một ma trận :
X ∈R W 1 ∗H 1 với một bộ lọc (receptive field) F∈R F∗F là một ma trậnY ∈R W 2 ∗H 2 sẽ trải qua các bước sau:
• Tính tích chập tại 1 điểm: Tại vị trí đầu tiên trên cùng của ma trận đầu vào ta sẽ lọc ra một ma trận con X sub ∈ R F∗F có kích thước bằng với kích thước của bộ lọc Giá trị y 11 tương ứng trên Y là tích chập của X sub với F được tính bằng công thức như sau: y 11 =PF i=1
• Tiến hành trượt dọc ma trận theo chiều từ trái qua phải, từ trên xuống dưới với bước nhảy (stride)S ta sẽ tính được các giá trị y ij tương ứng tiếp theo Sau khi quá trình này kết thúc ta sẽ thu được mà trận đầu ra Y hoàn chỉnh.
Trong một mạng nơ ron tích chập, đầu vào của các tầng ở sau chính là đầu ra của các tầng ở phía trước Do đó việc xác định chính xác giá trị đầu ra của mỗi tầng sẽ giúp chúng ta hạn chế lỗi khi xây dựng mô hình Việc này có thế dựa vào kích thước đầu vào (W1,H1) và kích thước bộ lọc (F,F) ta có thể xác định kích thước ma trận đầu ra (W2,H2) Ví dụ: Xét quá trình trượt trên chiều W1 của ma trận đầu vào.
Hình 3.1: Quá trình trượt theo chiều rộng W1
Trong quá trình trượt, mỗi dòng tương ứng với một bước Tại mỗi bước ta cần phải dịch sang phải S đơn vị cho tới khi trượt hết chiều dài của W1 Trong trường hợp bị dư ở bước cuối cùng ta phải tiến hàng lát(padding) nhằm mục đích mở rộng thêm ma trận để quá trình tích chập không bị dư ô.
Giả sử quá trình này sẽ dừng lại sauW2 bước Tại bước đầu tiên, ta đi được đến vị trí
F như vậy đến bước thứ isẽ là F+ (i-1)S Như vậy tại bước W2 ta đã đi được đến vị trí F+ (W2-1)S Trong trường hợp lý tưởng ta sẽ có: F+ (W2-1)S=W1 Từ đó suy ra:
Trong trường hợp, W 1 không trùng với số bước W 2 thì ta sẽ lấy phần nguyên:
Ta luôn có thể tạo ra đẳng thức (1) bằng cách thêm đường viền(padding) vào mỗi cạnh của ảnh với độ rộng là Psao cho phép chia cho S luôn là phép chia hết Khi đó ta có:
Mô hình mạng nơ-ron tích chập (Convolutional Neural Networks) 21 1 Giới thiệu về tích chập
CNN là một mạng nơ ron bao gồm nhiều layer(tầng) Các layer trong mô hình CNN được gọi là Convolution layer do nó sử dụng các thuật toán Convolution Ở đây ta có thể hiểu convolution là sử dụng một cửa sổ trượt để tính toán các giá trị ma trận đầu ra Ví dụ:
Hình 3.3: Quá trình trượt trên ma trận
Trong hình trên ta sử dụng một ma trận đầu vàoX kích thước 5x5 và cửa sổ trượt
S kích thước 3x3 Ma trận đầu ra Ysẽ được tính bằng cách nhân từng vùng của Xvới ma trận S sau đó tính tổng của phép nhân này lại.
Trong CNN, các cửa sổ trượt này thường được gọi là các kernel, filter, Feature Detector và kích thước của các cửa sổ này thường là 3x3, 5x5, 7x7 Mục đích của việc sử dụng các cửa sổ trượt này là để phát hiện các pattern trong dữ liệu đầu vào như: cạnh, đối tượng, Ngoài ra ta có thể sử dụng nhiều filter để có thể phát hiện nhiều patterns khác nhau Ví dụ: filter 1 để phát hiện vertical edge, filter 2 để phát hiện Horizontal edge khi đó kết quả thu được sẽ ở dạng 3 chiều Thêm giá trị bias b vào mỗi đầu ra của bộ filter và sử dụng 1 hàm activation (hàm kích hoạt) ta sẽ thu được kết quả đầu ra của một layer convolution như hình dưới đây.
Hình 3.4: Một layer của convolution
Thông thường trong mô hình CNN ta sử dụng nhiều convolution layer và mỗi layer có một nhiệm vụ phát hiện các pattern nhất định Các layer sau thường sẽ phát hiện các pattern ở mức độ cao hơn các layer trước và đầu ra của các layer trước sẽ là đầu vào của layer tiếp theo sau nó.
Ví dụ: layer 1 để phát hiện các cạnh trong một hình ảnh, layer2 sử dụng các cạnh này để phát hiện các shape của đối tượng và layer 3 lại sử dụng các shape này để phát hiện các bộ phận như chân, tay, mắt,
Trong CNN để giúp model (mô hình) có độ chính xác cao hơn người ta thường kết hợp thêm các Pooling Layer và Fully Connected Layers.
• Lớp Pooling: pooling layer thường được dùng giữa các convolutional layer, để giảm kích thước dữ liệu nhưng vẫn giữ được các thuộc tính quan trọng Kích thước dữ liệu giảm giúp giảm việc tính toán trong model.Giả sử đầu vào của pooling layer có kích thước H*W*D, pooling có kích thước làK*K Ta tách ma trận đầu vào ra làm D ma trận có kích thước H*W và với mỗi ma trận thực hiện tìm giá trị lớn nhất hoặc thực hiện tính giá trị trung bình rồi viết vào ma trận kết quả. Trong ví dụ dưới đây ta sử dụng một max pooling với kích thước 3*3, stride = 1 và padding = 0 Sau khi trượt lần lượt từng bước ta thu được ma trận kết quả là ma trận nhỏ ở góc trái của ảnh.
Hình 3.5: Một layer của convolution
Tuy nhiên đa số các mô hình thường sử dụng với pooling có kích thước 2*2, stride
= 2 và padding = 0 Với kích thước pooling này, người ta có thể giảm chiều dài và chiều rộng của dữ liệu đi một nửa mà vẫn giữa nguyên được chiều sâu.
Hình 3.6: Ví dụ sử dụng pooling kích thước 2*2
Có hai loại pooling là max-pooling: lấy giá trị lớn nhất và avg-pooling: lấy trung bình các giá trị.
Hình 3.7: Ví dụ về pooling layer
• Lớp Fully Connected: Sau khi đã giảm kích thước đến một mức độ hợp lý, ma trận cần được trải phẳng (flatten) thành một vector và sử dụng các kết nối hoàn toàn giữa các tầng Quá trình này sẽ diễn ra cuối mạng CNN và sử dụng hàm kích hoạt là ReLU Tầng kết nối hoàn toàn cuối cùng (fully connected layer) sẽ có số lượng đơn vị bằng với số classes và áp dụng hàm kích hoạt là softmax nhằm mục đích tính phân phối xác xuất.
Hình 3.8: Ví dụ về fully connected layer
3.1.3 Một số ứng dụng của mô hình CNN
Mô hình CNN thường sử dụng cho các dữ liệu đầu vào dạng ảnh Dưới đây là một số ứng dụng của mô hình này:
• Image Classification: bài toán phân loại ảnh, phân loại chữ viết,
• Các bài toán phân tích video như: nhận dạng mặt trong video, bài toán ô tô tự lái,
• Ngoài ra gần đây CNN cũng được ứng dụng trong lĩnh vực xử lí ngôn ngữ tự nhiên, mô hình này giúp giảm bớt thời gian huấn luyện mà đạt được kết quả tương đối ấn tượng.
3.1.4 Áp dụng mô hình CNN vào trong NLP
Mặc dù mô hình CNN thường được áp dụng cho lĩnh vực xử lí ảnh tuy nhiên, gần đây nó đã được áp dụng vào các vấn đề về NLP và kết quả rất đáng mong đợi.Khi áp dụng CNN vào NLP, ta coi đoạn văn bản là một ma trận 2 chiều với hàng là các tokens trong câu và giá trị của hàng chính là giá trị vector của từng token(ở đây sử dụng kĩ thuật Word Embedding mà tôi sẽ trình bày ở phần sau) Ta có kích thước của ma trận đầu vào:height= len(tokens), width=dimension(WordEmbedding) Áp dụng với các layer convolution ta sẽ sử dụng các bộ lọc cũng là các ma trận 2 chiều và kích thước bộ lọc thường sẽ là:
• width: giá trị này sẽ bằng giá trị width của đầu vào
• heigth: giá trị này thường sẽ là 3, 4, 5 tương ứng với 3-grams, 4-grams, 5-grams. Việc áp dụng mô hình CNN vào NLP có thể mô tả như trong hình dưới đây [2]
Hình 3.9: Ví dụ mô hình CNN trong NLP
Trong mô hình này chúng ta sử dụng 3 bộ lọc có kích thước lần lượt là 2, 3, 4 và với mỗi kích thước có 2 bộ lọc khác nhau Các bộ lọc thực hiện nhân tích chập(convolution) lên ma trận của câu văn đầu vào và mỗi bộ lọc tạo ra một map lưu trữ các đặc trưng(features map) Có tất cả 6 map đặc trưng này từng map sẽ đi qua 1-max pooling – để lấy giá trị lớn nhất trong mỗi map đặc trưng và lưu lại Do vậy, một vector có 1 phần tử được tạo ra ở mỗi map đặc trưng Sau đó, các giá trị này được nối lại với nhau tạo nên lớp gần cuối ở trong hình Và cuối cùng, kết quả này đi qua một hàm softmax và nhận được là một vector đặc trưng và dùng nó để dự đoán nhãn cho văn bản Trong ví dụ này ta giả sử đây là bài toán phân loại văn bản chỉ có 2 lớp(binary classification) nên ở đây đầu ra chỉ có 2 trạng thái. Đầu vào của ví dụ trên sử dụng câu văn “I like this movie very much!” Câu văn này có 6 từ và một dấu câu nữa Dấu câu này ở đây sẽ được coi như là một từ Như vậy là chúng ta có 7 từ tất cả Ở đây ta chọn số chiều của word vector là d = 5(tức là mỗi từ sẽ là một vector kích thước 1×5) Như vậy kích thước ma trận của cả câu văn này là 7 x 5.
Một tính chất của thuật toán CNN trong xử lý ảnh là giữ được tính không gian 2 chiều theo góc quan sát của máy tính Văn bản cũng có tính chất này như ảnh Nhưng thay vì 2 chiều, văn bản chỉ có một chiều và đó là các chuỗi từ liên tiếp Ở ví dụ trên mỗi từ lại là một vector 5 chiều, do vậy ta cần cố định số chiều của bộ lọc cho phù hợp với số chiều của từ Như vậy bộ lọc của chúng ta nên có kích thước (? x 5) Dấu ? thể hiện số từ(số hàng) mà chúng ta muốn lấy vào Ở đây, tác giả sử dụng 6 bộ lọc, các bộ lọc được sử dụng có kích thước (2, 3, 4) từ.
Tại bước feature maps này là lúc bộ lọc nhân tích chập(convolutions / filtering) Chi tiết được mô tả như hình dưới đây.
Hình 3.10: Quá trình nhân tích chập lấy ra feature maps Ảnh phía trên thực hiện việc tính toán cho bộ lọc có kích thước là 2(2 từ) Với giá trị đầu tiên, bộ lọc màu vàng kích thước 2 x 5 thực hiện nhân từng thành phần với 2 hàng đầu tiên của văn bản(I, like) Giá trị đầu tiên được tính như sau:
Quá trình này liên tiếp trượt xuống từng dòng một cho đến khi hết độ dài văn bản. Đến đây ta thu được ma trận đầu ra có kích thước là 6x1 Để đảm giá trị của map đặc trưng, chúng ta cần sử dụng một activation function(ReLu). Để đưa ma trận đặc trưng này về kích thước như nhau Hoặc trong nhiều trường hợp người ta chỉ muốn giữ lại các đặc trưng tiêu biểu Chúng ta có thể sử dụng max-pooling để lấy ra các giá trị lớn nhất trong map đặc trưng Điều này giúp giảm chiều dữ liệu, tăng tốc độ tính toán Trong ví dụ này, ta sử dụng 1-max-pooling Tức là lấy ra 1 giá trị lớn nhất trong từng map đặc trưng Việc này giúp ta có ma trận output có cùng kích thước Ở đây kích thước sau khi áp dụng 1- max-pooling là (1×1) Như vậy, ta chỉ lấy 1 đặc trưng trội nhất ở tất cả các lớp cnn để phục vụ cho bài toán.
Sau khi áp dụng 1-max pooling, ta đã có những vector có kích thước cố định là 1×1 của 6 thành phần(bằng số bộ lọc) Vector cố định kích thước này sau đó được đưa vào một hàm softmax(lớp fully-connected) để giải quyết việc phân loại.
Mô hình mạng trí nhớ ngắn hạng định hướng dài hạn (LSTM)
3.2.1 Mạng nơ ron hồi quy (RNN)
Trong mô hình mạng nơ-ron thông thường (Feed forward network), dữ liệu đầu vào thường là các dữ liệu độc lập và không có mối liên hệ với nhau Tuy nhiên, trong ngôn ngữ tự nhiên thì mối liên hệ giữa các từ và ngữ cảnh đóng một vai trò quan trọng, quyết định ý nghĩa của câu văn Do đó việc áp dụng mô hình mạng nơ-ron thông thường vào các bài toán NLP thì kết quả thu được thường không như mong muốn.
Và mô hình RNN ra đời đã giải quyết vấn đề này Trong RNN, dữ liệu đầu vào là một chuỗi liên tục nối tiếp nhau theo thứ tự thời gian Ví dụ, một đoạn văn bản có thể coi là một chuỗi các từ (words) hoặc chuỗi các kí tự (character).
Tại thời điểmt, với dữ liệu đầu vàox t ta có kết quả output lày t Khác với mạng nơ-ron thông thường, giá trị đầu ra y t lại được sử dụng để làm dữ liệu đầu vào cho thời điểm t+1 Việc này chính là điểm mạnh của mô hình RNN đó là có thể lưu trữ và truyền thông tin đến thời điểm tiếp theo Mô hình hoạt động của RNN có thể được mô tả trong hình dưới đây (thông thường hàm activation function gh được sử dụng là tanh còn gy có thể là sigmoid hoặc softmax function tùy thuộc vào từng bài toán cụ thể).
Hình 3.11: Mạng nơ-ron hồi quy
Hình vẽ trên mô tả một đoạn của mạng nơ-ron hồi quy với đầu vào là x t và đầu ra là y t Một vòng lặp cho phép thông tin có thể được truyền từ bước này qua bước này qua bước khác của mạng nơ-ron. Để dễ nhìn hơn, chúng ta có thể chuyển mô hình RNN thành dạng phẳng với x t , x t+1 , x t+2 là dữ liệu đầu vào tại thời điểm t, t+1 và t+2 như sau (ở đây t, t+1, t+2, được gọi là các timesteps): Trong các mô hình mạng nơ-ron thông thường thì kết quả
Hình 3.12: Cấu trúc trải phẳng của mạng nơ-ron hồi quy đầu ra của một layer cũng trở thành đầu vào để tính toán kết quả cho layer tiếp theo. Tuy nhiên điểm khác biệt với các mô hình mạng nơ-ron thông thường là:
• Mạng nơ-ron thông thường: sử dụng các ma trận trọng số (weights matrix) tại từng layer khác nhau Ví dụ trong hình dưới đây, layer nhân với ma trận W1 còn layer 2 nhân với W2
Hình 3.13: Mạng nơ-ron truyền thẳng
• Mạng nơ-ron hồi quy: chỉ sử dụng một nơ-ron duy nhất để tính giá trị đầu ra cho từng timesteps Do đó, các đầu ra khi trở thành đầu vào của layer tiếp theo được nhân với cùng một ma trận trọng số ( W R như trong hình 3.9).
3.2.2 Một số ứng dụng mạng RNN
Mạng RNN thường được sử dụng cho các dữ liệu đầu vào dạng sequence data hay time-series data và bạn muốn áp dụng deep learning thì bạn nghĩ ngay đến RNN Dưới đây là một số ứng dụng của RNN:
• Speech to text: Chuyển giọng nói sang text.
• Sentiment classification: phân loại số sao cho các bình luận, ví dụ: input: “ứng dụng tốt”, output: 4 sao.
• Machine translation: Bài toán dịch tự động giữa các ngôn ngữ.
• Video recognition: Nhận diện hành động trong video.
• Heart attack: Dự đoán đột quỵ tim.
3.2.3 Hạn chế mạng nơ-ron hồi quy
Một trong những điểm đặc biệt của mô hình hồi quy đó là nó có khả năng kết nối các thông tin liền trước với nhiệm vụ hiện tại. đằng trước "chim bay trên bầu " ta có thể dự đoán được từ cần điền là "trời" Trong tình huống này, khoảng cách tới thông tin có được cần để dự đoán là nhỏ, nên RNN hoàn toàn có thể học được Tuy nhiên, trong nhiều tình huống ta cần phải sử dụng nhiều ngữ cảnh hơn để dự đoán như ví dụ sau: hôm qua tôi đi học nhưng không mang áo mưa Trên đường đi học trời mưa Cặp sách của tôi bị ướt chúng ta cần phải học với ngữ cảnh dài hơn để dự đoán từ ướt Ở đây, ta cần biết sự kiện trước đó là trời mưa và không mang áo mưa để suy ra sự kiện bị ướt Tuy nhiên, với khoảng cách càng lớn dần thì RNN bắt đầu không thể nhớ và học được nữa[3].
Về mặt lý thuyết thì RNN có thể xử lý và lưu trữ thông tin của một chuỗi dữ liệu với độ dài bất kỳ Tuy nhiên trong thực tế thì RNN chỉ tỏ ra hiệu quả với chuỗi dữ liệu có độ dài không quá lớn (short-term memory hay còn gọi là long-term dependency problem). Một trong những nguyên nhân chính được giải thích đó là sự triệt tiêu đạo hàm của hàm cost function sẽ diễn ra khi trải quả chuỗi dài các tính toán truy hồi[4] Một phiên bản mới của mạng RNN là mạng LSTM ra đời nhằm khắc phục hiện tường này nhờ một cơ chế đặc biệt.
3.2.4 Mô hình mạng trí nhớ ngắn hạn định hướng dài hạn(LSTM)
Mạng trí nhớ ngắn hạn định hướng dài hạn còn được viết tắt là LSTM là một kiến trúc đặc biệt của RNN có khả năng học được sự phục thuộc trong dài hạn (long-term dependencies) được giới thiệu bởi Hochreiter & Schmidhuber (1997)[5] Mô hình LSTM đã khắc phục được tương đối nhiều hạn chế của mô hình RNN về vấn đề triệt tiêu đạo hàm Cấu trúc của mô hình này phức tạp hơn mô hình RNN nhưng vấn giữ được các tư tưởng chính của nó đó là sự sao chép các kiến trúc theo dạng chuôi Hình dưới đây thể hiện một trạng thái thứ tcủa mô hình LSTM.
• Input: x t ,c t 1 ,h t 1 Trong đó,x t là đầu vào của trạng thái thử t,c t 1 , h t 1 là đầu ra của trạng thái trước đó.
• c t ,h t gọi là các cell state và hidden state.
Mô hình LSTM bao gồm 4 tầng ẩn bao gồm 3 tầng có hàm kích hoạt sigmoid và 1 tầng có hàm kích hoạt tanh Phép cộng trong mô hình này là cộng ma trận, phép nhân tương ứng với element-wise multiplication[6]. Ý tưởng chính của mô hình LSTM chính là các ô trạng thái (cell state) - chính là một đường chạy thằng trong hình trên với trạng thái Ct 1 đến Ct Nó chạy xuyên suốt qua tất cả các mắt xích (các nút mạng) và chỉ tương tác tuyến tính đôi chút Do đó, các thông tin có thể dễ dàng truyền đi thông suốt mà không sợ bị thay đổi Các cell state này được coi là bộ nhớ của mô hình LSTM và có thể lưu trữ bộ nhớ của các trạng thái đầu tiên Do đó, nó tránh được hiện tượng phụ thuộc gần (short-term memory). Trong mô hình LSTM, nó có khả năng tự loại bỏ hoặc thêm các thông tin cần thiết cho các ô trạng thái và cổng (gate) trong mô hình này đảm nhận công việc này Cổng thường kết hợp bởi một hàm sigmoid và một phép nhân như trong hình dưới đây.
Hình 3.15: Ví dụ về một cổng trong LSTMTầng sigmoid sẽ cho đầu ra [0,1], khi đầu ra bằng 0 thì không cho thông tin nào đi qua cả, và bằng 1 cho tất cả các thông tin đi qua Với mỗi ô trạng thái sẽ được hình thành từ 3 cổng: Forget gate, Input gate và Output gate
• Forget gate (cổng quên): tầng này có nhiệm vụ quyết định thông tin của các ô trạng thái trước đó (t-1) có được giữ lại hay không Thông tin đầu vào là giá trị input(xt) và giá trị tầng ẩn(ht−1) được đưa qua hàm sigmoid với đầu ra là [0,1] khi các giá trị output càng gần 1 thì thông tin sẽ được giữ lại, ngược lại thông tin sẽ bị loại bỏ.
Hình 3.16: Tầng cổng quên(Forget gate layer)
• Input gate (cổng vào): Tầng này có nhiệm vụ quyết định xem thông tin nào sẽ được lưu trữ vào ô trạng thái Trong cổng này bao gồm 2 phần: phần đầu là một tầng ẩn của hàm sigmoid được gọi là tầng cổng vào (input gate layer) quyết định giá trị bao nhiêu sẽ được cập nhật, phần còn lại là tầng ẩn hàm tanh sẽ tạo ra một véc tơ C˜ t nhằm thêm vào cho trạng thái Kết quả của hai phần này sẽ quyết định xem thông tin có được cập nhật hay không.
Mô hình học sẵn Word2Vec
3.3.1 Giới thiệu cách biểu diễn từ
Trong mô hình xử lí ngôn ngữ tự nhiên, đầu vào sẽ là các chữ số và dấu câu Vậy câu hỏi đặt ra là làm sao có từ đầu vào là các từ và dấu câu có thể đưa vào mô hình mạng nơ-ron Kĩ thuật one-hot véc-tơ là một phương pháp biểu diễn giúp ta thực hiện việc này Trước khi biểu diễn từ ta cần xác định từ điển của văn bản Từ đó ta có thể mã hòa từ thành véc-tơ và các câu thành ma trận.
One-hot véc-tơ: Giả sử ta có 1 tập gồm n từ vựng bao gồm:anh, em, bạn bè, thầy cô, gia đình Mỗi từ sẽ được đại diện bởi index của chính nó, ví dụ từ anh có index=0, em có index=1, Giá trị one-hot véc-tơ của từ vựng thứ i (với i i v c ), (3.3.3) Trong đó tập chỉ số của bộ từ vựng là V ={0,1, ,|V| −1} Giả sử chuỗi văn bản có độ dài T và từ tại bước thời gian t là w (t) Khi kích thước cửa sổ ngữ cảnh là m, hàm hợp lý (likelihood) của mô hình skip-gam là xác suất kết hợp sinh ra tất cả các từ ngữ cảnh với bất kì từ trung tâm nào.
Các tham số trong mô hình skip-gram là các véc-tơ từ trung tâm và véc-tơ từ ngữ cảnh cho từng từ riêng lẻ Trong quá trình huấn luyện ta tìm cách cực đại hóa hàm hợp lí hay việc này tương đương với giảm thiểu hàm mất mát dưới đây:
Phương pháp giải quyết
Tiền xử lí dữ liệu
Dữ liệu là yếu tố quan trọng nhất và cũng là vấn đề mà chúng ta cần quan tâm nhất Trong quá trình xây dựng một hệ thống phân loại văn bản, bước chuẩn bị và tiền xử lý dữ liệu quyết định tới thành bại của hệ thống hơn cả Với bài toán phân loại văn bản tin tức tiếng Việt, dữ liệu cần chuẩn bị là dữ liệu các bài báo tiếng Việt kèm theo chủ đề của bài báo đó Những dữ liệu này thường rất dễ kiếm trên các website báo. Trong phạm vi của đồ án tôi sử dụng dữ liệu từ hai nguồn sau:
• Dữ liệu crawl được từ các trang báo như: kenh14.vn, baomoi.vn, gamek.vn, cafebiz.vn,
• Dữ liệu lấy từ bộ VNTC tham khảo từ github 1
Việc tiền xử lý dữ liệu trước khi đưa vào các mô hình huấn luyện là hết sức quan trọng để đảm bảo mô hình đạt được kết quả tốt nhất Trong phần tiếp theo tôi sẽ trình bày về vấn đề này.
Các công việc trong quá trình tiền xử lí dữ liệu bao gồm chuẩn hóa dữ liệu và loại bỏ các thành phần không cần thiết trong đoạn văn bản. Đối với nguồn dữ liệu từ việc crawl có được, tôi tiến hành:
• Xóa bỏ các code html (nếu vẫn còn sót): Dữ liệu crawl từ các trang web đôi khi vẫn còn những đoạn code html và những đoạn mã html này không có tác dụng trong việc phân loại văn bản Để loại bỏ những đoạn html này tôi sử dụng regex trong Python.
• Chuẩn hóa kiểu gõ dấu tiếng Việt (dùng tòa thay cho toà): Kiểu gõ dấu khác nhau thì khi nhìn mắt thường cũng sẽ thấy được sự khác nhau: tòa với toà lần lượt là kiểu gõ cũ (phổ biến hơn) và kiểu gõ mới [9].
• Thực hiện tách từ tiếng Việt (sử dụng thư viện tách từ như pyvi, underthesea, vncorenlp, ): Trong tiếng Việt bao gồm từ đơn (yêu) và từ ghép(học sinh) Vì vậy cần phải cho máy tính hiểu được đâu là từ đơn, từ ghép Do mô hình sẽ coi các từ cách nhau bởi dấu cách, nên cần nối các từ ghép lại thành một từ Ví dụ: Học sinh học sinh học => Học_sinh học sinh_học Trong phạm vi đồ án, tôi sử dụng thư viện pyvi để phục vụ cho việc tách từ tiếng Việt.
• Đưa văn bản về dạng viết thường
• Loại bỏ các kí tự đặc biệt như ".", ",", ";", ")", : Việc loại bỏ các dữ liệu không cần thiết sẽ giúp giảm bớt số chiều đặc trưng, tăng tốc độ học và xử lí, tránh làm ảnh hưởng xấu đến kết quả mô hình.
• Loại bỏ các stop-word(từ dừng): Với trường hợp này tôi đã thống kê các loại chủ đề và chọn ra những từ xuất hiện nhiều nhất Bên cạnh đó tôi cũng tham khảo thêm những stopword trên các trang mạng Sau khi đã có những từ này tôi tiến hành duyệt qua từng đoạn văn bản đã tách từ và loai bỏ những từ không cần thiết này.
Sau khi đã xử lí dũ liệu xong, ta cần xây dựng tập huấn luyện và tập kiểm thử Việc này sẽ giúp cho việc đánh giá kết quả huấn luyện cũng như lựa chọn mô hình và tinh chỉnh để mô hình cho tốt hơn Dữ liệu sau khi xử lí sẽ được lưu vào từng file để tiện trong quá trình tái sử dụng Cụ thể bộ dữ liệu phân theo từng nhãn như sau:
• Bộ dữ liệu crawl được, bao gồm 8 chủ đề:
– Thời sự pháp luật: 5718 văn bản
• Bộ dữ liệu VNTC bao gồm 10 chủ đề:
– Chính trị xã hội: 3159 văn bản
Nhìn chung số lượng dữ liệu giữa các chủ đề là tương đối đều nhau, cụ thể ở bước này tôi thực hiện các công việc sau:
• Đọc dữ liệu từ file và tách làm 2 list (danh sách) text (dữ liệu) và label (nhãn).
Dữ liệu text[i] sẽ có nhãn là label[i].
• Chia làm 3 tập train (X_train, y_train), valid (X_val, y_val) và test(X_test, y_test), ở đây tôi sử dụng thư viện sklearn để chia tập dữ liệu thành các phần nhỏ hơn: train, valid, test Cụ thể như sau:
– Tập dữ liệu huấn luyện (train): 70
– Tập dữ liệu kiểm định (valid): 20
– Tập dữ liệu kiểm thử mô hình (test): 10
• Lưu các dữ liệu ra file để tiện cho việc dùng dữ liệu trong những lần sau
• Đưa label về dạng vector để tiện cho tính toán.
Hình 4.1: Sơ đồ huấn luyện Word2Vector Tiếng Việt
Áp dụng với mô hình học sẵn word2vec
Sau khi dữ liệu đã được làm sạch và tách từ, nó sẽ là đầu vào của mạng nơ-ron Recurrent Neural Network (RNN) để cho ra mô hình Word2Vector theo mô hình sau:
Word2Vector là kết quả của một mô hình học nông của mạng nơ ron Recurrent Neural Network Mục đích của mô hình này là biểu diễn tập từ (word) của một ngôn ngữ tự nhiên vào không gian vector Nhờ vào không gian vector của từ vựng này mà các từ càng tương đồng với nhau thì giá trị khoảng cách cosine càng lớn (càng gần giá trị 1), ngược lại các từ ít tương đồng với nhau thì khoảng cách cosine sẽ càng nhỏ (càng gần giá trị 0) Để đo lường độ tương đồng giữa các từ vựng, mô hình Word2Vector đưa ra một độ đo khoảng cách Cosine (Cosine distance), được tính dựa vào tích vô hướng của
2 vector, còn gọi là độ tương đồng Cosine (Cosine similariry). cos(θ) = ~a˙~b k~ak˙
Trong phạm vi đồ án, tôi sử dụng mô hình CBOW trong thư viện gensim 2 cho việc huấn luyện mô hình word2vector của mình Cụ thể các thông số như sau:
• Kích thước tập dữ liệu huấn luyện là 100MB văn bản Tiếng Việt tách từ.
• Thuật toán huấn luyện là negative sampling.
2 https://github.com/RaRe-Technologies/gensim
Mô hình Word2Vector sau khi huấn luyện xong có thể được lưu lại theo 2 định dạng: thuần văn bản hoặc dạng nén binary Ở đây, tôi lưu cả với định dạng văn bản Kết quả thu được của mô hình dạng văn bản là một file 295MB, với số lượng từ vựng là 79681 từ Word2Vector được lưu ở dạng thuần văn bản cũng khá đơn giản Với định dạng như sau: dòng đầu tiên là số lượng từ (token) và số chiều vector của mỗi từ Các dòng còn lại bắt đầu bằng một từ (token) và 300 giá trị trọng số của vector Ví dụ như sau: Sau khi đã có những véc-tơ biểu diễn sẵn của các từ ta có thể sử dụng làm đầu vào cho các thuật toán học sâu Chi tiết các bước tôi sẽ trình bày trong các thuật toán ở phần sau. Nhìn chung mô hình Word2Vec đã biểu diễn được từ dưới dạng vector mà máy tính có thể hiểu được, tuy nhiên xét về mặt ngữ cảnh thì mô hình này vẫn chưa thật sự tốt.Trong phần mô hình PhoBERT tôi sẽ trình bày về phần này.
Áp dụng với CNN
Trong những năm gần đây, mô hình CNN đã được nghiên cứu và áp dụng vào lĩnh vực xử lí ngôn ngữ tự nhiên và đạt được những kết quả khá ấn tượng Trong phạm vi đồ án tôi sử dụng mô hình CNN kết hợp với mô hình biểu diễn từ Word2Vec Cụ thể mô hình tôi sử dụng như sau:
Chi tiết từng phần như sau:
• Tầng đầu (Word Embedding): là những đoạn văn đã được mã hóa dưới dạng véc-tơ sử dụng mô hình Word2Vec với số lượng từ điển là 40000 từ.
• Tầng tiếp theo: tôi sử dụng 3 bộ lọc tương có kích thước là 3, 4, 5 tương ứng với ( 3-gram, 4-gram, 5-gram) để trích xuất các đặc trưng và sử dụng thêm lớp Dropout để giảm bớt độ phức tạp của mô hình tránh cho hiện tượng bị mô hình học quá khớp.
• Với mỗi bộ lọc, tôi sử dụng thêm 1 lớp pooling cụ thể ở đây là 2 lớp Max Pooling và 1 lớp GlobalMaxPooling.
• Cuối cùng tôi sử dụng một lớp Flatten để tổng hợp lại kết quả từ các bộ lọc và tiến hành phân lớp với hàm kích hoạt là softmax.
Sau khi đã cài đặt những tham số của mô hình ta tiến hành huấn luyện Trong quá trình huấn luyện tôi có sử dụng checkpoint để lưu lại những giá trị trọng số và sử dụng thêm hàm EarlyStop trong thư viện keras để dùng lại sớm hơn khi mô hình không cải thiện thêm độ chính xác nữa. Ưu điểm
• Thời gian huấn luyện ít hơn các mô hình RNN.
• Độ chính xác tương đối cao
• Việc sử dụng kết hợp với các mô hình học sẵn giúp giảm đáng kể thời gian huấn luyện mô hình.
• Độ chính xác vẫn chưa thực sự cao so với các mô hình RNN.
• Tuy có thể trích xuất đặc trưng của các đoạn văn bản nhưng mô hình CNN không xác định được thứ tự các từ.
Áp dụng với LSTM
Với các dữ liệu đầu vào dạng chuỗi, mô hình hồi qui tuyến tính (RNN) là sự lựa chọn hợp lí nhất Một dạng đặc biệt của RNN là mô hình LSTM có khả năng học được các phụ thuộc xa Trong phần này tôi sử dụng mô hình LSTM kết hợp với cách biểu diễn từ Word2Vec Cụ thể mô hình của tôi như sau:
Cụ thể từng phần trong mô hình của tôi như sau:
• Tầng đầu (Word Embedding): là những đoạn văn đã được mã hóa dưới dạng véc-tơ sử dụng mô hình Word2Vec với số lượng từ điển là 40000 từ.
• Tầng tiếp theo: tôi sử dụng một lớp LSTM kết hợp với một lớp Dropout.
• Cuối cùng tôi sử dụng một lớp Dense của thư viện keras với hàm kích hoạt là softmax để tiến hành phân loại.
Sau khi đã cài đặt những tham số của mô hình ta tiến hành huấn luyện Trong quá trình huấn luyện tôi có sử dụng checkpoint để lưu lại những giá trị trọng số và sử dụng thêm hàm EarlyStop trong thư viện keras để dùng lại sớm hơn khi mô hình không cải thiện thêm độ chính xác nữa nhằm tiết kiệm thời gian và tài nguyên. Ưu điểm
• Mô hình này học được các từ dựa trên những từ xung quanh.
• Độ chính xác được cải thiện hơn so với mô hình CNN.
• Mặc dù mô hình đã học được dựa trên các từ xung quanh nhưng chỉ học được theo một chiều Do đó có thể học chưa đúng được các từ.
• Cách xử lí tuần tự khiên cho mô hình này có thời gian huấn luyện cao hơn so vớiCNN.
Áp dụng với Bi-LSTM
Một dạng khác của mô hình RNN ta có thể kể đến mô hình Bi-LSTM, trong mô hình này các các từ sẽ được học dựa trên các từ xung quanh cả từ phải qua trái và từ trái qua phải Chi tiết mô hình tôi sử dụng như sau:
Cụ thể từng phần trong mô hình của tôi như sau:
• Tầng đầu (Word Embedding): là những đoạn văn đã được mã hóa dưới dạng véc-tơ sử dụng mô hình Word2Vec với số lượng từ điển là 40000 từ.
• Tầng tiếp theo: tôi sử dụng hai lớp Bidirectional với đầu vào là môt lớp LSTM và kết hợp với một lớp Dropout.
• Cuối cùng tôi sử dụng một lớp Dense của thư viện keras với hàm kích hoạt là softmax để tiến hành phân loại. Ưu điểm
• Mô hình này đã cải thiện được vấn đề chỉ học theo một chiều của mô hình LSTM.
• Độ chính xác được cải thiện đáng kể.
• Mô hình này vẫn theo cách xử lý tuần tự nên thời gian huấn luyện tương đối lâu.
Đánh giá và cài đặt thử nghiệm
Phương pháp sử dụng mô hình Word2Vec
Ở phương pháp này, tôi cài đặt thử nghiệm mô hình các mô hình học sâu sau: CNN, LSTM, Bi-LSTM sử dụng kết hợp với cách biểu diễn từ Word2Vec, tôi sử dụng một bộ dữ liệu luấn luyện bao gồm:
• Khoảng 39000 văn bản cho các loại tin tức tương ứng với 8 chủ đề sau: điện ảnh, du lịch, kinh doanh, giáo dục, ngân hàng, sức khỏe, thể thao, thời sự pháp luật. Những dữ liệu này tôi thu thập được trên các trang báo.
• Khoảng 32000 văn bản tôi sử dụng bộ dữ liệu của VNTC.
Bộ địa chỉ test gồm các văn bản mà tôi trích ra được từ 2 loại dữ liệu trên, tổng có xấp xỉ khoảng 6000 văn bản.
Chi tiết kết quả biểu diễn như trong các hình dưới đây:
Hình 5.1: Kết quả mô hình CNN accuracy và valid với bộ dữ liệu crawl
Hình 5.2: Kết quả mô hình CNN accuracy và valid với bộ dữ liệu VNTC
Bảng kết quả đánh giá với từng bộ dữ liệu như sau:
Topic Precision Recall F1-score dien_anh 99% 99% 99% du_lich 98% 97% 98% suc_khoe 97% 99% 98% giao_duc 98% 97% 98% kinh_doanh 98% 97% 98% ngan_hang 97% 100% 98% the_thao 100% 98% 99% thoi_su_phap_luat 97% 97% 97% avg/total 98% 98% 98%
Bảng 5.1: Bảng kết quả mô hình CNN với dữ liệu crawl
Topic Precision Recall F1-score chinh_tri_xa_hoi 96% 89% 93% doi_song 94% 92% 93% khoa_hoc 96% 90% 92% kinh_doanh 92% 97% 95% phap_luat 92% 98% 95% suc_khoe 96% 98% 97% the_gioi 95% 95% 95% the_thao 98% 100% 99% van_hoa 96% 98% 97% vi_tinh 98% 96% 97% avg/total 95% 95% 95%
Bảng 5.2: Bảng kết quả mô hình CNN với dữ liệu VNTC
Với những kết quả trên mô hình đã dự đoán tương đối chính xác với các bộ dữ liệu văn bản test và tôi có sử dụng các văn bản ngoài tập dữ liệu test lại.
5.1.2 Áp dụng với mô hình LSTM
Chi tiết kết quả biểu diễn như trong các hình dưới đây:
Hình 5.3: Kết quả mô hình LSTM accuracy và valid với bộ dữ liệu crawl
Hình 5.4: Kết quả mô hình LSTM accuracy và valid với bộ dữ liệu VNTC
Bảng kết quả đánh giá với từng bộ dữ liệu như sau:
Topic Precision Recall F1-score dien_anh 95% 97% 96% du_lich 94% 91% 92% suc_khoe 91% 84% 87% giao_duc 98% 88% 93% kinh_doanh 90% 87% 89% ngan_hang 94% 95% 94% the_thao 89% 94% 92% thoi_su_phap_luat 80% 90% 85% avg/total 91% 91% 91%
Bảng 5.3: Bảng kết quả mô hình LSTM với dữ liệu crawl
Topic Precision Recall F1-score chinh_tri_xa_hoi 94% 93% 92% doi_song 91% 89% 90% khoa_hoc 90% 91% 93% kinh_doanh 89% 87% 90% phap_luat 92% 93% 94% suc_khoe 94% 95% 96% the_gioi 91% 94% 92% the_thao 92% 91% 92% van_hoa 94% 92% 94% vi_tinh 91% 90% 91% avg/total 92% 91% 92%
Bảng 5.4: Bảng kết quả mô hình LSTM với dữ liệu VNTC
5.1.3 Áp dụng với mô hình Bi-LSTM
Chi tiết kết quả biểu diễn như trong các hình dưới đây:
Hình 5.5: Kết quả mô hình Bi-LSTM accuracy và valid với bộ dữ liệu crawl
Hình 5.6: Kết quả mô hình Bi-LSTM accuracy và valid với bộ dữ liệu VNTC
Bảng kết quả đánh giá với từng bộ dữ liệu như sau:
Topic Precision Recall F1-score dien_anh 98% 97% 97% du_lich 84% 96% 89% suc_khoe 76% 89% 82% giao_duc 98% 84% 90% kinh_doanh 92% 78% 84% ngan_hang 86% 98% 92% the_thao 84% 96% 90% thoi_su_phap_luat 87% 80% 81% avg/total 88% 89% 89%
Bảng 5.5: Bảng kết quả mô hình Bi-LSTM với dữ liệu crawl
Topic Precision Recall F1-score chinh_tri_xa_hoi 75% 82% 78% doi_song 82% 81% 81% khoa_hoc 80% 78% 83% kinh_doanh 87% 76% 81% phap_luat 85% 94% 89% suc_khoe 84% 92% 88% the_gioi 86% 83% 84% the_thao 97% 98% 98% van_hoa 88% 91% 89% vi_tinh 94% 88% 91% avg/total 86% 86% 86%
Bảng 5.6: Bảng kết quả mô hình Bi-LSTM với dữ liệu VNTC
Với kết quả của các thuật toán như trên, mô hình đã phân loại chính xác đa số văn bản đầu vào Chi tiết kết của của ba mô hình trên như sau:
Dataset Algorithm Time/Epoch Train Accuracy Validation Accuracy data_crawl CNN 120s 98% 91% data_crawl LSTM 140s 90% 89% data_crawl Bi-LSTM 119s 90% 88% data_vntc CNN 115s 97% 85% data_vntc LSTM 135s 91% 88% data_vntc Bi-LSTM 115s 88% 87%
Bảng 5.7: Bảng so sánh kết quả giữa các mô hình học sâu