Professional Documents
Culture Documents
Nhom6 BaoCaoCDCN
Nhom6 BaoCaoCDCN
===================
BÁO CÁO
CHUYÊN ĐỀ CÔNG NGHỆ
Đề tài:
Comment Sentiment Analysis
NHÓM 6
-----------------
Nguyễn Đức Thành
Nguyễn Hoàng Thọ
Lại Đức Thắng
Phạm Đức Trung
1. Giới thiệu
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.
2.1. 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.
2.2. NLTK
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
toá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.
3. Experiments and Results
3.1. Experiment setup
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.
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.
(https://www.youtube.com/watch?v=f_fuHRyQbOc).
3.2. Cleaning and Analysing
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
df['detail'] = df['detail'].str.lower()
df.tail()
Loại bỏ từ dừng
def cleaning(text):
return " ".join([word for word in str(text).split() if word not in cleaner])
df['detail'] = df['detail'].apply(lambda text: cleaning(text))
df.head()
Loai bỏ từ lặp
def cleaning_repeating_char(text):
return re.sub(r'(.)1+', r'1', text)
df['detail'] = df['detail'].apply(lambda x: cleaning_repeating_char(x))
df.tail()
Loại bỏ số
def cleaning_numbers(data):
return re.sub('[0-9]+', '', data)
df['detail'] = df['detail'].apply(lambda x: cleaning_numbers(x))
df.tail()
Tokenize
from nltk.tokenize import word_tokenize
df['detail'] = df['detail'].apply(lambda x: word_tokenize(x))
df.head()
Stemming
Đưa tử về dạng gốc trước khi được chia
st = nltk.PorterStemmer()
def stemming_on_text(data):
text = [st.stem(word) for word in data]
return data
df['detail'] = df['detail'].apply(lambda x: stemming_on_text(x))
df.head()
Lemmatization
Đưa từ về gốc từ của nó
lm = nltk.WordNetLemmatizer()
def lemmatizer_on_text(data):
text = [lm.lemmatize(word) for word in data]
return data
df['detail'] = df['detail'].apply(lambda x: lemmatizer_on_text(x))
df.head()
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 video
đó.
Khai báo package Python
Trong đó:
- nltk.sentiment.vader là package công cụ phân tích quan cảm
import numpy as np
import pandas as pd
from nltk.sentiment.vader import SentimentIntensityAnalyzer
import matplotlib.pyplot as plt
Tạo biểu đồ
plt.hist(df['compound'])
plt.title("Histogram")
plt.show()
Nhìn vào kết quả của phân tích dữ liệu, ta thấy rằng 64% các bình luận
là tích cực, 21% trung tính và 15% tiêu cực. Sau khi tính giá trị trung bình
của toàn bộ 860 bình luận, ta thu được giá trị cho toà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ự yê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. Ngoà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í.