1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Phân tích xu hướng hành vi mua sắm dựa vào bộ dữ liệu tweet trên twitter

22 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 413,85 KB

Nội dung

Untitled BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC KINH TẾ TP HỒ CHÍ MINH TRƯỜNG CÔNG NGHỆ VÀ THIẾT KẾ  ĐỒ ÁN MÔN HỌC ĐỀ TÀI PHÂN TÍCH XU HƯỚNG HÀNH VI MUA SẮM DỰA VÀO BỘ DỮ LIỆU TWEET TRÊN TWITTER Học phần X[.]

lOMoARcPSD|17343589 BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC KINH TẾ TP HỒ CHÍ MINH TRƯỜNG CƠNG NGHỆ VÀ THIẾT KẾ  ĐỒ ÁN MƠN HỌC ĐỀ TÀI: PHÂN TÍCH XU HƯỚNG HÀNH VI MUA SẮM DỰA VÀO BỘ DỮ LIỆU TWEET TRÊN TWITTER Học phần: XỬ LÝ NGÔN NGỮ TỰ NHIÊN Nhóm Sinh Viên: BÙI THÀNH CÔNG LÊ ĐỨC DŨNG LÊ TRUNG NGUYÊN TRẦN MẠNH TƯỜNG Chuyên Ngành: KHOA HỌC DỮ LIỆU Khóa: K46 Giảng Viên: TS Đặng Ngọc Hồng Thành TP Hồ Chí Minh, Ngày 15 tháng 12 năm 2022 lOMoARcPSD|17343589 MỤC LỤC MỤC LỤC CHƯƠNG TỔNG QUAN 1.1 Tổng quan toán phân tích xu hướng khách hàng dựa vào liệu tweet twitter 1.2 Lý chọn đề tài : CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Các phương pháp tiền xử lý liệu 2.2 SVM cho toán Text Classfication Từ văn đến vectơ 2.3 Adaboost cho toán Text Classfication Bag of Words 10 Term Frequency x Inverse Document Frequency 11 CHƯƠNG CÁC KẾT QUẢ THỰC NGHIỆM 12 3.1 Bộ Dữ Liệu 12 3.1.1 Nguồn liệu 12 3.1.2 Cào liệu 12 3.1.3 Tiền xử lý liệu 13 3.1.4 Gắn nhẵn liệu mơ hình LDA 15 Bộ liệu dùng để xây dựng mơ hình 16 3.2 Phân chia liệu 16 3.3 Huấn luyện liệu 17 Mơ hình SVM 17 Mơ hình AdaBoost 17 3.4 Các kết 18 Dữ liệu sau cào 18 Dữ liệu sau tiền xử lý 18 Dữ liệu sau gắn nhãn 19 Mơ hình SVM 19 lOMoARcPSD|17343589 Mơ hình Adaboost 19 3.5 Phân tích đánh giá 19 CHƯƠNG KẾT LUẬN 20 4.1 Các Kết Quả Đạt Được 20 4.2 Những Hạn Chế Hướng Phát Triển 20 TÀI LIỆU THAM KHẢO 21 PHỤ LỤC 21 lOMoARcPSD|17343589 CHƯƠNG TỔNG QUAN 1.1 Tổng quan toán phân tích xu hướng khách hàng dựa vào liệu tweet twitter Với phát triền công nghệ thông tin, đặc biệt Big Data, việc phân tích liệu để tìm xu hướng từ khứ phần dự đoán tương lai ngày doanh nghiệp tin dùng Bên cạnh toán dự đoán số, liệu thu thập sẵn dạng bảng, database,… hay thường gọi liệu có cấu trúc, dạng liệu phi cấu trúc text( đăng), hình ảnh, giọng nói,… quan tâm Bởi liệu phi cấu trúc có khắp nơi, tốn chi phí thu thập liệu Bài toán phân loại văn (Text Classification) đời nhằm đáp ứng nhu cầu dự đoán từ liệu phức tạp Text Classification việc xây dựng mơ hình để dự đốn loại văn thuộc mơ hình học có giám sát, ứng dụng thực tế mơ hình kể đến như: xác định mail spam, xác định cảm xúc đăng (sentiment analysis),… Ở đề tài này, nhóm em tiếp cận tốn theo hướng dựa vào tweet để tìm hàng phù hợp với nhu cầu khách hàng 1.2 Lý chọn đề tài : Văn nguồn thông tin vô phong phú, việc trích xuất hiểu biết sâu sắc từ khó khăn tốn thời gian chất Tuy nhiên, nhờ tiến máy học (Machine Learning) học sâu (Deep Learning), việc xử lý văn lớn để xây dựng mô hình trở nên khả thi Mục tiêu nhóm đặt cho toán này, từ liệu người tweet twitter quý này, tìm nhóm hàng mà tweet đề cập đến xây dựng mơ hình để dự đốn cho tweet sau Ứng dụng vào thực tế, toán giúp doanh nghiệp/ người bán hàng dự đoán quan tâm khách hàng đến mặt hàng nào, từ đáp ứng nhu cầu tăng doanh thu lOMoARcPSD|17343589 CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Các phương pháp tiền xử lý liệu Có nhiều cách khác để "làm sạch" tiền xử lý liệu dạng văn Dưới đây,nhóm em xin phép đề xuất số điểm quan trọng sử dụng nhiều giai đoạn tiền xử lý ngơn ngữ tự nhiên (NLP) • Xóa ký tự đặc biệt: Trong tweet, thường xuất kí tự emoji, icon, dấu tags @, hashtags #,… kí tự khơng giúp ích việc xây dựng mơ hình nên ta tìm loại bỏ để việc xây dựng mơ hình tinh gọn • Xóa đường dẫn HTML: Tương tự ký tự đặc biệt, khơng có nhu cầu click vào đường link để xem thông tin nên việc loại bỏ cần thiết để giảm thiểu liệu đầu vào • Biến đổi từ viết tắt: Trong tiếng Anh, từ viết tắt phiên rút gọn từ âm tiết Những từ viết tắt từ cụm từ thường tạo cách loại bỏ chữ âm tiết Ví dụ như: not => don't, I would => I'd Chuyển đổi từ dạng viết tắt thành dạng đầy đủ bước cần thiết để chuẩn hóa văn • Thay slang thành từ: Trong ngôn ngữ tảng mạng xã hội, người thường sử dụng từ viết tắt cho ngắn gọn, từ viết tắt mang tính tự phát nhiều người dùng tính đắn mặt ngữ pháp từ viết tắt Ví dụ như: pls => please, g9: goodnight Chuyển đổi từ dạng gốc giúp dễ hiểu tiện cho việc xử lý • Từ gốc ngữ pháp: Trong ngữ cảnh khác nhau, từ gốc thường gắn thêm tiền tố hậu tố vào để với ngữ pháp Ví dụ từ: WATCHES, WATCHING, and WATCHED Chúng ta thấy chúng có chung từ gốc WATCH • Xóa stopwords: stopwords từ có khơng có ý nghĩa đặc biệt xây dựng đặc trưng Đây thường từ giới từ, trợ từ có tần suất xuất tương đối cao văn thơng thường ví dụ như: a, an, the Chúng ta khơng có danh sách chung tác stopwords nhiên bạn sử dụng thư viện nltk Hoặc bạn tự xây dựng thư viện stopwords cho riêng ngôn ngữ bạn xử lý Việc có ý nghĩa tương đối quan trọng xử lý ngôn ngữ tự nhiên • Trích xuất danh từ: Mục tiêu tốn tìm topic tweet/ category hàng tweet nên phần lớn từ ta quan tâm danh từ Nên sử dụng số hàm cung cấp sẵn thư viện nltk để xác định giữ lại danh từ • Xóa số từ khơng cần thiết: Một số từ khơng cần thiết khơng có ý nghĩa xuất sau sử dụng hàm cấp sẵn thư viện Để loại lOMoARcPSD|17343589 bỏ từ hoàn toàn, ta cần sử dụng biện pháp thủ công để xác định xử lý 2.2 SVM cho toán Text Classfication Phân loại văn máy vectơ hỗ trợ (SVM).Có nhiều thuật tốn học máy khác mà chọn thực phân loại văn với học máy Một số Support Vector Machines (hoặc SVM) Từ văn đến vectơ Máy vectơ hỗ trợ thuật toán xác định ranh giới định tốt vectơ thuộc nhóm (hoặc danh mục) định vectơ khơng thuộc Nó áp dụng cho loại vectơ mã hóa loại liệu Điều có nghĩa để tận dụng sức mạnh phân loại văn svm, văn phải chuyển đổi thành vectơ Bây giờ, vectơ gì? Các vectơ (đơi lớn) danh sách số đại diện cho tập hợp tọa độ số khơng gian Vì vậy, SVM xác định ranh giới định mà đề cập trên, SVM định nơi vẽ “đường thẳng” tốt (hoặc siêu phẳng tốt nhất) để chia không gian thành hai không gian con: dành cho vectơ thuộc loại cho dành cho vectơ thuộc loại cho vectơ không thuộc Vì vậy, miễn tìm thấy biểu diễn véc-tơ mã hóa nhiều thông tin từ văn tốt, áp dụng thuật tốn SVM cho toán phân loại văn thu kết tốt Ví dụ: vịng trịn màu xanh lam biểu đồ bên phần trình bày văn đào tạo nói Giá Sản phẩm SaaS hình tam giác màu đỏ phần trình bày văn đào tạo khơng nói điều Ranh giới định cho danh mục Định giá nào? lOMoARcPSD|17343589 Ranh giới định tốt trông này: Bây thuật toán xác định ranh giới định cho danh mục mà bạn muốn phân tích, bạn cần lấy biểu diễn tất văn mà bạn muốn phân loại kiểm tra xem biểu diễn nằm phía ranh giới Có nhiều cách mã hóa văn vectơ Nếu bạn muốn tìm hiểu thêm số số họ, đọc phần Bạn tìm hiểu thêm máy vectơ hỗ trợ chức hạt nhân Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 2.3 Adaboost cho tốn Text Classfication Về mặt lý thuyết, nhóm em đề cập cách mà tụi hoạt động Giải thích đơn giản: Trình phân loại Adaboost Adaboost thuật tốn thúc đẩy thành cơng phát minh vào năm 1996 Robert Schapire Yoav Freund Có lẽ bạn hỏi, thật tuyệt thuật tốn tăng tốc gì? Các trình phân loại dựa tăng cường độ dốc trình phân loại để tạo trình phân loại mạnh cách sử dụng nhiều người học yếu Tôi biết câu khó hiểu Để tơi cho bạn cách hoạt động với biểu đồ 2-D • Đây tập liệu gồm hai lớp, lớp màu xanh lớp A lớp lại lớp B Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 • Chúng muốn phân loại chúng cách sử dụng đường dọc ngang đơn giản, chẳng hạn như: Nhưng dòng xấu, bắt đầu Như thấy, hầu hết phía bên trái biểu đồ chứa chấm loại B, vẽ đường thẳng đứng để phân chia hầu hết chấm loại B • Ừ, khái niệm người học yếu có thơi, bạn biết làm điều với định • Nhưng cần nhiều học sinh yếu hơn, bạn Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 thấy hầu hết điểm B, kéo học sinh yếu đến Gần sẵn sàng, cần giải cứu điểm xanh • Cuối cùng, chúng tơi hồn thành việc đào tạo phân loại với ba ước lượng định (người học tuần) Nếu chấm khu A hay khu B phải hạng B • Và dấu chấm nằm vùng C, D E, lớp phải A Mọi thứ bạn cần để bắt đầu với Adaboost kết thúc, bạn (nên) tìm hiểu chi tiết từ Bài viết, chuyển sang phương pháp trích xuất tính văn Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 Bag of Words Để hiểu trích xuất tính TF-IDF lại quan trọng, tơi phải giải thích trích xuất tính Bag of Words (BOW) Trong phương pháp Bag of Words, tạo ma trận thưa thớt (một ma trận hầu hết phần tử 0) cách sử dụng câu Mỗi tương lai từ, xem ví dụ đây: Chúng tơi có tập liệu chứa câu: • • • • • • Today I am going to study data science Tomorrow you will go I am interested in data science You was a good man I just wanted to be a good man Are you interested in statistics? Tơi nói từ tính năng, tính là: TODAY I AM GO STUDY DATA SCIENCE TOMORROW YOU WILL INTERESTED IN WAS GOOD MAN JUST WANT BE ARE STATISTICS Nếu câu cho có chứa đặc điểm này, giá trị khơng, giá trị Hãy tạo vectơ Bag of Word TODAY I AM GO STUDY DATA SCIENCE TOMORROW YOU WILL INTERESTED IN WAS GOOD MAN JUST WANT BE ARE STATISTICS 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 Câu đầu tiền Today I am going to study data science, theo ma trận câu chứa today,I,am,go,study,data,science Bag of Words tất điều này, chuyển sang trích xuất tính TF-IDF 10 Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 Term Frequency x Inverse Document Frequency Trong phần trước, học Bag of Words Trong bag of Words, chúng tơi sử dụng tính nhị phân (các tính cho biết câu có chứa từ hay khơng) đơi bạn dự đốn, gây cố thực Trong TFxIDF, tương lai từ, không sử dụng hệ nhị phân Chúng sử dụng công thức để xác định điểm số TF-IDF đối tượng địa lý => Giá trị đặc trưng i câu j Điểm TF-IDF: TF(i,j) * IDF(i) Tần suất thuật ngữ(i,j) = Số lần xuất j / có từ j Tần số tài liệu nghịch đảo(i) = log2(số câu tập liệu/số câu chứa i từ) Đó tất điều này, làm ví dụ • Chúng ta có tập liệu gồm 500 câu tất câu chứa từ I (Thật liệu ích kỷ ha!) • Hãy tính điểm TF-IDF đặc điểm I câu đây: Tôi thực quan tâm đến việc tăng cường độ dốc • Điểm TF = 1/6 • Tài liệu nghịch đảo = log2(500/500) = • Vì vậy, điểm TF-IDF 0, có nghĩa tơi khơng có ý nghĩa đặc biệt 11 Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 CHƯƠNG CÁC KẾT QUẢ THỰC NGHIỆM 3.1 Bộ Dữ Liệu 3.1.1 Nguồn liệu Dữ liệu lấy từ tweet twitter từ ngày 13/12/2022 đến quý trước (90 ngày) Dữ liệu lấy theo keywords: • Want to buy • Need to buy Mọi tweet đáp ứng điều kiện query (tơi nói phần sau) chứa keywords cào 3.1.2 Cào liệu Sử dụng thư viện snscrape để cào liệu từ twitter Ưu điểm thư viện không yêu cầu API hay Twitter DEV (phải đăng kí chờ twitter xác thực) Cài đặt thư viện: !pip install snscrape Gọi module cào liệu twitter: import snscrape.modules.twitter as sntwitter Twitter query: Giống SQL, Twitter có ngơn ngữ riêng để truy vấn/ tìm kiếm liệu Ở nhóm em dùng câu truy vấn đơn giản để tìm kiếm liệu (keyword) lang:{language} until:{endtime} since:{starttime} Với: • Keyword liệu cần tìm kiếm, tất tweet xuất đảm bảo chứa keyword • Lang: định ngơn ngữ đăng • Until: định thời gian gần đăng xuất • Since: định thời gian bắt đầu (xa nhất) đăng Ngoài nhiều cách để truy vấn liệu từ Twitter (nguồn tham khảo: https://developer.twitter.com/en/docs/twitter-api/tweets/search/integrate/build-a-query) Source code cào liệu: import snscrape.modules.twitter as sntwitter import pandas as pd import datetime as dt 12 Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 keywords = ['"want to buy"', '"need to buy"'] x = dt.date.today() tweets = [] for i in keywords: query = f"({i}) lang:en limit = 25000 tweets_keyword = [] until:{x} since:{x- dt.timedelta(days = 90)}" for tweet in sntwitter.TwitterSearchScraper(query).get_items(): if len(tweets_keyword) < limit: tweets_keyword.append([tweet.date, tweet.username, tweet.content]) else: for k in tweets_keyword: tweets.append(k) break df = pd.DataFrame(tweets, columns=['Date', 'User', 'Tweet']) df.to_csv('/content/twitter_tweet.csv') Đầu tiên gọi thư viện cần thiết dùng datetime để định ngày Sau tạo list keyword cho lặp qua phần tử list để lấy keyword thay vào query Query trả số lượng tweet keyword với số limit ấn định sẵn (ở 25000 keyword nghĩa data cào bao gồm 50000 tweet) Chỉ query thông tin cần thiết Date, User (người tweet), Tweet (nội dung tweet) Cuối lưu vào dataframe lưu thành file csv để xử lý 3.1.3 Tiền xử lý liệu Áp dụng biện pháp nêu để tiền xử lý, làm cột Tweet dataframe: • Dùng lemmatizing để xác định gốc từ giữ lại từ gốc def lemmatizing(words): lemmatizer =WordNetLemmatizer() return ''.join([lemmatizer.lemmatize(word) for word in words]) • Thay slang thành từ gốc: Ý tưởng thực đọc file chứa từ slang (file tìm mạng chứa phần lớn slang thường xuất mạng xã hội) giải nghĩa sau biên soạn (compile) thành regex thay with open('slang.txt') as file: slang_map = dict(map(str.strip, line.partition('\t')[::2]) for line in file if line.strip()) 13 Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 slang_words = sorted(slang_map, key=len, reverse=True) # longest first for regex slang_regex = re.compile(r"\b({})\b".format("|".join(map(re.escape, sla ng_words)))) • Loại bỏ Tags, Hashtags, Mentions, HTML,…: Dùng regex để loại bỏ yếu tố không cần thiết tweet tweet tweet tweet tweet = = = = re.sub(r'https?:\/\/.*[\r\n]*', '', tweet) re.sub(r'#', '', tweet) re.sub(r'[0-9]', '', tweet) re.sub(r'@[^ ]+', '', tweet) • Loại bỏ emoji: Việc regex theo mã emoji nhiều thời gian khơng thể bao qt tồn bộ, nên tận dụng thư viện clean để xóa emoji cách nhanh chóng !pip install clean-text from cleantext import clean tweet = clean(tweet, no_emoji=True) • Loại bỏ vài từ khơng cần thiết/ khơng có ý nghĩa: Các từ xác định cách thủ công thử nhiều đến việc phân chia topic thật tối ưu tweet = re.sub(r'(buy|sell|need|want)(to)*', '', tweet) tweet = re.sub(r'(time|day|week|month|year)(s)*', '', tweet) tweet = re.sub(r'(man|lot|people|shit|venus|ina|dm|family|sir|wtb| mom|help|want|wts|season|merch|boss|thank|cause|hey|guess|andamp|one |work|thing|way)(s)*', '', tweet) • Trích xuất danh từ từ câu: Dùng pos_tag nltk để gắn tag theo loại từ giữ lại danh từ (N), đồng thời loại bỏ từ có kí tự (vì thường khơng có ý nghĩa tiếng Anh) nouns = [] for word,pos in nltk.pos_tag(nltk.word_tokenize(str(tweet))): if (pos == 'NN') and len(word) > 2: nouns.append(word) if len(nouns) > 0: return ' '.join(nouns) else: return '' • Xóa dịng liệu trống: Sau áp dụng bước tiền xử lý, vài tweet không đáp ứng điều kiện trả giá trị trống, nên ta xóa dịng để tinh gọn cho việc xây dựng mơ hình drop_row = df[df['Tweet_processed'] == ''].index df.drop(drop_row, axis =0, inplace = True) 14 Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 3.1.4 Gắn nhẵn liệu mơ hình LDA Cả mơ hình phân loại SVM Adaboost yêu cầu liệu đầu vào liệu có nhãn (có biến target) Tuy nhiên liệu cào từ Twitter liệu khơng có nhãn Vì vậy, trước xây dựng mơ hình này, ta cần gắn nhãn cho liệu Cách nhóm em đề sử dụng mơ hình LDA để xác định topic tweet gắn chúng vào liệu Sơ nét mơ hình LDA: LDA lớp mơ hình cho phép xác định tập hợp chủ đề tưởng tượng (imaginary topics) mà topic biểu diễn tập hợp từ Mục tiêu LDA mapping toàn văn sang topics tương ứng cho từ văn thể topic tưởng tượng Các bước xây dựng mơ hình LDA gắn nhãn liệu: • Đầu tiên, xây dựng ma trận thuật ngữ CountVectorizer từ liệu xử lý Với ngưỡng chọn từ xuất liệu 100 lần (min_df = 100) bỏ qua stopwords tiếng anh Đồng thời lấy tên thuộc tính hàm get_feature_names() from sklearn.feature_extraction.text import CountVectorizer cv = CountVectorizer(min_df=100, stop_words="english") dtm = cv.fit_transform(df['Tweet_processed']) feature_names = cv.get_feature_names() • Sau đó, xây dựng mơ hình LDA từ ma trận tạo Mơ hình LDA truy xuất topic cho tweet Ở tốn này, nhóm em quy định số topic 5, thể tham số truyền vào lúc gọi mơ hình LDA from sklearn.decomposition import LatentDirichletAllocation NB_TOPICS = LDA_model = LatentDirichletAllocation(n_components = NB_TOPICS, max_ iter = 30, random_state = 0) LDA_model.fit(dtm) • Cuối cùng, in top từ theo topic gán topic vào liệu for i, topic in enumerate(LDA_model.components_): print("THE TOP {} WORDS FOR TOPIC #{}".format(10, i)) print([cv.get_feature_names()[index] for index in topic.argsort()[ -3:]]) print("\n") 15 Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 final_topics = LDA_model.transform(dtm) print(final_topics.shape) df["Topic"] = final_topics.argmax(axis=1) Một khuyết điểm phương pháp phân loại topic tweet chưa tìm danh mục (category) hàng nhắc đến tweet Vì vậy, nhóm em dùng topic để gắn nhãn liệu Bộ liệu dùng để xây dựng mơ hình Sau tiền xử lý gắn nhãn, ta thu liệu bao gồm 44318 dòng (so với 50000 dòng ban đầu) cột (với cột thêm vào là: Tweet_processed – liệu tweet sau tiền xử lý Topic – chủ đề vừa tìm từ mơ hình LDA 3.2 Phân chia liệu Từ liệu chia thành tập train test, với feature sử dụng cột Tweet_processed – Cột liệu chứa tweet xử lý lưu lại phần trước target cột Topic – tìm từ mơ hình LDA phần trước Dùng hàm train_test_split thư viện sklearn để chia tách liệu thành tập train test với tỉ lệ tập test 20% tổng liệu Ngồi mơ hình yêu cầu biến đầu vào khác nhau, vấn đề giải thích rõ phần sau 16 Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 3.3 Huấn luyện liệu Mơ hình SVM Mơ hình SVM u cầu biến đầu vào ma trận thuật ngữ tính CountVectorizer giống với mơ hình LDA Tuy nhiên SVM mơ hình phân loại, cịn LDA lại giống mơ hình phân cụm nên tốc độ xây dụng mơ hình SVM nhanh LDA • Đầu tiên cần khởi tạo biến đầu vào CountVectorizer() vectorizer = CountVectorizer(max_features=20000) BOW = vectorizer.fit_transform(cleanedData) • Sau tạo thuộc tính đầu vào cho mơ hình, tiến hành xây dựng mơ hình phân lớp SVM module SVC() thư viện sklearn model = SVC() model.fit(x_train,y_train) • Cuối cùng, dùng Accuracy_score để đánh giá mơ hình predictions = model.predict(x_test) print("Accuracy of model is {}%".format(accuracy_score(y_test,predic tions) * 100)) Mơ hình AdaBoost Khác với SVM, mơ hình AdaBoost u cầu thuộc tính đầu vào ma trận TFIDF (một ma trận ước tính mức độ quan trọng từ câu) • Đầu tiên, tạo ma trận TF-IDF TfidfVectorizer() chuyển dạng mảng vectorizer = TfidfVectorizer(max_features=4000) x = vectorizer.fit_transform(cleanedData).toarray() • Sau đó, khởi tạo mơ hình phân loại AdaBoost module AdaBoostClassifier() sklearn fit vào tập liệu train classifier = AdaBoostClassifier(base_estimator=DecisionTreeClassifie r(),n_estimators=100) classifier.fit(x_train,y_train) • Cuối cùng, dùng tập test để đánh giá mơ hình y_pred = classifier.predict(x_test) print("Test set accuracy of our Adaboost Classifier is {}".format(ro und(accuracy_score(y_pred,y_test)*100,2))) 17 Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 3.4 Các kết Dữ liệu sau cào Sau cào liệu, thu liệu tweet gồm 50000 dòng (25000 theo keyword “want to buy” 25000 theo keyword “need to buy”) cột (Date, User, Tweet) Dữ liệu sau cào lưu file twitter_tweet.csv Dữ liệu sau tiền xử lý Qua bước xử lý (regex, lematizing, pos_tag…) liệu thu so với liệu ban đầu, thấy cột Tweet_processed so với Tweet 18 Downloaded by v? ngoc (vuchinhhp10@gmail.com) lOMoARcPSD|17343589 Tuy nhiên chứa vài dịng khơng có ý nghĩa bị xóa tồn nội dung Sau xóa dịng liệu thu bao gồm 44318 dòng cột Dữ liệu sau gắn nhãn Có nhãn liệu từ 0-4 gắn cho tweet, liệu sau gắn nhãn tăng lên cột so với ban đầu Dữ liệu sau tiền xử lý gắn nhãn lưu vào file tweet_topic.csv Mơ hình SVM Kết Accuracy_score mơ hình SVM khoảng 94.6% Mơ hình Adaboost Kết Accuracy_score mơ hình AdaBoost khoảng 91.1% 3.5 Phân tích đánh giá Từ kết đánh giá mơ hình thấy, độ xác hai mơ hình có chênh lệch, nhiên, chênh lệch lại không đáng kể 94.6% so với 91.1% Việc kết đánh giá cao phần liệu gắn nhãn topic mơ hình LDA trước nên liệu topic có điểm chung Vì vậy, kết luận mơ hình mang lại kết tốt đem vào sử dụng để phân loại tweet thay cho mơ hình LDA chạy chậm, từ tối ưu cho toán xác định xu hướng mua hàng theo tweet Twitter 19 Downloaded by v? ngoc (vuchinhhp10@gmail.com)

Ngày đăng: 09/05/2023, 21:24

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w