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 (236.91 KB, 19 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ - ĐẠI HỌC QUỐC GIA HÀ NỘI
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">Phim ảnh là một loại hình nghệ thuật tổng hợp, được thể hiện bằng hình ảnh kết hợp với âm thanh, đơi khi là một số hình thức kích thích giác quan khác; được lưu trữ trên một số dạng thiết bị ghi hình để phổ biến tới cơng chúng qua các phương tiện kỹ thuật khác nhau. Từ lâu, phim nói chung đã trở thành một ngành cơng nghiệp giải trí quan trọng, là một cơng cụ hữu ích, gần gũi để từ đó gửi đi những ý kiến, thông điệp, tạo ra tác động lớn tới người xem cũng như xã hội. Có nhiều yếu tố để quyết đinh một bộ phim có thành cơng hay khơng. Một trong số đó là những ý kiến, phản ứng của khán giả. Bài nghiên cứu này đi sâu vào lĩnh vực phân tích cảm xúc về phim, tận dụng dữ liệu từ các nguồn khác nhau để có cái nhìn sâu sắc về cảm nhận và cảm xúc của khán giả đối với các bộ phim.
Động lực chính của bài ngiên cứu này bắt nguồn từ vai trò của cảm xúc khản giả đối với một bộ phim. Bằng việc phân tích cảm xúc được thể hiện trên các bài đánh giá, bình luận, v.v. của người xem, các nhà làm phim, nhà phân phối, v.v. có thể rút ra được những thơng tin hữu ích, quý giá, hỗ trợ việc ra các quyết định, từ chiến lược sản xuất cho tới tiếp thị.
Mặc dù dữ liệu về cảm xúc của khán giả đối với các bộ phim là rất phong phú, tuy nhiên đúc rút ra những thông tin hữu ích vẫn gặp nhiều khó khăn. Việc có nhiều nguồn dữ liệu khác nhau có thể khiến cho những thông tin rút ra được trở nên không nhất quán, thiếu chính xác. Khơng những vậy, các bình luận, đánh giá của người xem về một bộ phim hay các trailer của bộ phim đó có thể chứa nhiều sự phức tạp, địi hỏi phải có các kỹ thuật phát triển mới có thể xử lý được.
Từ dữ liệu cảm xúc của người xem đối với trailer của các bộ phim, câu hỏi nghiên cứu chính được đặt ra đó là: Có thể sử dụng các thông tin rút ra được từ những dữ liệu trên để dự đoán xem một bộ phim có thành cơng trong việc thu hút khán giả và đạt doanh thu cao so với các chi phí đã bỏ ra hay không. Từ câu trả lời cho câu hỏi trên, các bên liên quan của các bộ phim có thể đưa ra những quyết định, chiến lược đúng đắn, góp phần tạo nên sự thành cơng của các bộ phim.
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
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">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.
Tiền xử lí dữ liệu là giai đoạn rất quan trọng, hay nói cách khác đây là công đoạn làm sạch văn bản. Việc văn bản được làm sạch giúp cách thuật tốn có thể trích xuất được những đặc trưng tốt nhất từ đó nâng cao hiệu quả, chất lượng của các mơ hình, thuật toán.
Thư viện NLTK - Natural Language Toolkit là một trong những thư viện open-source xử lí ngơn ngữ tự nhiên. Được viết bằng Python và với ưu điểm là dễ dàng sử dụng nên thư viện này ngày càng trở nên phổ biến và có được một cộng đồng lớn mạnh. Thư viện cung cấp hơn 50 kho dữ liệu văn bản khác nhau (corpora) và nhiều chức năng để xử lí dữ liệu văn bản để phục vụ cho nhiều mục đích khác nhau.
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">Việc đầu tiên là chuẩn bị Dataset cho phấn tích dữ liệu. Vì chủ đề phân tích phản hồi của người xem về một bộ phim sắp ra mắt. nguồn dữ liệu được nhóm lựa chọn là phần bình luận của trailer các video trailer cho
một bộ phim. Từ những phản hồi của người xem về trailer, chúng ta sẽ biết được nhiều thông tin về cảm nghĩ, mong đợi của viewer.
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">Dùng Python, nhóm đã quét và thu thập được 860 bình luận từ phần bình luận của video trailer cho phim “Nimona” trên Youtube.
(
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">A, Xử lý dữ liệu nâng cao
Xử lý dữ liệu bao gồm những công việc như loại bỏ từ dừng, loại bỏ những ký tự đặc biệt hay đường link để có thể phân tích chính xác hơn. Sau đó văn bản được chuyển về dạng viết thường, Tokenization, Stemming và Lemmatization để phân tích dữ liệu rõ hơn
Khai báo package Python
<small>import re</small>
<small>import numpy as np</small>
<small>import pandas as pd</small>
<small>import nltk</small>
Đọc file và tạo cột dữ liệu detail để xử lý
<small>df = pd.read_csv('FLAT.csv', encoding_errors = 'ignore')df['detail'] = df['comment']</small>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><small>df['detail'] = df['detail'].str.lower()df.tail()</small>
Tạo set chứa từ dừng trong tiếng Anh
<small>clean_word = ['a', 'about', 'above', 'after', 'again', 'ain', 'all', 'am', 'an', 'and','any','are', 'as', 'at', 'be', 'because', 'been', 'before', 'being', 'below', 'between','both', 'by', 'can', 'd', 'did', 'do', 'does', 'doing', 'down', 'during', 'each','few', 'for', 'from', 'further', 'had', 'has', 'have', 'having', 'he', 'her', 'here', 'hers', 'herself', 'him', 'himself', 'his', 'how', 'i', 'if', 'in', 'into','is', 'it', 'its', 'itself', 'just', 'll', 'm', 'ma',</small>
<small> 'me', 'more', 'most','my', 'myself', 'now', 'o', 'of', 'on', 'once', 'only', 'or', 'other', 'our', 'ours','ourselves', 'out', 'own', </small>
<small>'re','s', 'same', 'she', "shes", 'should', "shouldve",'so', 'some', 'such', 't', 'than', 'that', "thatll", 'the', 'their', 'theirs', 'them', 'themselves', 'then', 'there', 'these', 'they', 'this', 'those', 'through', 'to', 'too','under', 'until', 'up', 've', 'very', 'was', 'we', 'were', 'what', 'when', 'where','which','while', 'who', 'whom', 'why', 'will', 'with', 'won', 'y', 'you', "youd","youll", "youre", "youve", 'your', 'yours', 'yourself', 'yourselves']</small>
<small>cleaner = set(clean_word)</small>
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Loại bỏ từ dừng
<small>def cleaning(text):</small>
<small> return " ".join([word for word in str(text).split() if word not in cleaner])</small>
<small>df['detail'] = df['detail'].apply(lambda text: cleaning(text))</small>
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11"><small>df['detail'] = df['detail'].apply(lambda x: cleaning_repeating_char(x))df.tail()</small>
Loại bỏ đường link
<small>def cleaning_URLs(data):</small>
<small> return re.sub('((www.[^s]+)|(https?://[^s]+))',' ',data)df['detail'] = df['detail'].apply(lambda x: cleaning_URLs(x))df.tail()</small>
Loại bỏ số
<small>def cleaning_numbers(data):</small>
<small> return re.sub('[0-9]+', '', data)</small>
<small>df['detail'] = df['detail'].apply(lambda x: cleaning_numbers(x))df.tail()</small>
<small>from nltk.tokenize import word_tokenize</small>
<small>df['detail'] = df['detail'].apply(lambda x: word_tokenize(x))df.head()</small>
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Việc khai thác dữ liệu ý kiến (Opinion Mining) là kỹ thuật được sử dụng để xác định quan cảm, cảm xúc trong một dữ liệu văn bản. Bình luận trên Youtube là nơi người xem thể hiện đánh giá của mình với nội dung
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Thêm dữ liệu điểm đánh giá
Tạo các cột dữ liệu liên quan đến điểm tổng thể, điểm tích cực, điểm
Phân loại tính chất bình luận
Tạo cột dữ liệu tên “type”, dùng để phân loại tính chất của binh luận: - POS: Tích cực
- NEG: Tiêu cực
- NEUTRAL: Trung tính <small>df['type']=''</small>
<small>df.loc[df.compound==0'type']='NEUTRAL'</small>
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15"><small>df.loc[df.compound<0'type']='NEG'</small>
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16"><small>plt.hist(df['compound'])plt.title("Histogram")plt.show()</small>
<small>print("Average Positive: ", df['pos'].mean(), "\n"</small>
<small>print("Average Negative: ", df['neg'].mean(), "\n"</small>
<small>print("Average Compound: ", df['compound'].mean(), "\n"</small>
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">Sau khi đã làm sạch dữ liệu và tiến hành phân tích, chúng ta thu được
bảng kết quả và biểu đồ sau:
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">Chúng ta sẽ đánh giá sentiment của một bình luận bằng giá trị của bình luận sau khi phân tích. Giá trị này bắt đầu từ -1 đến 1, trong đó giá trị -1 đại diện cho vơ cùng tiêu cực, 0 cho trung tính và 1 cho vơ cùng tích cực. Biểu đồ kết quả trên cho ta một cái nhìn tổng quan và rõ ràng về số lượng bình luận từ giá trị -1 đến 1. Từ biểu đồ ta hồn tồn có thể tạo một công cụ đánh giá phản hồi của người xem theo hệ thống star rating (từ 1 đến 5 sao).
Nhìn vào kết quả của phân tích dữ liệu, ta thấy rằng <b>64%</b> các bình luận là tích cực, <b>21%</b> trung tính và <b>15%</b> tiêu cực. Sau khi tính giá trị trung bình
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">của tồn bộ 860 bình luận, ta thu được giá trị cho tồn bộ phần comment trailer của bộ phim (0.354-Tích cực). Từ đó ta đánh giá rằng bộ phim nhận được nhiều phản hồi tốt từ người xem, dự đoán được rằng bộ phim sẽ thành cơng và nhận được sự u thích khi ra mắt. Ngược lại, những bộ phim có phản hồi tiêu cực nhiều thể hiện rằng bộ phim không có chất lượng tốt, khơng nhận được sự ủng hộ nhiều từ người xem khiến bộ phim thất bại và sẽ khơng đạt đủ doanh thu. Ngồi ra, những bộ phim có đa số bình luận trung tính khơng chỉ báo động sự khơng thành cơng mà cịn cho ta thấy rằng bộ phim khơng có ấn tượng gì với khán giả và sẽ dễ bị lãng quên trong làn giải trí.
</div>