Trong thời đại thương mại điện tử việc khai phá cảm xúc của khác hàng nhằm đưa ra chiến lược kinh doanh là nhu cầu tất yếu của tất cả mọi người và tổ chức tham gia bán hàng Tuy nhiên hiện nay chưa có sản phẩm nào chuyên về lĩnh vực này hoặc có thì cũng đang ở mức thu thập và phân tích dữ liệu một cách thủ công Vấn đề đặt ra là làm thế nào để có thể thu thập dữ liệu và phân loại dữ liệu cảm xúc một cách tự động từ lời bình của người dùng về thiết bị sản phẩm từ đó trích xuất ra thông tin có ích nhằm phục vụ nhu cầu phân tích và lên kế hoạch kinh doanh Nghiên cứu này nhằm mục đích đề xuất ra giải pháp tự động cho vấn đề Khai phá lời bình trên các trang thương mại điện tử để xác định cảm xúc của khách hàng và từ đó xây dựng nên các biểu đồ trực quan nhằm hỗ trợ tốt nhất cho quá trình lên kế hoạch kinh doanh Dựa trên định lý Bayes và mã nguồn mở về xử lý ngôn ngữ tự nhiên tác giả đã đề xuất được mô hình giải pháp và xây dựng thành chương trình thực tế đáp ứng được các nhu cầu cơ bản nhất đồng thời đưa ra được hướng phát triển tiếp theo
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA HOÀNG TIẾN SƠN KHAI PHÁ LỜI BÌNH TRÊN CÁC TRANG THƯƠNG MẠI ĐIỆN TỬ ĐỂ XÁC ĐỊNH CẢM XÚC CỦA KHÁCH HÀNG LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Đà Nẵng – Năm 2017 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA HỒNG TIẾN SƠN KHAI PHÁ LỜI BÌNH TRÊN CÁC TRANG THƯƠNG MẠI ĐIỆN TỬ ĐỂ XÁC ĐỊNH CẢM XÚC CỦA KHÁCH HÀNG Chuyên ngành: Khoa học máy tính Mã số: 60.48.01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Trương Ngọc Châu Đà Nẵng – Năm 2017 LỜI CAM ĐOAN Tôi xin cam đoan: Những nội dung luận văn thực hướng dẫn trực tiếp thầy TS.Trương Ngọc Châu Mọi tham khảo dùng luận văn trích dẫn rõ ràng tên tác giả, tên cơng trình, thời gian, địa điểm cơng bố Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tơi xin chịu hồn tồn trách nhiệm Học viên Hoàng Tiến Sơn MỤC LỤC MỞ ĐẦU 1 Tính cấp thiết đề tài Mục đích nghiên cứu Đối tượng phạm vi nghiên cứu Phương pháp nghiên cứu Bố cục đề tài Tổng quan tài liệu tham khảo Chương - CƠ SỞ LÝ THUYẾT 1.1 Khái niệm lời bình 1.2 Khái niệm cảm xúc 1.3 Tổng quan xử lý ngôn ngữ tiếng Anh 1.3.1 Đặc điểm tiếng Anh 1.3.2 Nhận xét tiếng Anh 1.4 Các phương pháp tách từ tiếng Anh 1.4.1 Phương pháp So khớp từ dài (Longest Matching) 1.4.2 Phương pháp Học cải tiến (Transformation-based Learning - TBL) 1.4.3 Phương pháp So khớp cực đại (Maximum Matching) 1.5 Các thuật toán phân loại 1.5.1 K láng giềng gần K-Nearest Neighbors (k-NN) 1.5.2 Linear Least Square Fit 1.5.3 Centroid – based vector 1.5.4 Cây định 1.5.5 C4.5 .12 1.5.6 Máy vector hỗ trợ Support Vector Machine .14 1.5.7 Thuật tốn phân lớp Nạve Bayes 16 1.6 Gán thẻ phân loại văn .18 1.6.1 Gán thẻ từ 18 1.6.2 Phân loại từ 19 Chương - PHÂN TÍCH HỆ THỐNG 21 2.1 Phân tích yêu cầu đề tài 21 2.2 Mơ hình đề xuất phân loại cảm xúc từ lời bình 21 2.3 Thu thập liệu (Crawler) 22 2.3.1 Nguyên lí thu thập liệu 22 2.3.2 Thu thập liệu từ trang web động 23 2.4 Bóc tách liệu (Extractor) .23 2.4.1 Các vấn đề liên quan đến phân tích HTML 23 2.4.2 Chuẩn hóa liệu 26 2.5 Đề xuất mơ hình phân loại lời bình 26 2.6 Phân tích cảm xúc 27 2.6.1 Xác định Holder 27 2.6.2 Xác định Target 28 2.6.3 Phân loại Polarity 28 2.7 Tại lựa chọn giải thuật Naïve Bayer để phân lớp 28 2.7.1 Bài toán tổng quan 28 2.7.2 Bài toán cụ thể 29 2.7.3 Ưu điểm 29 2.7.4 Nhược điểm .30 2.7.5 Đo lường hiệu giải thuật 30 2.8 Máy học tốn phân loại lời bình 31 2.8.1 Các tập liệu cần thiết ý nghĩa phân lớp với máy học 31 2.8.2 Phân rã thông tin từ văn .33 Chương - THIẾT KẾ VÀ CÀI ĐẶT HỆ THỐNG 35 3.1 Xây dựng chương trình mơ .35 3.1.1 Phần cứng 35 3.1.2 Phần mềm 35 3.2 Môi trường phát triển 36 3.3 Phân tích thiết kế hệ thống 36 3.3.1 Hoạt động hệ thống 36 3.3.2 Mơ hình thiết kế hệ thống 37 3.3.3 Thiết kế .41 3.4 Kết đạt 42 3.5 Đánh giá kết .48 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 50 Kết luận 50 Kết đạt 50 Hướng phát triển 50 TÀI LIỆU THAM KHẢO PHỤ LỤC TĨM TẮT LUẬN VĂN KHAI PHÁ LỜI BÌNH TRÊN CÁC TRANG THƯƠNG MẠI ĐIỆN TỬ ĐỂ XÁC ĐỊNH CẢM XÚC CỦA KHÁCH HÀNG Học viên: Hoàng Tiến Sơn Chuyên ngành: Khoa học máy tính Mã số: 60.48.01 Khóa: 31 Trường Đại học Bách khoa – ĐHĐN Tóm tắt – Trong thời đại thương mại điện tử, việc khai phá cảm xúc khác hàng nhằm đưa chiến lược kinh doanh nhu cầu tất yếu tất người tổ chức tham gia bán hàng Tuy nhiên chưa có sản phẩm chuyên lĩnh vực này, có mức thu thập phân tích liệu cách thủ cơng Vấn đề đặt làm để thu thập liệu phân loại liệu cảm xúc cách tự động từ lời bình người dùng thiết bị, sản phẩm từ trích xuất thơng tin có ích nhằm phục vụ nhu cầu phân tích lên kế hoạch kinh doanh Nghiên cứu này, nhằm mục đích đề xuất giải pháp tự động cho vấn đề Khai phá lời bình trang thương mại điện tử để xác định cảm xúc khách hàng từ xây dựng nên biểu đồ trực quan nhằm hỗ trợ tốt cho trình lên kế hoạch kinh doanh Dựa định lý Bayes mã nguồn mở xử lý ngôn ngữ tự nhiên, tác giả đề xuất mơ hình giải pháp xây dựng thành chương trình thực tế đáp ứng nhu cầu nhất, đồng thời đưa hướng phát triển Từ khóa – lời bình, khai phá lời bình, python, thương mại điện tử, cảm xúc khách hàng MINING THE COMMENTS ON E-COMMERCE TO IDENTIFY CLIENTS' EMOTIONS Abstract – In the time of e-commerce, identify clients’ emotions to raise business plan is the most needed of sellers and merchants Actually, it does not have any automation specific product for this field, or if have, they are in manual collection and analytic way This research for purpose giving an automation method for Mining the comments on e-commerce to identify clients’ emotions and base on that, building visual diagram for the best support to business plan Base on Bayes theorem and Natural Language Toolkit, an open source, author raised a solution model and built demo that can support basic require, also raised improving plan in the future Key words – comment, comment mining, python, ecommerce, client sentiment DANH MỤC CÁC CHỮ VIẾT TẮT CÁC CHỮ VIẾT TẮT Tiếng Việt CSDL k-NN Cơ sở liệu K láng giềng gần Tiếng Anh DOM HTML kNN LLSF NLTK SVM TBL W3C Document Object Model Hyper Text Markup Language k Nearest Neighbor Linear Least Square Fit Natural Language Toolkit Support Vector Machine Transformation – Based Learning World Wide Web Consortium DANH MỤC CÁC HÌNH VẼ Số hiệu hình vẽ 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 Tên hình vẽ Mơ hình tự động lấy lời bình Mơ hình tự động bóc tách liệu từ trang web Mơ hình bóc tách liệu từ trang web động Hình minh họa cấu trúc HTML DOM Mơ hình nhận diện cảm xúc Mơ hình máy học phân loại lời bình Các tập liệu thường dùng máy học Hệ thống phân rã thơng tin đơn giản Mơ hình usecase Admin Mơ hình usecase user Biểu đồ xem thống kê theo tên nhãn hiệu Biểu đồ xem thống kê theo tên thiết bị Quan hệ bảng liệu Phân loại theo nhãn hiệu sản phẩm Lời bình phân loại theo nhãn hiệu Phân loại thống kê theo thiết bị Lời bình phân loại theo thiết bị Quá trình lấy liệu tự động Giao diện trang quản lý admin Admin quản lý nhãn hiệu Admin quản lý lời bình Admin quản lý thiết bị Admin quản lý root url Admin quản lý uris Admin chỉnh sửa thông tin nhãn hiệu Admin chỉnh sửa thông tin thiết bị Admin chỉnh sửa thông tin uri Admin thêm root url Trang 21 22 23 24 27 31 32 33 39 39 40 40 41 42 42 43 43 44 44 45 45 46 46 46 47 47 48 48 MỞ ĐẦU Tính cấp thiết đề tài Trong kỹ ngun thời đại cơng nghệ số việc khai phá thơng tin có ích tiềm ẩn sở liệu điều thiếu Hiện phần lớn thông tin khai phá chủ yếu lưu trữ hệ quản trị sở liệu có cấu trúc Tuy nhiên, với phát triển nhanh chóng ngày cịn nhiều kiến thức quan trọng chưa khai phá, tiềm ẩn giới World Wide Web (các websites), liệu tiềm lưu trữ dạng văn bản, dạng liệu phi cấu trúc bán cấu trúc Một số kiến thức quan trọng, đóng vai trị giúp đỡ nghiên cứu thị trường lĩnh vực kinh doanh mặt hàng bán lẻ khám phá cảm xúc, độ quan tâm người dùng mặt hàng, thể qua comment (lời bình) người dùng trang thương mại điện tử, từ có chiến lược điều chỉnh kinh doanh hợp lý Websites thương mại điện tử thường chứa nhiều lời bình Hiện việc thống kê liệu đánh giá độ quan tâm khách hàng tới sản phẩm thường tiến hành thủ công Vấn đề đặt làm để thu thập liệu phân loại liệu cảm xúc cách tự động từ lời bình người dùng thiết bị, sản phẩm từ trích xuất thơng tin có ích nhằm phục vụ nhu cầu phân tích lên kế hoạch kinh doanh Xuất phát từ lý trên, tơi chọn đề tài: “Khai phá lời bình trang thương mại điện tử để xác định cảm xúc khách hàng” làm luận văn thạc sỹ Mục đích nghiên cứu Tìm hiểu cảm xúc khách hàng thơng qua lời bình trang thương mại điện tử Đối tượng phạm vi nghiên cứu a Đối tượng nghiên cứu Cảm xúc lời bình trang thương mại điện tử điện thoại di động thông minh Các phương pháp phân loại cảm xúc văn tiếng Anh Phân loại cảm xúc văn tiếng Anh phương pháp phân lớp Naive Bayes Classifiers 49 Tính xác: accuracy a = (tp + tn)/n = (228 + 187) / 460 = 90.2% Độ tin cậy: precision p = / (tp + fp) = 228 / (228 + 2) = 99% Độ bao phủ: recall r = / (tp + fn) = 228 / (228 + 43) = 84% Trong liệu kiểm thử trích xuất 1/3 từ liệu huấn luyện Movie Reviews Corpus cung cấp NLTK at address http://www.nltk.org/ chứa 230 lời bình tích cực 230 lời bình tiêu cực Bộ liệu Movie Reviews thu thập dựa việc phân loại lời bình phim vào hai nhóm tích cực tiêu cực nên đặc trưng lời bình phù hợp hồn tồn sử dụng cho mục đích phân loại lời bình cho thiết bị điện thoại thơng minh Dựa kết cho thấy: Hệ thống đáp ứng yêu cầu đề tài, tự động lấy liệu từ root_url tự động phân loại cảm xúc lời bình khách hàng Tuy nhiên hệ thống sử dụng liệu huấn luyện miễn phí từ cộng đồng mà chưa tự đánh giá tạo liệu huấn luyện thực riêng hệ thống dựa liệu phân loại tích lũy dần q trình vận hành Các phép so sánh trích xuất thơng tin hạn chế, cần phát triển thêm nhiều phép so sánh phát triển thêm nhiều trích xuất thông từ trang thương mại điện tử khác nhằm tạo phép so sánh, trích xuất chủ quan có giá trị cao việc xác định xu hướng kinh doanh 50 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận Sau thời gian nghiên cứu hồn thiện luận văn, tơi thực mục tiêu đề đề cương Kết đạt Đề tài “Khai phá lời bình trang thương mại điện tử để xác định cảm xúc khách hàng” tác giả hoàn thành đáp ứng yêu cầu đặt với kết sau: Tự động bóc tách lấy liệu cần thiết từ website thương mại điện tử Tự động xác định cảm xúc (pos/neg) lời bình nhãn hiệu thiết bị hiển thị website Trực quan hóa kết thống kê dạng biểu đồ, từ giúp người dùng có nhìn tổng thể dễ dàng trích rút thơng tin Hướng phát triển Phát triển module tự tạo tập liệu huấn luyện hệ thống dựa liệu phân loại đánh giá, tích lũy q trình vận hành Phát triển thêm module tự động bóc tách dự liệu từ nhiều nguồn website thương mại điện tử khác Bổ sung thêm phép so sánh trực quan hóa biểu đồ Thực phép so sánh chéo root_url khác Phát triển module giúp cập nhật hệ thống thêm script bóc tách liệu cho root_url Phát triển module lập lịch tự động chạy riêng hệ thống sử dụng crontab (được hỗ trợ hệ điều hành Ubuntu, tính tùy biến gỡ lỗi thấp) Nghiên cứu áp dụng hệ thống cho website thương mại nước TÀI LIỆU THAM KHẢO [1] Bing Liu Sentiment Analysis and Opinion Mining 2012 [2] Lee, Jeong, OR and Lee, SG Opinion Mining of Customer Feedback Data on the Web Proceedings of the nd International Conference on Ubiquitous Information Management and Communication, Korea [3] Li Baoli, Yu Shiwen, and Lu Qin, An Improved k-Nearest Neighbor Algorithm for Text Categorization School of Informatics, Guangdong University of Foreign Studies, 510420 Guangzhou, China August 2011 [4] Jason D.M Rennie, Improving Multi-class Text Classification with Naïve Bayes, 2001 [5] Mr Nilesh M Shelke Approaches of Emotion Detection from Text 2014 [6] P Ekman, An Argument for Basic Emotions, International Journal of Cognition and Emotion, Vol 6(3), published by Lawrence Associates Ltd, US, Jan 1992 [7] Steven Bird, Ewan Klein and Edward Loper, Natural Language Processing with Python, 2009 [8] Steven Loria, TextBlod documentation, Release 0.12.0, Mar 25, 2017 PHỤ LỤC Giải thuật NLTKClassifier phát triển nltk.org class NLTKClassifier(BaseClassifier): nltk_class = None def init (self, train_set, feature_extractor=basic_extractor, format=None, **kwargs): super(NLTKClassifier, self). init (train_set, feature_extractor, format, **kwargs) self.train_features = [(self.extract_features(d), c) for d, c in self.train_set] def repr (self): class_name = self. class . name return "".format(cls=class_name, n=len(self.train_set)) @cached_property def classifier(self): try: return self.train() except AttributeError: raise ValueError("NLTKClassifier must have a nltk_class" " variable that is not None.") def train(self, *args, **kwargs): try: self.classifier = self.nltk_class.train(self.train_features, *args, **kwargs) return self.classifier except AttributeError: raise ValueError("NLTKClassifier must have a nltk_class" " variable that is not None.") def labels(self): return self.classifier.labels() def classify(self, text): text_features = self.extract_features(text) return self.classifier.classify(text_features) def accuracy(self, test_set, format=None): if is_filelike(test_set): test_data = self._read_data(test_set) else: test_data = test_set test_features = [(self.extract_features(d), c) for d, c in test_data] return nltk.classify.accuracy(self.classifier, test_features) def update(self, new_data, *args, **kwargs): self.train_set += new_data self.train_features = [(self.extract_features(d), c) for d, c in self.train_set] try: self.classifier = self.nltk_class.train(self.train_features, *args, **kwargs) except AttributeError: raise ValueError("NLTKClassifier must have a nltk_class" " variable that is not None.") return True Giải thuật NaiveBayesClassifier class NaiveBayesClassifier(NLTKClassifier): nltk_class = nltk.classify.NaiveBayesClassifier def prob_classify(self, text): text_features = self.extract_features(text) return self.classifier.prob_classify(text_features) def informative_features(self, *args, **kwargs): return self.classifier.most_informative_features(*args, **kwargs) def show_informative_features(self, *args, **kwargs): return self.classifier.show_most_informative_features(*args, **kwargs) Extractor def basic_extractor(document, train_set): word_features = _get_words_from_dataset(train_set) tokens = _get_document_tokens(document) features = dict(((u'contains({0})'.format(word), (word in tokens)) for word in word_features)) return features def contains_extractor(document): tokens = _get_document_tokens(document) features = dict((u'contains({0})'.format(w), True) for w in tokens) return features ... bình trang thương mại điện tử để xác định cảm xúc khách hàng? ?? làm luận văn thạc sỹ Mục đích nghiên cứu Tìm hiểu cảm xúc khách hàng thơng qua lời bình trang thương mại điện tử Đối tượng phạm vi... quát khai phá lời bình, phương pháp phân loại cảm xúc lời bình tiếng Anh CHƯƠNG 2: PHÂN TÍCH HỆ THỐNG Chương trình bày khai phá lời bình để xác định cảm xúc lời bình tiếng Anh sử dụng phương pháp... TRƯỜNG ĐẠI HỌC BÁCH KHOA HOÀNG TIẾN SƠN KHAI PHÁ LỜI BÌNH TRÊN CÁC TRANG THƯƠNG MẠI ĐIỆN TỬ ĐỂ XÁC ĐỊNH CẢM XÚC CỦA KHÁCH HÀNG Chuyên ngành: Khoa học máy tính Mã số: 60.48.01 LUẬN