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 (2.47 MB, 25 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
ĐẠI HỌC BÁCH KHOA HÀ NỘI
<b>Chương 1: Giới thiệu về bài toán phân tích cảm xúc (Sentiment Analysis)...3</b>
<b>I. Định nghĩa...3</b>
<b>II. Tầm quan trọng của phân tích cảm xúc trong thực tế...3</b>
<b>III. Lịch sử phát triển của phân tích cảm xúc...4</b>
<b>IV. Cơ sở lí thuyết...5</b>
<b>Chương 2: Phương pháp và kỹ thuật sử dụng trong phân tích cảm xúc...8</b>
<b>I. Phương pháp dựa trên quy tắc và từ điển (Rule-based sentiment analysis)...8</b>
<b>II. Phương pháp dựa trên học máy...14</b>
<b>Chương 3: Ứng dụng và thách thức...22</b>
<b>I. Ứng dụng thực tế...22</b>
<b>II. Các thách thức...22</b>
<b>Chương 4: Các công cụ và tài nguyên...23</b>
<b>1. Các thư viện phổ biến...23</b>
<b>2.Bộ dữ liệu...23</b>
<b>Chương 5: Kết luận và hướng phát triển...25</b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Phân tích cảm xúc (Sentiment Analysis) là một lớp bài tốn trong xử lí ngôn ngữ tự nhiên (Natural language processing – NLP) nhằm mục đích nhận ra cảm xúc hoặc quan điểm trong đoạn văn bản. Mục đích chính của phân tích cảm xúc là phát hiện và phân loại ý kiến của người viết hoặc nói về chủ đề cụ thể (thường đánh giá là tích cực (positive), tiêu cực(negative) hoặc trung lập (neural). Nó thường được sử dụng trong các đoạn văn bản như đánh giá sản phẩm, bình luận trên mạng xã hội, phản hồi khách hàng và các thông tin khác. Phân tích cảm xúc được áp dụng khi số lượng văn bản cần đánh giálà quá nhiều, cần tự động hóa q trình phân tích.
Hiện nay, phân tích cảm xúc có nhiều ứng dụng trong các lĩnh vưc khác nhau trong đời sống: <b>Marketing và Phân Tích Thị Trường: Phân tích cảm xúc giúp doanh nghiệp hiểu rõ hơn về thái </b>
độ và ý kiến của khách hàng đối với sản phẩm hoặc dịch vụ của họ. Điều này hỗ trợ trong việc nghiên cứu thị trường và phát triển sản phẩm.
<b>Quản Lý Thương Hiệu và Danh Tiếng: Cơng ty có thể sử dụng phân tích cảm xúc để theo dõi và </b>
quản lý danh tiếng thương hiệu của mình trên các phương tiện truyền thơng xã hội và trực tuyến.
<b>Phản Hồi Khách Hàng: Phân tích cảm xúc giúp tổ chức xác định và phân tích phản hồi từ khách </b>
hàng, từ đó giúp cải thiện chất lượng dịch vụ và trải nghiệm khách hàng.
<b>Phân Tích Tình Hình Chính Trị và Xã Hội: Trong lĩnh vực chính trị, phân tích cảm xúc được sử </b>
dụng để đánh giá quan điểm và phản ứng của cơng chúng đối với các sự kiện chính trị hoặc xã hội.
<b>Dịch Vụ Khách Hàng và Hỗ Trợ: Tự động hóa q trình phân loại và ưu tiên các yêu cầu hỗ trợ </b>
dựa trên cảm xúc của khách hàng, giúp cải thiện hiệu quả của dịch vụ khách hàng.
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">lớn, giúp các tổ chức và cá nhân hiểu rõ hơn về cảm xúc và quan điểm của người dùng hoặc khách hàng, từ đó hỗ trợ trong việc ra quyết định và chiến lược.
Lịch sử và sự phát triển của phân tích cảm xúc (Sentiment Analysis) có thể được tóm tắt qua các giai đoạn chính sau:
<b>Giai đoạn đầu (trước năm 2000): Trước thế kỷ 21, nghiên cứu về phân tích cảm xúc chủ yếu tập trung </b>
vào việc giải thích ngữ nghĩa và phân tích các từ ngữ mang tính cảm xúc. Những cơng trình sớm trong lĩnh vực này bao gồm việc diễn giải phép ẩn dụ, rút trích tính từ mang cảm xúc, tính tốn cảm xúc và phân tích chủ quan.
<b>Đầu thế kỷ 21: Khái niệm "phân tích cảm xúc" và "khai thác ý kiến" bắt đầu được sử dụng rộng rãi vào </b>
đầu những năm 2000, với những nghiên cứu tiên phong của Nasukawa và Yi (2003), và Dave et al. (2003). Các nghiên cứu trong giai đoạn này đã mở rộng phạm vi của phân tích cảm xúc để bao gồm việc phân tích ý kiến, thái độ và cảm xúc của con người đối với các thực thể như sản phẩm, dịch vụ, tổ chức, cá nhân, sự kiện, vấn đề, hoặc chủ đề.
<b>Hiện nay: Với sự phát triển của công nghệ xử lý ngôn ngữ tự nhiên và học máy, phân tích cảm xúc đã trở </b>
nên phức tạp và tinh vi hơn. Các phương pháp phân tích bao gồm việc sử dụng các từ điển cảm xúc, phân tích dựa trên ngữ pháp, và học sâu. Điều này cho phép phân tích cảm xúc khơng chỉ đơn giản là xácđịnh tính cực của văn bản (tích cực, tiêu cực, trung lập) mà còn phát hiện ra cảm xúc và ý kiến cụ thể. Các nghiên cứu hiện đại đang tập trung vào việc giải quyết các thách thức như biểu hiện ngôn ngữ phức tạp, đa ngôn ngữ, và vấn đề chủ quan trong cảm xúc. Nghiên cứu cũng hướng tới việc cải thiện độ chính xác và hiệu quả của các mơ hình phân tích cảm xúc, đặc biệt là trong việc xử lý dữ liệu lớn và đa dạng.
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"> <b>Cấp độ chuỗi (Document-level): Phân tích cảm xúc ở cấp độ này đánh giá cảm xúc chung</b>
của toàn bộ văn bản. Điều này thường được áp dụng cho các bài báo, bài đánh giá sản phẩm hoặc bất kỳ văn bản dài nào mà bạn muốn xác định cảm xúc tổng thể.Ví dụ: Xem xét một bài đánh giá sản phẩm: "Tơi u thích chiếc điện thoại này. Nó có tất cả các tính năng tơi cần và thậm chí cịn hơn thế nữa. Pin cũng rất bền." Cảm xúc tổng thể ở đây là tích cực.
<b>Cấp độ câu (Sentence-level): Phân tích cảm xúc ở cấp độ câu xác định cảm xúc của từng </b>
câu riêng lẻ trong một đoạn văn. Điều này hữu ích khi văn bản chứa nhiều ý kiến hoặc cảm xúc khác nhau.
Ví dụ: Trong một bài đánh giá: "Máy ảnh này chụp ảnh rất sắc nét. Tuy nhiên, giao diện người dùng khơng thân thiện lắm." Câu đầu tiên có cảm xúc tích cực, trong khi câu thứ hai có cảm xúc tiêu cực.
<b>Cấp độ từ (Word-level): Cấp độ này phân tích cảm xúc dựa trên từng từ hoặc cụm từ </b>
riêng lẻ. Điều này giúp xác định các từ hoặc cụm từ chứa cảm xúc mạnh mẽ hoặc quan trọng.
Ví dụ: Trong câu "Tôi ghét thời tiết hôm nay, nhưng tơi u món ăn ở đây", từ "ghét" biểu thị cảm xúc tiêu cực, trong khi "yêu" biểu thị cảm xúc tích cực.
<b>Cấp độ khía cạnh (Aspect-level): Một khía cạnh là một phần, đặc điểm, hoặc thuộc tính </b>
cụ thể của một đối tượng. Trong phân tích cảm xúc, khía cạnh thường liên quan đến các yếu tố cụ thể của một sản phẩm hay dịch vụ, như "pin" của một điện thoại thông minh hoặc "không gian" của một nhà hàng.
Ví dụ:
Xét một bài đánh giá về nhà hàng: "Thức ăn ở đây thật tuyệt vời, nhưng dịch vụ thì chậm trễ. Khơng gian thoải mái và n tĩnh."
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">+) Khía cạnh "Khơng gian": Cảm xúc về khơng gian là tích cực ("thoải mái và yên tĩnh").
Nếu dựa trên phương pháp, phân tích cảm xúc được chia thành: phân tích dựa trên quy tắc, phân tích dựa trên học máy, phân tích dựa trên học sâu, phân tích dựa trên mơ hình hỗn hợp:
<b>Phân tích dựa trên quy tắc (Rule-based approaches): Các quy tắc được xác định dựa </b>
trên từ vựng và ngữ pháp. Ví dụ: xuất hiện từ “love” thì câu văn mang tính tích cực.Ưu điểm của phương pháp là dễ implement, không cần dữ liệu huấn luyện. Nhưng phương pháp lại kém linh hoạt, phụ thuộc vào ngôn ngữ, và có thể khơng hiệu quả với ngữ cảnh phức tạp.
<b>Phân tích dựa trên máy học (Machine Learning Approaches): Sử dụng các thuật toán </b>
học máy như Naive Bayes, Support Vector Machine (SVM), hoặc Random Forest.Ưu điểm phương pháp là linh hoạt, có thể thích nghi với các ngữ cảnh và ngôn ngữ khác nhau. Tuy vậy, phương pháp lại yêu cầu một lượng lớn dữ liệu để máy có thể học được. <b>Phân tích dựa trên học sâu (Deep Learning Approaches): Là một nhánh của học máy. </b>
Học sâu sử dụng nhưng mơ hình phức tạp hơn để máy học như mạng nơ-ron tích chập (CNN), mạng nơ-ron hồi quy (RNN), LSTM (Long Short-Term Memory), hoặc BERT (Bidirectional Encoder Representations from Transformers).
Cũng giống như học máy, học sâu yêu cầu một lượng lớn dữ liệu đã dán nhãn để máy có thể học được. Tuy vậy, độ chính xác và linh hoạt của phương pháp lại rất cao. <b>Phân tích dựa trên mơ hình hỗn hợp (Hybrid Approaches): Là phương pháp kết hợp các</b>
phương pháp trên. Phương pháp này cố gắng kế thừa những ưu điểm các phương pháp đồng thời khắc phục những điểm yếu của chúng. Tuy vậy, phương pháp có thể phức tạp trong thiết kế và triển khai.
<b>2. Các thuật ngữ thường dùng trong phân tích cảm xúc</b>
<b>Sentiment (Cảm Xúc): Đây là khái niệm cơ bản trong phân tích cảm xúc, đề cập đến cảm </b>
xúc hoặc thái độ của một người đối với một đối tượng cụ thể, chẳng hạn như một sản phẩm, dịch vụ, sự kiện, vấn đề, hay thậm chí là một ý kiến. Sentiment có thể được phân loại thành tích cực, tiêu cực, hoặc trung lập<b>.</b>
<b>Opinion (Ý Kiến): Opinion liên quan đến quan điểm hoặc nhận xét cá nhân của một </b>
người. Trong phân tích cảm xúc, việc xác định ý kiến giúp xác định cảm xúc hoặc thái độ liên quan. Ý kiến có thể được biểu đạt qua lời nói, văn bản, hoặc hành vi.
<b>Subjectivity (Chủ Quan): Subjectivity chỉ đến mức độ mà thông tin hay ý kiến chứa đựng</b>
quan điểm cá nhân, cảm xúc hoặc định kiến, thay vì dựa trên sự thật khách quan. Trong phân tích cảm xúc, việc phân biệt giữa thông tin chủ quan và khách quan là quan trọng
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">hiện được cảm xúc bài viết nên loại bỏ ý kiến khách quan có thể giúp ích cho việc xác định cảm xúc của văn bản.
<b>Polarity (Phân Cực): Polarity đề cập đến việc xác định hướng tích cực hay tiêu cực của </b>
cảm xúc hoặc ý kiến. Đây là một phần quan trọng của phân tích cảm xúc, giúp xác định liệu một ý kiến hay phản hồi có hướng tích cực, tiêu cực, hay trung lập<b>.</b>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Trong chương trước, chung ta đã tìm hiểu qua về các phương pháp sử dụng trong phân tích cảm xúc nhưdựa trên quy tắc, học máy, học sâu hay hỗn hợp. Trong chương này, chúng ta sẽ tìm hiểu sâu về từng phương pháp và triển khai một số bài toán đơn giản sử dụng các phương pháp này.
1. <b>Giới thiệu</b>
Phương pháp đánh giá cảm xúc của văn bản dựa trên các từ trong văn bản và các luật kèm theo. Cụ thể, phương pháp sẽ bao gồm những điểm chính yếu sau:
<b>Sentiment Lexicon: Đây là cốt lõi của toàn bộ phương pháp. Sentiment Lexicon là tập hợp các từ </b>
và trọng số của chúng dựa theo mức độ cảm xúc chúng đem lại. VD: những từ như “happy”, “excellent”, “amazing” là những từ mang tính tích cực, nên được đánh trọng số dương; còn những từ như “sad”, “terrible” là những từ tiêu cực, sẽ được đánh trọng số âm. Sentiment Lexicon có sẵn trong các thư viện như NLTK, TextBlob, Stanford CoreNLP, …
<b>Rule: bao gồm những quy tắc để đánh giá cảm xúc của toàn văn bản dựa trên các từ của nó. </b>
Những quy tắc thể chỉ đơn giản như tổng các trọng số của các từ trong văn bản.
<b>Text Processing: đây là một quá trình thường được thực hiện trước khi áp dụng rule. Quá trình </b>
này làm sạch dữ liệu đầu vào, bao gồm tokenization (tách đoạn văn thành các từ nhỏ), loại bỏ các stopword (các từ khơng có ích trong việc đánh giá cảm xúc văn bản), stemming (quá trình thugọn từ) hoặc lemmatization (chuẩn hóa từ), …
2. <b>Demo</b>:
<b>2.1 Tập dữ liệu:</b>
Tập dữ liệu được lấy tại đây: Sentiment Analysis Dataset (kaggle.com)
Đây là tập chứa dữ liệu về 16000 tweet. Tập dữ liệu sẽ bao gồm các thông tin sau: Polarity: Cảm xúc của đoạn tweet (bao gồm 0: negative, 2: neural, 4:positive) Id: Id của tweet
Date: Thời gian viết tweet Query: (Không rõ) User: Tên tài khoải viết tweet Text: Đoạn text của tweet
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><b>2.2 Sentiment Lexicon</b>
Lấy cảm xúc của từng từ trong văn bản sử dụng thư viện nltk:
Kết quả cho 1 từ: bao gồm mức độ tích cực (pos_score), mức độ tiêu cực (neg_score) và mức độ trung tính (obj_score)
<b>2.3 Text Processing</b>
Text Processing bao gồm nhiều công đoạn, tùy thuộc vào dữ liệu. Đối với tập dữ liệu hiện tại, em chia thành các bước nhỏ như sau:
<b>Loại bỏ URLs, Hashtags và Styles: Các đoạn tweet có thể bao gồm các hyper links, các </b>
hashtags (#) hoặc các style. Những điều trên không giúp ích gì cho việc phân tích cảm xúc của văn bản. (Đối với các hashtags thì chỉ loại bỏ dấu “#”)
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"> <b>Thay thế các từ viết tắt: Trong tiếng Anh, có nhiều từ viết tắt phổ biến như: is -> ‘s, are</b>
-> ‘re, do not -> don’t,…. Điều này làm cho số lượng từ ngữ nhiều lên, gây khó khăn cho việc phân tích. Em sẽ thay các cụm từ viết tắt này thành dạng đầy đủ của nó, cụ thể như sau:
n't --> not 'll --> will's --> is 'd --> would'm --> am 've --> have're --> are
Kết quả sau khi thay thế các từ viết tắt:
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">tách chúng ra thành dạng chuẩn “For The Win”
Kết quả:
<b>Chuyển toàn bộ thành chữ thường:</b>
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"> <b>Loại bỏ các kí tự đặc biệt và số:</b>
<b>Tokenize và loại bỏ stopword: Tokenize là quá trình tách văn bản thành các </b>
từ .Stopword là các từ khơng có nhiều ý nghĩa trong việc đánh giá cảm xúc trong văn bản.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13"> <b>Rule: Cách đơn giản nhất để đánh giá cảm xúc của văn bản sau khi đã xử lí sẽ là tính </b>
tổng số positive_score, negative_score và neural_score của từng token, sau đó giá trị lớn nhất trong 3 điểm trên sẽ đại diện cho cảm xúc của văn bản. Neural_score cũng sẽ được điều chỉnh theo tỉ lệ (Vì trong văn bản thường có nhiều từ neural hơn so với các từ positive và negative)
Kết quả:
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><b>1. Giới thiệu</b>
<b>1.1 Học không giám sát</b>
Các phương pháp học không giám sát được sử dụng cho dữ liệu chưa có nhãn, thường dùng để tìm ra các chủ đề nổi bật trong văn bản. Ví dụ: Một công ty phân phối nhiều sản phẩm bao gồm: sách, phim, âm nhạc, ….; công ty muốn phân loại các comment của người dùng thành cáccomment theo sách, them phim, theo âm nhạc có thể sử dụng học khơng giám sát để phân cụm các comment.
Các phương pháp học không giám sát thường sử dụng như:
Clustering: Phân loại dữ liệu thành các nhóm dựa trên đặc điểm tương đồng, như means, DBSCAN. Trong phân tích cảm xúc, điều này có thể giúp phân loại ý kiến thành các nhóm tích cực, tiêu cực, và trung lập.
K- TF-IDF: Một phương pháp giúp phát hiện ra chủ đề chính trong một lượng lớn văn bản NMF (Non-negative matrix factorization): NMF được sử dụng để tách một ma trận dữ liệu không âm thành hai ma trận thưa (sparse) cơ bản không âm, giúp khám phá cấu trúc ẩn bên trong dữ liệu.
Các phương pháp học không giám thường thiếu độ chính xác, tuy vậy lại tốn kém ít chi phí hơn (do không yêu cầu nhãn).
<b>1.2 Học có giám sát</b>
Học có giám sát là phương pháp phổ biến nhất được sử dụng trong phân tích cảm xúc hiện nay. Học có giám sát yêu cầu dữ liệu được dán nhãn (thường là positive, negative và neural) và đồng thời cũng u cầu lượng tính tốn lớn.
Các phương pháp học có giám sát phổ biến sử dụng: Mạng neuron nhân tạo (ANNS)
Mạng neuron hổi quy (RNNS) Mạng tích chập (CNNS) Mơ hình Transformer và BERT. Random forest, SVM, …
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">gồm cả chi phí dán nhãn và chi phi train mơ hình)
<b>1.3 Hybrid</b>
Là phương pháp kết hợp cả 2 phương pháp trên.
<b>2. Demo2.1 Tập dữ liệu</b>
Tập dữ liệu sử dụng: Amazon Reviews Full Dataset.
Tập dữ liệu bao gồm: Rating (có giá trị từ 1-5, càng thấp càng tiêu cực), Title (một bản tóm tắt của đánh giá), Review (đánh giá của người dùng).
Tập dữ liệu bao gồm 3000000 đánh giá, trong đó gồm 600000 đánh giá với mỗi rating.
<b>2.2 Text processing</b>
Bao gồm:
Loại bỏ HTML tag Loại bỏ các dấu câu Loại bỏ các dấu cách thừa Loại bỏ số
Loại bỏ stopword
Loại bỏ các từ ngắn hơn 3 chữ
Lemmazation: Quá trình đưa các về dạng chuẩn của nó (Vd liking -> like)
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16"> Giảm lượng dữ liệu: (Vì máy em không train được hết)
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17"><b>2.3 Học không giám sát</b>
TF-IDF (Term Frequency-Inverse Document Frequency) là một thuật tốn quan trọng trong xử lý ngơn ngữ tự nhiên (NLP) và tìm kiếm thơng tin. Nó được sử dụng để xác định tầm quan trọng của một từ trong một tài liệu dựa trên sự xuất hiện của từ đó trong tài liệu và trong tồn bộ tập dữ liệu. Dưới đây là cách thuật toán TF-IDF hoạt động:
<b>Term Frequency (TF - Tần số từ): Đo lường tần số xuất hiện của một từ cụ thể trong một tài </b>
liệu. TF được tính bằng cách đếm số lần từ xuất hiện trong tài liệu và chia cho tổng số từ trong tài liệu. Công thức TF cho từ t trong tài liệu d như sau<b>:</b>
<b>Inverse Document Frequency (IDF - Tần số Nghịch Đảo Tài Liệu): Đo lường tầm quan trọng của</b>
một từ trong toàn bộ tập dữ liệu. IDF tính tốn bằng cách lấy tổng số tài liệu trong tập dữ liệu và chia cho số tài liệu có chứa từ t, sau đó lấy logarithm tự nhiên của kết quả. Công thức IDF cho từ t trong tập dữ liệu D như sau<b>:</b>
</div>