TỔNG QUAN VỀ ĐỀ TÀI
Giới thiệu về đề tài
Đề tài "Tìm Hiểu Các Phương Pháp Xác Định Cảm Xúc Trong Văn Bản" nhằm khám phá và phát triển các kỹ thuật xử lý ngôn ngữ tự nhiên (NLP) và học máy để phân tích cảm xúc trong văn bản Sự quan tâm đến cảm xúc con người thông qua văn bản trực tuyến ngày càng tăng, đặc biệt trong các ngành như marketing, dịch vụ khách hàng và nghiên cứu xã hội Đề tài này tập trung vào việc hiểu và xử lý các dữ liệu văn bản phức tạp để rút ra thông tin cảm xúc, từ đó hỗ trợ quyết định và tương tác có ý nghĩa hơn với người dùng.
Trong thời đại số, với lượng lớn dữ liệu văn bản được tạo ra mỗi ngày trên mạng xã hội, diễn đàn, và các trang đánh giá, việc hiểu rõ cảm xúc ẩn chứa trong các bài viết trở nên vô cùng quan trọng Đề tài này không chỉ giới thiệu về cách thức xử lý và phân tích dữ liệu văn bản, mà còn nhấn mạnh tầm quan trọng của việc hiểu và tương tác một cách có ý nghĩa với người dùng dựa trên phân tích cảm xúc của họ.
Khảo sát các ứng dụng hiện tại
Trong bối cảnh công nghệ phát triển nhanh chóng, việc áp dụng trí tuệ nhân tạo (AI) và học máy (Machine Learning) vào xử lý ngôn ngữ tự nhiên (NLP) đã trở nên phổ biến, đặc biệt trong lĩnh vực phân tích cảm xúc Phần này khảo sát các ứng dụng và công cụ hiện tại trong lĩnh vực này, nhằm đánh giá những tiến bộ đã đạt được và xác định các cơ hội cải tiến cho đồ án của em.
1.2.1 Công cụ Phân tích Cảm xúc Trực tuyến:
Nhiều dịch vụ trực tuyến hiện nay cung cấp khả năng phân tích cảm xúc từ văn bản Ví dụ, các công cụ như Sentiment Analyzer của IBM Watson hoặc Google Cloud Natural Language có khả năng xác định tâm trạng và quan điểm từ đoạn văn Những công cụ này sử dụng các thuật toán học sâu và mạng nơ-ron để đạt được độ chính xác cao.
1.2.2 Ứng dụng trong Dịch vụ Khách hàng:
Các doanh nghiệp sử dụng phân tích cảm xúc để cải thiện dịch vụ khách hàng của họ Công nghệ này giúp phân loại phản hồi của khách hàng dựa trên tâm trạng, từ đó hướng dẫn nhân viên hỗ trợ khách hàng tương tác một cách hiệu quả hơn.
1.2.3 Công cụ Phân tích Mạng xã hội
Công cụ phân tích cảm xúc được sử dụng rộng rãi trong việc theo dõi và phân tích dữ liệu từ mạng xã hội Các doanh nghiệp sử dụng công nghệ này để theo dõi quan điểm của khách hàng về sản phẩm hoặc dịch vụ của họ, giúp nắm bắt xu hướng và điều chỉnh chiến lược kinh doanh.
1.2.4 Tích hợp trong Hệ thống Tự động hóa:
Phân tích cảm xúc cũng được tích hợp vào các hệ thống tự động hóa, như chatbots và trợ lý ảo, để cung cấp dịch vụ tương tác tự nhiên và thông minh hơn.
Đối tượng nghiên cứu
● Văn bản từ bình luận trên các nền tảng mạng xã hội như Facebook, Twitter, và Instagram.
● Bài đánh giá sản phẩm và dịch vụ từ các trang thương mại điện tử như Amazon và Shopee.
● Nội dung thảo luận từ các diễn đàn trực tuyến và các nhóm cộng đồng.
● Email và tin nhắn từ các hệ thống truyền thông nội bộ và giao tiếp khách hàng.
● Các loại văn bản khác như blog cá nhân, nhật ký trực tuyến, và tài liệu đăng tải công khai.
CƠ SỞ LÝ THUYẾT
Python
Python là một ngôn ngữ lập trình được sử dụng rộng rãi trong các ứng dụng web, phát triển phần mềm, khoa học dữ liệu và máy học (ML) Các nhà phát triển sử dụng Python vì nó hiệu quả, dễ học và có thể chạy trên nhiều nền tảng khác nhau Phần mềm Python được tải xuống miễn phí, tích hợp tốt với tất cả các loại hệ thống và tăng tốc độ phát triển.
Python có thể được xem là một ngôn ngữ có độ phổ biến cao trong ngành lập trình, nhờ vào những điểm nổi bật sau:
● Có cấu trúc code dễ đọc và dễ hiểu, dù là người mới bắt đầu.
● Có tính ứng dụng rộng rãi.
● Tốc độ xử lý của Python nhanh hơn PHP.
● Cho phép các lập trình viên thực hiện sửa lỗi các đoạn mã một cách trực tiếp.
● Sở hữu lượng lớn các khối cơ sở dữ liệu, phục vụ hiệu quả cho các chương trình mang tính thương mại.
● Nhờ có tính năng đơn giản, nên việc bảo trì các chương trình được tạo ra bởiPython cũng khá đơn giản và nhanh chóng.
● Chứa GUI programming hỗ trợ việc hiển thị ảnh minh họa một cách sống động và chân thật.
● Khi sử dụng Python, các lập trình viên có thể thoải mải thêm và tùy chỉnh các công cụ, để có thể tối đa hiệu quả trong công việc.
Sklearn
Sklearn, hay còn gọi là scikit-learn, là một thư viện học máy phổ biến trong ngôn ngữ lập trình Python Được thiết kế với mục tiêu cung cấp các công cụ dễ sử dụng và hiệu quả cho việc phân tích dữ liệu và học máy, Sklearn hỗ trợ nhiều thuật toán học máy khác nhau, bao gồm cả học có giám sát và không giám sát Thư viện này cũng cung cấp các công cụ đánh giá mô hình, xử lý dữ liệu trước, và lựa chọn đặc trưng, giúp tối ưu hóa quá trình phát triển và đánh giá các mô hình học máy Sklearn là một công cụ quan trọng trong việc phân tích cảm xúc từ văn bản do khả năng xử lý và phân tích dữ liệu văn bản một cách hiệu quả.
Pipeline
Pipeline trong scikit-learn là một công cụ mạnh mẽ giúp tự động hóa quy trình xử lý và phân tích dữ liệu Nó cho phép người dùng kết hợp nhiều bước xử lý dữ liệu và mô hình học máy thành một quy trình liền mạch Điều này giúp giảm thiểu nguy cơ lỗi và tăng hiệu quả khi thực hiện các bước như chuẩn hóa dữ liệu, chọn đặc trưng và huấn luyện mô hình Pipeline cũng làm cho mã nguồn dễ đọc hơn và dễ bảo trì, đồng thời hỗ trợ việc tinh chỉnh và đánh giá mô hình một cách hiệu quả.
Jupyter Notebook
Jupyter Notebook là một ứng dụng web cho phép bạn tạo và chia sẻ tài liệu chứa mã nguồn sống, phương trình, hình ảnh và văn bản giải thích Nó được sử dụng rộng rãi trong các lĩnh vực như phân tích dữ liệu, học máy, và nghiên cứu khoa học, giúp người dùng ghi chú, thực hiện và chia sẻ mã nguồn Python một cách trực quan và hiệu quả.Jupyter Notebook hỗ trợ nhiều ngôn ngữ lập trình khác nhau và là công cụ không thể thiếu cho việc học tập và nghiên cứu trong lĩnh vực khoa học máy tính.
PHÂN TÍCH HỆ THỐNG
Tổng quan hệ thống
Hệ thống được thiết kế với mục tiêu đơn giản, gồm các thành phần chính sau:
- Giao diện Người dùng (User Interface): Đây là phần mà người dùng tương tác, cho phép nhập văn bản và hiển thị kết quả phân tích cảm xúc.
- Bộ xử lý Trung tâm (Central Processing Unit): Nơi xử lý dữ liệu, bao gồm các mô-đun tiền xử lý, phân tích, và đưa ra kết quả.
- Cơ sở dữ liệu (Database): Lưu trữ dữ liệu huấn luyện và các thông tin cần thiết khác cho quá trình phân tích.
Sơ đồ UseCase
3.2.2 Danh sách các Use-case
Bảng danh sách các Use-case
STT Tên Use-case Ý nghĩa/ ghi chú
Phần mềm xác định cảm xúc của người dùng thông qua tin nhắn, hoặc các bình luận
2 Upload Text Data Người dùng có thể upload đoạn chữ và phần mềm sẽ xác định cảm xúc trong đoạn văn đó
Đặc tả Use Case
Bảng 3.1 Đặc tả Analyze Text Sentiment
Tên Use-case Analyze Text Sentiment
Mô tả tóm tắt Phần mềm xác định cảm xúc của người dùng thông qua tin nhắn, hoặc các bình luận Điều kiện trước Người dùng input đoạn chat
Dòng sự kiện chính Xác định được cảm xúc của từng user xong đoạn chat
Dòng sự kiện phụ Đánh giá mức độ chính xác
Bảng 3.2 Đặc tả Use-case
Tên Use-case Upload Text Data
Mô tả tóm tắt Phần mềm xác định cảm xúc trong câu văn Điều kiện trước Người dùng input câu văn
Dòng sự kiện chính Xác định được cảm xúc trong câu văn
Dòng sự kiện phụ Đánh giá mức độ chính xác
Sơ đồ Activity
- Thu thập dữ liệu (Data Collection): Bước này liên quan đến việc thu thập dữ liệu văn bản cần thiết cho phân tích cảm xúc.
- Tiền xử lý dữ liệu (Data Preprocessing): Ở giai đoạn này, dữ liệu được làm sạch và chuẩn bị để phân tích.
- Đào tạo mô hình (Model Training): Bước này bao gồm việc huấn luyện các mô hình khác nhau như Hồi quy Logistic, Cây quyết định, v.v.
- Đánh giá mô hình (Model Evaluation): Ở đây, hiệu suất của các mô hình được đánh giá để chọn ra mô hình tốt nhất.
- Phát triển giao diện (Interface Development): Bước này liên quan đến việc phát triển giao diện người dùng cho hệ thống.
HIỆN THỰC HỆ THỐNG
Quá trình hệ thống hoạt động
Tiếng Anh : Dataset bao gồm các cảm xúc được thống kê như hình bên dưới
Tiếng Việt: Dataset bao gồm các cảm xúc được thống kê như hình bên dưới
- Xử dụng thư viện pandas để import dataset Sau khi import ta sẽ có 1 file dữ liệu như hình
- Vì data được lấy từ các commnet trên các trang mạng xã hội nên cần được xoá cái dấu @ với mục đích để tag người dùng vào bình luận hoặc tin nhắn đó
- Xoá những ký tự kết thúc dòng
- Nên phân chia dữ liệu trước khi sử dụng pipeline để ngăn thất thoát dữ liệu
- Sau khi hoàn tất đã có dữ liệu để thực hiện training model
4.1.2 Sử dụng Logistic Regression để huấn luyện model a Giới thiệu
Logistic Regression là một thuật toán học có giám sát được sử dụng để giải quyết các bài toán phân loại Thuật toán này dựa trên mô hình hồi quy tuyến tính và sử dụng hàm sigmoid để chuyển đổi đầu ra của mô hình thành xác suất.
Mô hình Logistic Regression được sử dụng để dự đoán xác suất của một sự kiện xảy ra dựa trên các biến đầu vào Ví dụ, nếu bạn muốn dự đoán xác suất một khách hàng sẽ mua một sản phẩm cụ thể, bạn có thể sử dụng mô hìnhLogistic Regression để dự đoán xác suất đó dựa trên các thông tin về khách hàng như tuổi, giới tính, thu nhập, v.v b Kết quả thu được:
- Sau khi thực hiện training model Và thực hiện đánh giá model thì thu được model với độ chính xác là khoảng 62%;
4.1.3 Sử dụng Decision Tree Classifier để huấn luyện model a Giới thiệu:
DecisionTreeClassifier là một thuật toán học có giám sát được sử dụng để giải quyết các bài toán phân loại và hồi quy Thuật toán này xây dựng một cây quyết định bằng cách chia tập dữ liệu thành các tập con dựa trên các thuộc tính của dữ liệu Các thuộc tính này được sử dụng để tạo ra các câu hỏi có thể trả lời bằng “có” hoặc “không”, và các câu hỏi này được sử dụng để chia tập dữ liệu thành các tập con Quá trình này được lặp lại cho đến khi không thể chia tập dữ liệu thành các tập con nữa hoặc khi đạt được một điều kiện dừng khác.
Cây quyết định có thể được sử dụng để giải quyết các bài toán phân loại và hồi quy, tùy thuộc vào loại thuộc tính đầu ra Nếu thuộc tính đầu ra là rời rạc,cây quyết định được sử dụng để giải quyết các bài toán phân loại, trong khi nếu thuộc tính đầu ra là liên tục, cây quyết định được sử dụng để giải quyết các bài toán hồi quy.
4.1.4 Sử dụng Random Forest Classifier để huấn luyện model a Giới thiệu
RandomForestClassifier là một thuật toán học có giám sát được sử dụng để giải quyết các bài toán phân loại và hồi quy Thuật toán này kết hợp nhiều cây quyết định (decision trees) để tạo ra một mô hình dự đoán Mỗi cây quyết định được xây dựng trên một tập dữ liệu con được lấy ngẫu nhiên từ tập dữ liệu huấn luyện, và các cây quyết định này được kết hợp lại để tạo ra một mô hình dự đoán chính xác và ổn định.
Thuật toán RandomForestClassifier có thể được sử dụng để giải quyết các bài toán phân loại và hồi quy, tùy thuộc vào loại thuộc tính đầu ra Nếu thuộc tính đầu ra là rời rạc, RandomForestClassifier được sử dụng để giải quyết các bài toán phân loại, trong khi nếu thuộc tính đầu ra là liên tục, RandomForestClassifier được sử dụng để giải quyết các bài toán hồi quy. b Kết quả thu được
Sau khi thực hiện training model Và thực hiện đánh giá model thì thu được model với độ chính xác là khoảng 58%;
4.1.5 Sử dụng Support Vector Classifier để huấn luyện model a Giới thiệu
SVC là viết tắt của “Support Vector Classifier”, là một thuật toán học có giám sát được sử dụng để giải quyết các bài toán phân loại Thuật toán này dựa trên mô hình hồi quy tuyến tính và sử dụng các vector hỗ trợ để phân chia các lớp.
Thuật toán SVC tìm kiếm một siêu phẳng (hyperplane) trong không gian nhiều chiều để phân chia các điểm dữ liệu thành các lớp khác nhau.
Thuật toán SVC có thể được sử dụng để giải quyết các bài toán phân loại với hai lớp hoặc nhiều lớp Nó cũng có thể được sử dụng để giải quyết các bài toán hồi quy. b Kết quả thu được
Sau khi thực hiện training model Và thực hiện đánh giá model thì thu được model với độ chính xác là khoảng 61.5%;
Giao diện hệ thống
- Người dùng nhập câu hội thoại vào ổ input “type here”:
- Sau khi người dùng nhập và nhấn Submit phần mềm sẽ ghi nhận và thực hiện đánh giá câu hội thoại đó
- Dữ liệu trả về sẽ gồm 2 cột: o Cột 1: Cảm xúc đánh giá được và mức độ tự tin của đánh giá đó o Cột 2: Biểu đồ phân tích trạng thái trong câu văn đó b Giao diện 2
Mô tả chi tiết: Giao diện nay đang mô tả lại đoạn chat giữa 2 người dùng bao gồm 2 đoạn chat 1 và chat 2 Và phần đánh giá cảm xúc của từng người (cột bên trái)