MỞ ĐẦU 1. Giới thiệu đề tài Phân tích cảm xúc (Sentiment Anlysis) của một câu hay một đoạn văn trong một văn phạm là một chủ đề “nóng” của xử lý ngôn ngữ tự nhiên và được nhiều nhà khoa học nghiên cứu vì tính ứng dụng và độ phức tạp cao của bài toán. Do vậy đã có khá nhiều công trình nghiên cứu trên nhiều ngôn ngữ như tiếng Anh, tiếng Pháp, tiếng Nhật, tiếng Việt… dù vậy tiếng Anh chiếm một khối lượng lớn các công trình nghiên cứu và dữ liệu liên quan. Một trong số đó khẳng định rằng có hiệu xuất cao nhất tại thời điểm thực hiện đề tài này trên 85% cho phân loại tích cực/tiêu cực của câu văn tiếng Anh.
Đó là mô hình dùng Recursive Neural Tensor Network(RNTN) [1] trên Sentiment Treebank. Không chỉ dừng lại ở việc đơn giản muốn biết cảm xúc của một câu mà còn có một lượng nhu cầu lớn những nhà sản xuất sản phẩm quan tâm tới nhận xét (review) của khách hàng không chỉ về sản phẩm mà còn muốn biết chính xác hơn rằng khía cạnh(aspect) nào của sản phẩm là tích cực hay tiêu cực. Phát triển từ ý tưởng này một bài báo khác [2] đã ứng dụng RNTN để phân tích cảm xúc cho khía cạnh (Aspect Specific Sentiment Analysis). Và kết quả ban đầu cũng rất khả quan, trên 80% xác định đúng khía cạnh và trên 75% cho cảm xúc của khía cạnh đó ở câu có nhiều khía cạnh và cảm xúc.
Mặt khác, đối với tiếng Việt, việc phân tích cảm xúc của những khía cạnh của sản phẩm chủ yếu dựa vào những luật. Với cách làm như vậy thì có rất nhiều điểm hạn chế đã được xác định bởi [7], để giải quyết những vấn đề đó bài báo [7] đã đề xuất dùng mô hình của học máy. Để tiếp nói ý tưởng này và những thành tựu khả quan của mô hình RNTN trong tiếng Anh nên chúng tôi quyết định sẽ cập nhật mô hình này cho tiếng Việt. Trong đề tài này, chúng tôi sẽ tập trung trả lời câu hỏi liệu rằng mô hình RNTN để phân tích cảm xúc của toàn bộ đoạn văn hay câu văn cùng với những khía cạnh của nó thì hiệu quả có tốt cho tiếng Việt giống như tiếng Anh hay không.
Mục tiêu, giới hạn và đối tượng nghiên cứu Tuy là đã có rất nhiều đề tài liên quan nghiên cứu về phân tích cảm xúc cho tiếng Việt nhưng áp dụng mô hình RNTN cho tiếng Việt thì đây là đề tài đầu tiên nên chắc chắn sẽ gặp những khó khăn nhất định. Để đảm bảo sự thành công của đề tài nên chúng tôi đã đặt ra những mục tiêu cũng như giới hạn cho đề tài này như sau: - Về mục tiêu nghiên cứu của đề tài: Áp dụng lý thuyết của phân tích cảm xúc cho khía cạnh dựa trên mô hình RNTN vào bài toán phân tích cảm xúc cho Tiếng Việt. Tìm hiểu cách hiện thực của RNTN vào thực tế thông qua CoreNLP. Hiện thực lý thuyết trong bài báo [2] vào mã nguồn của CoreNLP.
So sánh hiệu suất của hệ thống trong bài [1] và [2]. - Về đối tượng nghiên cứu chính của đề tài là phân tích cảm xúc của một câu tiếng Việt dựa vào cơ sở lý thuyết của RNTN và trên câu nhận xét của khách hàng về một sản phẩm công nghệ. Ở đây, chúng tôi chọn làm thực nghiệm trên domain là phụ kiện kỹ thuật số (tai nghe, bàn phím, loa. Trong phần thực nghiệm chúng tôi cũng sẽ đánh giá ở hai dạng bài toán phân loại.
Một là chỉ phân loại cảm xúc ở 3 lớp: tích cực/trung tính/tiêu cực. Hai là phân loại cảm xúc ở 5 lớp: rất tích cực/tích cực/trung tính/tiêu cực/rất tiêu cực. Phương pháp nghiên cứu Dưới đây là phương mà chúng tôi sẽ tiến hành để tiếp cận và giải quyết vấn đề này: - Tìm hiểu các công trình liên quan tới phân tích cảm xúc dựa vào mô hình RNTN [1][2]. - Tìm hiểu và xây dựng RNTN cho Tiếng Việt.
- Hiện thực lại hệ thống để phân tích cảm xúc cho các nhận xét của khách hàng được lấy từ một trong những trang bán hàng trực tuyến lớn nhất của Việt Nam đó là tiki. Cấu trúc của luận văn Phần còn lại của luận văn sẽ được tổ chức như sau: - Chương 2 sẽ giới thiệu về những công trình liên quan. Trong chương này chủ yếu chúng tôi giới thiệu lại định nghĩa của bài toán cho tiếng Việt cũng như các mô hình dự báo, hàm mục tiêu, giải thuật huấn luyện mô hình dự báo cảm xúc và sơ lược quá trình xử lý ngôn ngữ của CoreNLP - Chương 3 sẽ đi vào chi quyết quá trình phân tích cũng như hiện thực cơ sở lý thuyết đã trình bày trong chương 2 vào CoreNLP để có thể dự báo cho tiếng Việt gồm: Cách thức tiền xử lý dữ liệu, loại bỏ những thành phần nhiễu cho bộ phân tích cú pháp và bộ phân tích cảm xúc Cách cập nhật bộ tách từ để có thể tách từ chính xác cho tiếng Việt Phương pháp để huấn luyện lại bộ phân tích cú pháp và bộ phân tích cảm xúc nhằm dự báo cảm xúc cho tiếng Việt. Đề xuất cơ sở dữ liệu và các bước tiến hành để tạo ngân hàng cây cảm xúc cho tiếng Việt.
Hướng đẫn cách chỉnh sửa giải thuật huấn luyện của bộ phân tích cảm xúc để có thể dự báo cho khía cạnh của sản phẩm - Chương 4 sẽ đưa chúng ta đi sâu vào phân tích, thống kê dữ liệu huấn luyện và ngân hành cây cảm xúc cho tiếng Việt. Đồng thời tiến hành thực nghiệm và phân tích kết quả của quá trình thực nghiệm. - Cuối cùng là chương 5 sẽ tổng kết toàn bộ lại những điều đã làm được và chưa làm được của luận văn cũng như đưa ra hướng phát triển tiếp theo. 4 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 1.
Định nghĩa vấn đề Trước khi đi vào chi tiết chúng ta sẽ đi qua phần định nghĩa của bài toán để nắm bắt được mục tiêu và vấn đề mà đề tài này hướng đến để giải quyết. Định nghĩa bài toán trong đề tài này được chúng tôi mở rộng từ định nghĩa của [2] như sau: “Cho trước tập câu L = {l1 , l2 , l3, .} trong đó a0 là khía cạnh đặc biệt mang nghĩa đại diện cho toàn bộ câu và cảm xúc S = {s1, s2, .}, xác định tập hợp các cặp khía cạnh - cảm xúc {(a0i , s2i ), (a1i , s1i ), (a2i , s2i).} cho từng câu li”. Bài toán này được giải bằng Recursive Neural Model. Ý tưởng cơ bản của mô hình này là mỗi một cụm từ (phrase) hay một câu sẽ được phân tích thành một cây nhị phân với mỗi một nút lá đại diện cho một từ, còn nút trong của cây này thể hiện sự kết hợp của những từ trong câu theo một cách nào đó.
Mỗi một từ sẽ được biểu diễn bằng một vector d-chiều và giá trị của chúng sẽ được khởi tạo một cách ngẫu nhiên hoặc từ tập huấn luyện trước. Những vector này được xếp vào ma trận L, gọi là ma trận từ vựng, sẽ được học cùng với mô hình. Chúng tôi sẽ tóm tắt về từng mô hình của Recursive Neural Model và sơ lược về quá trình phân tích cảm xúc của CoreNLP ở phần dưới đây. Recursive Neural Network (RNN) Đây là mô hình đầu tiên và cơ bản nhất.
Do vậy việc tính toán cũng khá đơn giản. Dưới đây là công thức để tính toán cho từng nút trong hình 2. W là ma trận sẽ được học. Những vector này sẽ được tính toán theo cách từ dưới lên (bottom-up) cho tới khi nào tới nút gốc thì ngừng.
5 - p2 = g(a,p1) ++ p1 = g(b,c) 0 + 0 … không đẹp lắm … a b c Hình 2.1 – Hình minh họa cách tính trên cây trong mô hình RNN 3. Matrix-Vector RNN (MV-RNN) Đây là mô hình cải tiến của mô hình trên (RNN). Thay vì mỗi một nút chỉ có một vector để diễn tả ngữ nghĩa của từ đó trong văn phạm thì bây giờ trong mô hình MV-RNN sẽ dùng thêm một ma trân có kích thước kết hợp với một vector d- chiều để biểu diễn cho một từ. Ma trận này được khởi tạo bằng cách dùng ma trận đơn vị cộng thêm nhiễu Gaussian.
Lấy ví dụ trong hình 2.1, cho A, B, C, P1, P2 là các ma trận biểu diễn ở từng nút có vector tương ứng là a, b, c, p1, p2. Dưới đây là công thức tính toán cho vector p1 và ma trận P1 trong hình minh họa 2. ( [ ]) ( [ ]) Trong đó f và W là những tham số đã được định nghĩa trong mô hình RNN. Ma trận WM là ma trận cần học cùng với A, B, C.
Việc tính các vector còn lại cũng tương như trên. Recursive Neural Tensor Network (RNTN) Một thử thách của mô hình MV-RNN là số lượng ma trận và vector sẽ tăng lên tuyến tính cùng với số lượng từ trong bộ từ điển của chúng ta. Giải quyết vấn đề này, một mô hình mới được đưa ra đó là RNTN [1]. 6 Mô hình RNTN dùng một tensor duy nhất được định nghĩa bởi multiple bilinear forms để thay thế cho toàn bộ những ma trận của mô hình MV-RNN.
Chúng ta tiếp tục lấy hình 2. Việc tính vector p1, p2 sẽ theo công thức như sau: [ ] ([ ] [ ] [ ]) [ ] ([ ] [ ] [ ]) Trong đó V là một tensor được định nghĩa bởi multiple bilinear forms. Mỗi một phần của tensor là ma trận biểu diễn một ngữ nghĩa phức hợp nào đó của các từ với nhau theo từng chiều. Hàm mục tiêu Các phần trên ta chỉ mới giới thiệu về cách tính giá trị của các nút vector chứ chưa bàn về hàm mục tiêu, trong phần này chúng ta sẽ mô tả chi tiết hơn.
Trước khi nói về hàm mục tiêu, ta thấy rằng chúng ta chỉ mới có giá trị của nút vector và giá trị này chưa nói lên được làm sao để phân loại nút này sẽ thuộc lớp cảm xúc nào. Vì vậy ta cần một công thức để phân loại cảm xúc: ( ) Trong đó, Ws là ma trận phân loại, là vector dự báo (predicted vector) tại nút gốc của một cụm từ hay câu i, C là số lượng lớp cảm xúc cần phân loại. Ngoài ra ta còn định nghĩa thêm một vector mục tiêu (target distribution vector). Vector này có trị là 1 tại chiều ứng với nhãn đúng thực sự của cụm từ hay câu i và ngược lại sẽ là 0.
Mục tiêu của chúng ta là tối thiểu khoảng cách giữa hai phân bố vector này.