1. Trang chủ
  2. » Luận Văn - Báo Cáo

CNN ỨNG DỤNG vào bài TOÁN PHÂN TÍCH cảm xúc TRONG NLP

36 5 0

Đ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 36
Dung lượng 814,97 KB

Nội dung

Đề tài CNN ỨNG DỤNG VÀO BÀI TOÁN PHÂN TÍCH CẢM XÚC TRONG NLP. Trong thời đại số hóa hiện nay, việc thu thập và xử lý dữ liệu trở thành một thách thức lớn đối với các nhà nghiên cứu và các doanh nghiệp. Trong số đó, bài toán phân tích cảm xúc trên các nền tảng mạng xã hội như Twitter, Facebook, Instagram đang trở thành một trong những bài toán quan trọng và có nhiều ứng dụng thực tiễn. Để giải quyết bài toán này, các nhà nghiên cứu đã áp dụng nhiều kỹ thuật và phương pháp khác nhau, trong đó mạng neural tích chập (CNN) là một trong những phương pháp nổi bật và được sử dụng rộng rãi.Mạng neural tích chập là một dạng của mạng neural sử dụng một tầng tích chập để học các đặc trưng trên dữ liệu đầu vào. CNN đã được chứng minh là hiệu quả trong việc xử lý hình ảnh, âm thanh và văn bản. Với bài toán phân tích cảm xúc, CNN có thể học được các đặc trưng từ ngữ cảm xúc trong câu như từ loại, ngữ pháp, ngữ nghĩa, và sử dụng chúng để dự đoán cảm xúc của câu đó.Trong báo cáo này, chúng tôi sẽ trình bày chi tiết về việc sử dụng mạng neural tích chập trong bài toán phân tích cảm xúc. Chúng tôi sẽ đề xuất một kiến trúc mạng CNN đơn giản và hiệu quả để giải quyết bài toán này, và đánh giá độ chính xác của mô hình được đề xuất trên các tập dữ liệu phổ biến. Nhằm cho ra kết quả đánh giá có độ chính xác gần bằng với kết quả ban đầu đã được đánh giá bởi con người. Phạm vi nghiên cứu tập trung vào xây dựng các mô hình mạng neural trên Tensorflow và Python nhằm hiện thực hoá mô hình được nghiên cứu. Từ đó đánh giá độ chính xác của từng mô hình mạng neural được nghiên cứu dựa trên các dữ liệu thử nghiệm.

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG  BÁO CÁO THỰC TẬP CƠ SỞ Đề tài: CNN ỨNG DỤNG VÀO BÀI TỐN PHÂN TÍCH CẢM XÚC TRONG NLP Sinh viên thực : Ngô Minh Hiếu Lớp : CNTT K19 CLC Giáo viên hướng dẫn : TS.Hà Thị Thanh Thái Nguyên, 11 Tháng 04 năm 2023 MỤC LỤC LỜI MỞ ĐẦU .4 CHƯƠNG : TỔNG QUAN VỀ BÀI TOÁN PHÂN TÍCH CẢM XÚC TRONG XỬ LÝ NGƠN NGỮ TỰ NHIÊN Phân tích cảm xúc xử lý ngơn ngữ tự nhiên gì? Ứng dụng phân tích cảm xúc văn Bài tốn phân tích cảm xúc .7 Các phương pháp giải toán phân tích cảm xúc CHƯƠNG : MƠ HÌNH MẠNG NƠ-RON TÍCH CHẬP (CNN - CONVOLUTIONAL NEURAL NETWORK) TRONG BÀI TỐN PHÂN TÍCH CẢM XÚC 12 Tổng quan mạng nơ-ron tích chập (CNN) 12 Kiến trúc mạng nơ-ron tích chập (CNN) 12 Mô hình mạng nơ-ron tích chập (CNN) 14 Ứng dụng mơ hình CNN tốn phân tích cảm xúc 20 Ưu điểm nhược điểm mơ hình CNN 20 CHƯƠNG : XÂY DỰNG CHƯƠNG TRÌNH 22 Cơ sở liệu 22 Cài đặt công cụ thiết lập trường 22 Quá trình huấn luyện .24 3.1 Tải lên tập liệu IMDB .24 3.2 Kiểm tra liệu 25 3.3 Trực quan liệu 25 3.4 Tiền xử lý văn 26 3.5 Xây dựng mơ hình .29 3.6 Biên dịch chương trình đào tạo mơ hình 32 3.7 Dự đốn đánh giá mơ hình 32 3.8 Kết đào tạo .33 KẾT LUẬN 34 TÀI LIỆU THAM KHẢO 36 MỤC LỤC HÌNH ẢNH Hình 1: Tích cực hay tiêu cực Hình 2: Phân tích cảm xúc từ văn Hình 3: Phương pháp Deep Learning Neural Hình 4: Phương pháp kết hợp Rule-bases 10 Hình 5: Minh hoạ lớp tích chập 13 Hình 6: Minh hoạ lớp gộp .13 Hình 7: Minh hoạ lớp đầy đủ kết nối 14 Hình 9: Cách nhân tích chập ma trận input với lọc 16 Hình 10: Hàm softmax 18 Hình 11: Minh hoạ ma trận max-pooling CNN 19 Hình 12: Tập liệu IMDB 24 Hình 13: Gán nhãn số cho sentiment 26 Hình 14: Số lượng mục tiêu đánh giá .26 Hình 15: Kết đánh giá ngẫu nhiên 33 LỜI MỞ ĐẦU Trong thời đại số hóa nay, việc thu thập xử lý liệu trở thành thách thức lớn nhà nghiên cứu doanh nghiệp Trong số đó, tốn phân tích cảm xúc tảng mạng xã hội Twitter, Facebook, Instagram trở thành tốn quan trọng có nhiều ứng dụng thực tiễn Để giải toán này, nhà nghiên cứu áp dụng nhiều kỹ thuật phương pháp khác nhau, mạng neural tích chập (CNN) phương pháp bật sử dụng rộng rãi Mạng neural tích chập dạng mạng neural sử dụng tầng tích chập để học đặc trưng liệu đầu vào CNN chứng minh hiệu việc xử lý hình ảnh, âm văn Với tốn phân tích cảm xúc, CNN học đặc trưng từ ngữ cảm xúc câu từ loại, ngữ pháp, ngữ nghĩa, sử dụng chúng để dự đoán cảm xúc câu Trong báo cáo này, chúng tơi trình bày chi tiết việc sử dụng mạng neural tích chập tốn phân tích cảm xúc Chúng tơi đề xuất kiến trúc mạng CNN đơn giản hiệu để giải toán này, đánh giá độ xác mơ hình đề xuất tập liệu phổ biến Nhằm cho kết đánh giá có độ xác gần với kết ban đầu đánh giá người Phạm vi nghiên cứu tập trung vào xây dựng mơ hình mạng neural Tensorflow Python nhằm thực hố mơ hình nghiên cứu Từ đánh giá độ xác mơ hình mạng neural nghiên cứu dựa liệu thử nghiệm CHƯƠNG : TỔNG QUAN VỀ BÀI TỐN PHÂN TÍCH CẢM XÚC TRONG XỬ LÝ NGƠN NGỮ TỰ NHIÊN Phân tích cảm xúc xử lý ngơn ngữ tự nhiên gì? Hình 1: Tích cực hay tiêu cực Phân tích cảm xúc (Sentiment analysis) nhằm phát thái độ mang tính lâu dài, màu sắc tình cảm, khuynh hướng niềm tin vào đối tượng hay người Phân tích cảm xúc lĩnh vực xử lý ngôn ngữ tự nhiên, sử dụng kỹ thuật NLP để rút trích thơng tin cảm xúc người từ câu nói hay văn bản, từ giúp đánh giá cảm xúc người tích cực hay tiêu cực Dựa vào mạng xã hội, sử dụng kỹ thuật NLP rút trích thơng tin từ thống kê mức độ quan tâm người dùng kiện thông tin chia sẻ, giúp việc tổng hợp đánh giá người sử dụng cho công ty tổ chức tốt Hình 2: Phân tích cảm xúc từ văn Các vấn đề xung quanh việc phân tích cảm xúc: a Nguồn gốc cảm xúc b Mục tiêu cảm xúc c Các loại cảm xúc: thích, yêu, ghét, đánh giá, mong mỏi… d Về mức độ cảm xúc: tích cực, tiêu cực, trung tính e Văn hàm chứa cảm xúc: câu hay đoạn văn Bài tốn phân tích cảm xúc thuộc dạng tốn phân tích ngữ nghĩa văn Vì vậy, ta cần phải xây dựng mơ hình để hiểu ý nghĩa câu văn, đoạn văn để định xem câu văn đoạn văn mang màu sắc cảm xúc chủ đạo Phát biểu theo góc nhìn máy học (Machine Learning) phân tích cảm xúc tốn phân lớp cảm xúc dựa văn ngôn ngữ tự nhiên Đầu vào toán câu hay đoạn văn bản, đầu giá trị xác suất (điểm số) N lớp cảm xúc mà ta cần xác định Trong loại tốn phân tích cảm xúc phân thành tốn có độ khó khác sau: Đơn giản: Phân tích cảm xúc (thái độ) văn thành lớp: tích cực (positive) tiêu cực (negative) Phức tạp hơn: Xếp hạng cảm xúc (thái độ) văn từ đến Khó: Phát mục tiêu, nguồn gốc cảm xúc (thái độ) loại cảm xúc (thái độ) phức tạp Hiện cộng đồng khoa học giải tốt toán phân tích cảm xúc cấp độ đơn giản, tức phân tích cảm xúc với lớp cảm xúc tiêu cực tích cực với độ xác 85% Các cấp độ khó chúng tơi chưa biết có cơng trình giải hay chưa Nếu biết cơng trình giới thiệu cho Ứng dụng phân tích cảm xúc văn Phân tích cảm xúc văn áp dụng rộng rãi nhiều lĩnh vực khác Dưới số ứng dụng phổ biến phân tích cảm xúc văn bản:  Tiếp thị quảng cáo: Phân tích cảm xúc văn giúp doanh nghiệp đánh giá hiệu chiến dịch tiếp thị quảng cáo Các công cụ phân tích cảm xúc xác định hài lòng khách hàng với sản phẩm dịch vụ công ty đưa đề xuất để cải thiện trải nghiệm khách hàng  Đánh giá sản phẩm: Phân tích cảm xúc văn giúp công ty đánh giá hiệu sản phẩm họ thị trường Các công cụ phân tích cảm xúc phát vấn đề sản phẩm đưa đề xuất để cải thiện chất lượng sản phẩm  Dịch vụ khách hàng: Phân tích cảm xúc văn giúp doanh nghiệp phát giải vấn đề khách hàng Các công cụ phân tích cảm xúc phát vấn đề khách hàng gặp phải đưa giải pháp để giải vấn đề  Tìm kiếm đánh giá thơng tin: Phân tích cảm xúc văn giúp người dùng tìm kiếm đánh giá thông tin mạng Các công cụ phân tích cảm xúc giúp người dùng đánh giá tính xác thực viết tin tức mạng  Y tế: Phân tích cảm xúc văn sử dụng để phát giải vấn đề sức khỏe Các công cụ phân tích cảm xúc phát vấn đề bệnh nhân đưa giải pháp để cải thiện chất lượng chăm sóc sức khỏe Bài tốn phân tích cảm xúc Bài tốn phân tích cảm xúc (sentiment analysis) xử lý ngơn ngữ tự nhiên (NLP) trình phân loại đoạn văn thành lớp cảm xúc khác nhau, chẳng hạn tích cực, tiêu cực trung lập Mục đích tốn phân tích cảm xúc giúp máy tính có khả hiểu ý nghĩa đoạn văn mà người viết phản hồi phù hợp Ví dụ, muốn phân tích cảm xúc khách hàng sản phẩm cơng ty, sử dụng tốn phân tích cảm xúc để tự động phân loại bình luận khách hàng thành lớp tích cực, tiêu cực trung lập Kết từ tốn giúp cho nhà quản lý tiếp cận vấn đề phản hồi khách hàng cách hiệu Phân tích cảm xúc NLP toán phức tạp nhiều yếu tố ảnh hưởng đến cảm xúc đoạn văn bản, bao gồm ngữ pháp, cú pháp, ngữ nghĩa, ngữ cảnh kiểu văn phong tác giả Để giải toán này, nhà nghiên cứu phát triển nhiều kỹ thuật mô hình học máy Naive Bayes, SVM, mạng neural, kết hợp kỹ thuật tiền xử lý liệu để đạt kết xác Các phương pháp giải tốn phân tích cảm xúc Hiện nay, tốn phân tích cảm xúc có số phương pháp giải sau:  Phương pháp dựa từ điển từ thể cảm xúc: Theo đó, Phương pháp có điểm hạn chế thứ tự từ bị bỏ qua thông tin quan trọng bị Độ xác mơ hình phụ thuộc vào độ tốt từ điển từ cảm xúc Nhưng lại có ưu điểm dễ thực hiện, chi phí tính tốn nhanh, công sức việc xây dựng từ điển từ cảm xúc mà  Phương pháp Deep Learning Neural Network: Hình 3: Phương pháp Deep Learning Neural Trong năm gần đây, việc phát triển tốc độ xử lý CPU, GPU giảm chi phí phần cứng tạo điều kiện thuận lợi cho phương pháp học sâu Deep Learning Neural Network phát triển mạnh mẽ Trong lĩnh vực phân tích cảm xúc, mơ hình học sâu Recurrent Neural Network (RNN) với biến thể Long Short Term Memory Neural Network (LSTMs) sử dụng rộng rãi cho kết xác 85% Mơ hình sử dụng mơ hình vector hóa từ Word2Vector với kiến trúc Continuous Bag-of-Words (CBOW) xử lý đầu vào câu hay đoạn văn Để thực mơ hình cần có nhiều liệu văn để tạo Word2Vector CBOW chất lượng cao liệu gán nhãn lớn để huấn luyện, xác minh kiểm tra mơ hình học có giám sát LSTMs Ngồi ra, mơ hình CNN sử dụng tốn phân tích cảm xúc Mơ hình sử dụng lớp nhúng để biểu diễn từ với vectơ đặc trưng, lớp tích chập để tìm đặc trưng câu lớp đầy đủ kết nối để phân loại câu vào lớp cảm xúc khác Mơ hình địi hỏi có nhiều liệu gán nhãn để huấn luyện đánh giá chất lượng mơ hình Tuy nhiên, ưu điểm CNN tốc độ huấn luyện dự đoán nhanh so với RNN với LSTM  Phương pháp kết hợp Rule-bases (dựa luật) Corpus-bases (dựa ngữ liệu): Hình 4: Phương pháp kết hợp Rule-bases Tiêu biểu cho phương pháp cơng trình nghiên cứu Richard Socher thuộc trường đại học Stanford Phương pháp kết hợp sử dụng mơ hình Deep Learning Recursive Neural Network với hệ tri thức chuyên gia xử lý ngôn ngữ tự nhiên gọi Sentiment Treebank Sentiment Tree phân tích cú pháp câu văn, nút kèm theo trọng số cảm xúc là: tiêu cực (very negative), tiêu cực (negative), trung tính (neutral), tích cực (positive) tích cực (very positive) Theo đó, trọng số thuộc nhãn lớn định nhãn tồn cục nút, hình Độ xác mơ hình dự đốn cảm xúc cho câu đơn 85,4% 10 5.2 Nhược điểm Mặc dù mơ hình CNN đạt nhiều thành cơng tốn phân tích cảm xúc, nhiên có số nhược điểm cần lưu ý:  Thiếu khả xử lý ngữ nghĩa Mô hình CNN tập trung vào việc xử lý ngữ pháp văn mà khơng có khả xử lý ngữ nghĩa Do đó, bỏ qua hiểu nhầm ý nghĩa số từ chúng có nhiều nghĩa khác Ví dụ: từ "cool" tiếng Anh có nghĩa "mát mẻ" "thật tuyệt", nhiên mơ hình CNN hiểu nhầm ý nghĩa từ số trường hợp  Không thể xử lý văn dài Mơ hình CNN có khả xử lý văn ngắn, nhiên gặp khó khăn xử lý văn dài Khi đó, mơ hình tập trung vào phần đầu văn bỏ qua phần cuối, làm thông tin quan trọng văn  Yêu cầu liệu đầu vào lớn Mơ hình CNN địi hỏi phải có liệu đầu vào lớn để học đặc trưng văn đưa dự đốn xác Việc thu thập chuẩn bị liệu đầu vào đòi hỏi đầu tư thời gian chi phí để đạt hiệu tốt mơ hình CHƯƠNG : XÂY DỰNG CHƯƠNG TRÌNH Cơ sở liệu  Bộ liệu IMDB tải từ trang https://www.kaggle.com/datasets/lakshmi25npathi/imdb-dataset-of-50kmovie-reviews?select=IMDB+Dataset.csv Bộ liệu IMDB có 50.000 đánh giá phim để xử lý ngơn ngữ tự nhiên phân tích Văn Đây liệu để phân loại tình cảm nhị phân chứa nhiều liệu đáng kể so với liệu điểm chuẩn trước Chúng cung cấp gồm 25.000 đánh giá phim có tính phân cực cao để đào tạo 25.000 để thử nghiệm Có thêm liệu chưa gắn nhãn để sử dụng Văn thô định dạng túi từ xử lý cung cấp Vì vậy, dự đốn số lượng đánh giá tích cực tiêu cực cách sử dụng thuật toán phân loại học sâu 22  Bộ liệu “GloVe-6B-100d” tải từ trang https://www.kaggle.com/datasets/lienchibaob1812254/glove6b100d "GloVe-6B-100d" tập hợp vector từ tạo từ liệu "Global Vectors for Word Representation (GloVe)" Đây phương pháp biểu diễn từ dựa ma trận trọng số, giúp ánh xạ từ vào không gian vector để dễ dàng xử lý tính tốn Trong trường hợp này, "GloVe-6B-100d" đề cập đến tập hợp vector từ có kích thước 100 chiều, huấn luyện tập liệu lớn gồm tỷ từ tiếng Anh Bộ GloVe thường sử dụng làm phương tiện biểu diễn từ tác vụ xử lý ngôn ngữ tự nhiên phân loại cảm xúc, phân tích ý kiến, dịch máy nhiều ứng dụng khác Cài đặt công cụ thiết lập môi trường Google Colaboratory (gọi tắt Google Colab hay Colab) sản phẩm Google Research Colab dựa Jupyter Notebook, người dùng viết thực thi đoạn mã python thơng qua trình duyệt đặc biệt phù hợp với data analysis, machine learning giáo dục Jupyter Notebook công cụ mã nguồn mở cho phép người dùng tạo chia sẻ tài liệu tương tác chứa mã, văn bản, cơng thức tốn học, hình ảnh đồ thị Jupyter Notebook cho phép người dùng thực thi mã khối (cell) một, điều hữu ích cho nhiệm vụ phân tích liệu, học máy khai thác liệu Cài đặt thư viện cần thiết: import numpy as np import pandas as pd from tensorflow.keras.datasets import imdb from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout, Activation, Fl atten 23 from tensorflow.keras.layers import Embedding, Conv1D, GlobalM axPooling1D from tensorflow.keras.preprocessing import sequence import matplotlib.pyplot as plt import seaborn as sns import nltk from keras.preprocessing.text import Tokenizer from numpy import array,asarray,zeros from bs4 import BeautifulSoup import re from sklearn.model_selection import train_test_split from tensorflow.keras.preprocessing.sequence import pad_sequen ces from sklearn.metrics import classification_report,confusion_matrix , accuracy_score import tensorflow as tf tf.random.set_seed(4) Quá trình huấn luyện 3.1 Tải lên tập liệu IMDB import pandas as pd df = pd.read_csv("/content/IMDB Dataset.csv", error_bad_lines=Fal se) 24 Hình 12: Tập liệu IMDB 3.2 Kiểm tra liệu #Kiểm tra giá trị bị thiếu null_values = df.isnull().sum() null_values.index[0] print('Có {} giá trị bị thiếu cho {} {} giá trị bị thiếu cho {}.'.for mat(null_values[0],null_values.index[0],null_values[1],null_value.in dex[1])) Kết có giá trị bị thiếu cho review giá trị bị thiếu cho sentiment 25 # Kiểm tra giá trị trùng lặp num_duplicates = df.duplicated().sum() print('Có {} đánh giá trùng lặp tập liệu'.format(num_d uplicates)) Có 418 đánh giá trùng lặp tập liệu # Bỏ đánh giá trùng lặp df.drop_duplicates(inplace = True) print('Tập liệu chứa {} hàng {} cột sau loại bỏ trùng lặp' format(df.shape[0],df.shape[1])) Tập liệu chứa 49582 hàng cột sau loại bỏ trùng lặp 3.3 Trực quan liệu - Gán nhãn số cho sentiment df.sentiment = [ if each == "positive" else for each in df.sent iment] Hình 13: Gán nhãn số cho sentiment 26 - Số lượng mục tiêu cho đánh giá: gồm 25000 liệu positive(1) 25000 liệu negative(0): Hình 14: Số lượng mục tiêu đánh giá 3.4 Tiền xử lý văn Đối với câu  Xoá thẻ HTML Sử dụng thư viện BeautifulSoup Python để phân tích cú pháp HTML lấy nội dung văn không chứa thẻ HTML soup = BeautifulSoup(ex1, "html.parser") ex1 = soup.get_text() ex1  Xố kí tự đặc biệt ex1 = re.sub('\[[^]]*\]', ' ',ex1) ex1 = re.sub('[^a-zA-Z]', ' ',ex1) 27 ex1 Hàm re.sub() hàm sử dụng để thay xóa chuỗi văn dựa biểu thức quy Hàm thuộc thư viện re Python, cho phép thực hoạt động liên quan đến biểu thức quy.Vì hầu hết lần nhúng không cung cấp giá trị vectơ cho dấu chấm câu ký tự đặc biệt khác, nên loại bỏ ký tự đặc biệt liệu văn  Chuyển qua từ thường(LowerCase) Sử dụng hàm lower ( ) dùng để chuyển đổi chuỗi văn thành dạng chữ thường ex1 = ex1.lower() ex1 Kết từ in hoa chuyển từ thường  Tách từ (split) ex1 = ex1.split() ex1 Kết câu tách thành từ riêng biệt  Xử lý từ dừng (stopword) ex1 = [word for word in ex1 if not word in set(stopwords.words('english')) ] ex1 Dùng hàm set(stopwords.words('english')) để tạo set chứa từ dừng tiếng Anh Sau đó, dùng vịng lặp for để duyệt qua từ danh sách ex1, kiểm tra xem từ có thuộc set từ dừng hay khơng Nếu từ khơng thuộc set từ dừng, giữ lại danh sách kết quả, tạo thành biểu thức [word for word in ex1 ] Ví dụ, ex1 danh sách từ sau: ['this', 'is', 'a', 'sample', 'text'], set từ dừng tiếng Anh chứa từ ['a', 'an', 'the', 'in', 'on', ], kết trả danh sách ['sample', 'text'], bỏ qua từ this, is, a 28  Sau tiền xử lý cho tập liệu imdb_train = [] for i in range(x_train.shape[0]): soup = BeautifulSoup(x_train.iloc[i], "html.parser") review = soup.get_text() review = re.sub('\[[^]]*\]', ' ', review) review = re.sub('[^a-zA-Z]', ' ', review) review = review.lower() review = review.split() imdb_train.append(review) imdb_test= [] for i in range(x_train.shape[0]): soup = BeautifulSoup(x_train.iloc[i], "html.parser") review = soup.get_text() review = re.sub('\[[^]]*\]', ' ', review) review = re.sub('[^a-zA-Z]', ' ', review) review = review.lower() review = review.split() imdb_test.append(review) 29 3.5 Xây dựng mơ hình - Khởi tạo Tokenizer với tham số num_words=5000 để định có 5000 từ phổ biến tập liệu sử dụng Sử dụng phương thức fit_on_texts() để khớp Tokenizer với tập liệu huấn luyện x_train, tức tạo từ điển từ xuất tập liệu tokenizer = Tokenizer(num_words=5000) tokenizer.fit_on_texts(x_train) - Sau vecto hố nó: Sử dụng phương thức texts_to_sequences() để chuyển đổi tập liệu x_train x_test thành chuỗi số nguyên tương ứng với từ từ điển x_train = tokenizer.texts_to_sequences(x_train) x_test = tokenizer.texts_to_sequences(x_test) - Tiếp ta đặt kích thước tối đa danh sách 100 Nếu danh sách có maxlength > 100 bị cắt bớt danh sách có maxlength < 100 thêm có độ dài tối đa = maxlength Q trình gọi padding Đoạn code tìm kích thước vocabulary sau perfom padding X_train X_test , tokenizer.word_index vocabulary_size = len(tokenizer.word_index) + maxlength = 100 x_train_padding = pad_sequences(x_train, padding="post",max len=maxlength) x_test_padding = pad_sequences(x_test, padding="post",maxle n=maxlength) # Kiểm tra danh sách ngẫu nhiên X_train (các câu trước đ 30 ó) có độ dài 100 len(x_train[3]) - Tiếp theo tạo ma trận feature mà cụ thể công cụ sử dụng GloVe Embeddings: tudien_duoc_nhung = dict() glove_file = open('/content/glove.6B.100d.txt',encoding='utf-8') for line in glove_file: record = line.split() word = record[0] kich_thuoc = asarray(record[1:], dtype = "float32") tudien_duoc_nhung[word] = kich_thuoc glove_file.close() 1.Tạo từ điển trống tudien_duoc_nhung 2.Tách từ giá trị nhúng tương ứng từ dòng Thêm từ giá trị nhúng tương ứng vào từ điển tudien_duoc_nhung - Kế tiếp, tạo ma trận nhúng(matrix embedding) Ở đây, số hàng tương ứng với mục từ kho ngữ liệu Ma trận chứa embedding từ GloVe cho từ(word) kho liệu tơi có được.Ok! ma_tran_nhung = zeros((vocabulary_size,100))for word, index in tokenizer.word_index.items(): vecto_nhung = tudien_duoc_nhung.get(word) if vecto_nhung is not None: ma_tran_nhung[index] = vecto_nhung 31 - Mơ hình CNN mo_hinh = Sequential() lop_nhung = Embedding(vocabulary_size, 100, weights = [ma_tran_ nhung],input_length=maxlength,trainable=False) mo_hinh.add(lop_nhung) mo_hinh.add(Conv1D(128, 2, activation='relu')) mo_hinh.add(Conv1D(128, 3, activation='relu')) mo_hinh.add(Conv1D(128, 4, activation='relu')) mo_hinh.add(GlobalMaxPooling1D()) mo_hinh.add(Dropout(0.2)), mo_hinh.add(Flatten()) mo_hinh.add(Dense(64, activation='tanh')) mo_hinh.add(Dropout(0.5)) mo_hinh.add(Dense(2, activation='softmax')) mo_hinh.add(Dense(1, activation='sigmoid')) 3.6 Biên dịch chương trình đào tạo mơ hình mo_hinh.compile(optimizer = 'adam', loss = 'categorical_crossentr opy',metrics = ['acc']) mo_hinh.compile(optimizer = 'adam', loss = 'binary_crossentropy ',metrics = ['acc']) print(mo_hinh.summary()) Trong phần biên dịch cần truyền vào đối số như: - optimizer: Trình tối ưu hóa triển khai thuật tốn optimizer - Hàm mát - loss funtion: Tính tốn mát chéo nhãn dự đoán - Metrics: định hàm đánh giá Accuraty Thực train mơ hình 10 epochs: history = mo_hinh.fit(x_train_padding, y_train, batch_size=128,epo 32 chs = 10, verbose=1, validation_split=0.2) 3.7 Dự đoán đánh giá mơ hình Dự đốn mơ hình du_doan_y = mo_hinh.predict(x_test_padding) du_doan_y = np.round(du_doan_y).astype(int) print(classification_report(y_test,du_doan_y)) Kết là: precision 0.77 0.82 recall 0.83 0.75 f1-score 0.80 0.78 Đánh giá mơ hình print("Test Score: {:.2%}".format(accuracy_score[0])) print("Test Accuracy: {:.2%}".format(accuracy_score[1])) 3.8 Kết đào tạo ▪ Độ xác Test Accuracy đạt:79.15% ▪ Độ xác Test Score đạt: 48.13% Đánh giá: - Mơ hình CNN tốn phân tích cảm xúc với độ xác (accuracy) 79.15% coi mơ hình tốt.Tuy nhiên, để đánh giá xác mơ hình này, cần xem xét yếu tố khác độ xác tập train tập validation, số khác, so sánh với mơ hình khác khả áp dụng thực tế ▪ Dự đoán số câu review: Quy ước:  Dự đoán ngẫu nhiên gần => Đánh giá tích cực(Positive) 33  Dự đốn ngẫu nhiên = => Đánh giá tiêu cực(Negative) Sau tạo đánh giá ngẫu nhiên kết đạt Hình 15: Kết đánh giá ngẫu nhiên Đánh giá ngẫu nhiên cho cho kết gần 1, có nghĩa là đánh giá TÍCH CỰC(POSITIVE) cho review đánh giá từ người xem KẾT LUẬN Trong thời đại số hóa, liệu ngày thu thập tích trữ internet, đặc biệt tảng mạng xã hội Do đó, việc phân tích cảm xúc từ liệu trở thành vấn đề quan trọng lĩnh vực quảng cáo, trị, văn hóa, việc phát triển sản phẩm dịch vụ Vì vậy, phương pháp phân tích cảm xúc giúp cho nhà quản lý hiểu rõ đối tượng khách hàng phản hồi nhanh chóng với thay đổi tình hình thị trường Trong tốn phân tích cảm xúc, mạng neural tích chập (CNN) chứng minh phương pháp hiệu CNN loại mơ hình deep learning, thiết kế để trích xuất đặc trưng từ liệu đầu vào thơng qua lớp tích chập pooling Sau đó, đặc trưng đưa vào lớp kết nối đầy đủ để phân loại liệu Một ứng dụng tiêu biểu CNN phân tích cảm xúc xử lý liệu ngơn ngữ tự nhiên Trong trình xử lý văn bản, CNN học cách phân tích cú pháp trích xuất đặc trưng từ văn bản, chẳng hạn xuất từ khóa hay biểu ngơn ngữ cảm xúc Nhờ đó, CNN phân loại văn theo loại cảm xúc khác nhau, từ tích cực đến tiêu cực từ vui vẻ đến buồn bã Ngồi ra, CNN áp dụng xử lý hình ảnh để phân 34 tích cảm xúc dựa đặc trưng hình ảnh Chẳng hạn, CNN học cách nhận diện biểu cảm khuôn mặt hành động thể cảm xúc, việc cười, khóc, nhăn mặt Nhờ đó, CNN phân loại hình ảnh theo loại cảm xúc khác nhau, từ hạnh phúc đến buồn bã hay từ u thích đến khơng thích Tuy nhiên, để đạt kết tốt nhất, việc sử dụng CNN phân tích cảm xúc địi hỏi số yếu tố quan trọng như: Dữ liệu đầu vào phải chuẩn bị tốt, bao gồm việc tiền xử lý, chuẩn hóa, tạo vector biểu diễn liệu xác Điều giúp cho CNN trích xuất đặc trưng quan trọng đưa dự đốn xác Thiết kế kiến trúc CNN phù hợp với toán cần giải Một kiến trúc CNN tốt giúp cho mơ hình học đặc trưng quan trọng giảm thiểu chồng chéo lớp Quản lý trình huấn luyện mơ hình Q trình huấn luyện cần phải điều chỉnh cho đủ lượng thời gian để mơ hình học đặc trưng quan trọng mà không bị khớp thiếu khớp với liệu Tóm lại, việc sử dụng mạng neural tích chập (CNN) tốn phân tích cảm xúc phương pháp hiệu sử dụng rộng rãi ứng dụng thực tế Tuy nhiên, để đạt kết tốt nhất, việc chuẩn bị liệu đầu vào, thiết kế kiến trúc CNN, quản lý q trình huấn luyện mơ hình quan trọng Việc nghiên cứu áp dụng kỹ thuật lĩnh vực giúp cho việc phân tích cảm xúc từ liệu ngày cải tiến phát triển 35 TÀI LIỆU THAM KHẢO https://stanford.edu/~shervine/l/vi/teaching/cs-230/cheatsheet-convolutionalneural-networks https://www.kaggle.com/code/aditya6040/7-models-on-imdb-dataset-best-score88-2#CNN-Model https://www.kaggle.com/code/josh24990/deep-learning-for-sentiment-analysistop-25 https://d2l.aivivn.com/chapter_natural-language-processingapplications/sentiment-analysis-cnn_vn.html https://machinelearningcoban.com/2017/02/17/softmax/ https://aclanthology.org/I17-1026.pdf https://bmcmedinformdecismak.biomedcentral.com/articles/10.1186/s12911019-0880-2 https://pdfs.semanticscholar.org/4bde/fc9ba54ce2aed0956a5852ff3b6d3bc63b33 pdf Link code chi tiết: https://github.com/hieupc02/NLP/blob/main/TTCS.ipynb 36

Ngày đăng: 07/05/2023, 11:50

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

TÀI LIỆU LIÊN QUAN

w