BÁO CÁO CUỐI KÌ XỬ LÍ NGÔN NGỮ TỰ NHIÊN TÓM TẮT Dự án này tập trung vào phân loại ý kiến người dùng sử dụng các mô hình học máy và học sâu để hiểu và đánh giá các ý kiến được chia sẻ trê
Trang 1TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN CUỐI KÌ MÔN XỬ LÍ NGÔN NGỮ TỰ NHIÊN
Người hướng dẫn: PGS TS Nguyễn Tuấn Đăng Người thực hiện: ĐẶNG HOÀNG DUY - 520H0041
NGUYỄN HOÀNG PHÚC KHANG 520H0066 –
Lớp : 20H50201
Khóa : K24
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2024
Trang 2TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN CUỐI KÌ MÔN XỬ LÍ NGÔN NGỮ TỰ NHIÊN
Người hướng dẫn: PGS TS Nguyễn Tuấn Đăng Người thực hiện: ĐẶNG HOÀNG DUY - 520H0041
NGUYỄN HOÀNG PHÚC KHANG – 520H0066
Lớp : 20H50201
Khóa : K24
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2024
Trang 3CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Nhóm chúng em xin cam đoan đây là công trình nghiên cứu của riêng chúng em và được sự hướng dẫn khoa học của thầy Nguyễn Tuấn Đăng Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập các nguồn kháctừ nhau có ghi rõ trong phần tài liệu tham khảo
Ngoài ra, trong báo cáo còn sử dụng một số nhận xét, đánh giá cũng như số liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc
Nếu phát hiện có bất kỳ sự gian lận nào nhóm chúng em xin hoàn toàn chịu trách nhiệm về nội dung Báo cáo cuối kì Xử Lí Ngôn Ngữ Tự Nhiên của mình Trường
Đại học Tôn Đức Thắng không liên quan đến những vi phạm tác quyền, bản quyền do chúng em gây ra trong quá trình thực hiện (nếu có).
TP Hồ Chí Minh, ngày tháng năm
Tác giả
(Ký tên và ghi rõ họ tên)Nguyễn Hoàng Phúc Khang
Đặng Hoàng Duy
Trang 4BÁO CÁO CUỐI KÌ XỬ LÍ NGÔN NGỮ TỰ NHIÊN TÓM TẮT
Dự án này tập trung vào phân loại ý kiến người dùng sử dụng các mô hình học máy và học sâu để hiểu và đánh giá các ý kiến được chia sẻ trên mạng Đầu tiên, dữ liệu đa dạng từ các nguồn như trang web xã hội, diễn đàn, và đánh giá sản phẩm được thu thập và tiền xử lý để chuẩn hóa Sau đó, mô hình học máy được huấn luyện để phân loại ý kiến thành các nhóm khác nhau như tích cực, tiêu cực hoặc trung tính Ngoài ra, các mô hình học sâu như mạng nơ-ron hồi quy và mạng nơ nơ-ron ngữ liệu được tích hợp để nâng cao khả năng hiểu ngôn ngữ tự -nhiên và ngữ cảnh của ý kiến Quá trình đánh giá và tinh chỉnh liên tục được thực hiện để cải thiện độ chính xác và đồng nhất của mô hình Kết quả của dự án cung cấp thông tin quan trọng về xu hướng ý kiến người dùng đối với một sản phẩm, dịch vụ hoặc chủ đề cụ thể Điều này có thể hữu ích cho các doanh nghiệp trong việc đánh giá tiếp thị, phản hồi sản phẩm, và tối ưu hóa chiến lược kinh doanh dựa trên ý kiến và phản hồi của người dùng
Trang 5MỤC LỤC
TÓM TẮT 4
DANH MỤC CÁC CHỮ VIẾT TẮT 6
CHƯƠNG I: GIỚI THIỆU 7
CHƯƠNG II: TIỀN XỬ LÍ DỮ LIỆU 8
1 Thu thập dữ liệu: 8
2 Tiền xử lí: 8
CHƯƠNG III: TRIỂN KHAI 11
1 Giới thiệu thuật toán sử dụng: 11
a) CNN: 11 b) RNN:13 2 Triển khai: 14
3 Tối ưu hóa bằng Hyperparameter: 16
CHƯƠNG IV: KẾT QUẢ 20
TÀI LIỆU THAM KHẢO 23
Trang 6DANH MỤC CÁC CHỮ VIẾT TẮT
Trang 7CHƯƠNG I: GIỚI THIỆU 1 Mô tả bài toán:
Dự án hiện nay tập trung vào việc phát triển một hệ thống phân loại ý kiến người dùng dựa trên sức mạnh của mô hình học máy và học sâu Nhiệm vụ chính của dự án là tự động phân loại và hiểu ý kiến được chia sẻ trực tuyến, từ các nguồn đa dạng như mạng xã hội, diễn đàn và các trang đánh giá sản phẩm
Quá trình bắt đầu bằng việc thu thập dữ liệu rộng lớn, đa dạng và sau đó tiến hành các bước tiền xử lý để chuẩn hóa dữ liệu và tạo nền tảng cho việc huấn luyện mô hình Các mô hình học máy được triển khai để phân loại ý kiến thành các nhóm khác nhau như tích cực, tiêu cực hoặc trung tính Đồng thời, tích hợp các mô hình học sâu như mạng nơ ron hồi quy và mạng nơ ron ngôn ngữ giúp nâng cao khả năng hiểu ngôn ngữ - -tự nhiên và ngữ cảnh của ý kiến
Dự án không ngừng thực hiện quá trình đánh giá và điều chỉnh để cải thiện hiệu suất của mô hình, đảm bảo độ chính xác và đồng nhất Kết quả thu được từ dự án cung cấp thông tin toàn diện về cảm nhận của người dùng, hỗ trợ doanh nghiệp trong việc đánh giá chiến lược tiếp thị và quản lý phản hồi sản phẩm Điều này không chỉ mang lại lợi ích trong quản lý doanh nghiệp mà còn hỗ trợ quyết định dựa trên ý kiến đa dạng của cộng đồng trực tuyến
2 Mục tiêu:
Mục tiêu chính của dự án này là xây dựng một hệ thống phân loại ý kiến người dùng sử dụng mô hình học máy và học sâu Dự án đặt ra nhiệm vụ tăng cường khả năng hiểu và phân loại ý kiến từ các nguồn đa dạng trên internet Đồng thời, mục tiêu cũng bao gồm việc tối ưu hóa hiệu suất của mô hình để đảm bảo độ chính xác và ứng dụng linh hoạt trong nhiều bối cảnh khác nhau Hệ thống sẽ tự động hóa quy trình từ việc thu thập dữ liệu đến đánh giá và tinh chỉnh mô hình, giúp tối ưu hóa quá trình làm việc Mục tiêu cuối cùng là đưa hệ thống vào ứng dụng thực tế để hỗ trợ doanh nghiệp trong việc hiểu rõ hơn về ý kiến người dùng và thúc đẩy sự đổi mới và cải thiện
Trang 8CHƯƠNG II: TIỀN XỬ LÍ DỮ LIỆU 1 Thu thập dữ liệu:
Dữ liệu được sử dụng là IMDB Dataset of 50K Movie Reviews, bao gồm những thuộc tính sau:
- Review: sẽ bao gồm giá trị là những lời nhận xét độc nhất từ tiêu cực đến tích cực, bao gồm 49582 giá trị khác nhau
- Sentiment: sẽ bao gồm 2 giá trị negative và positive biểu thị lời nhận xét theo huynh hướng tiêu cực hay tích cực
Bài báo cáo này sẽ tập trung sử dụng dataset này để xây dựng mô hình đánh giá phân loại ý kiến người dung
2 Tiền xử lí:
Một số kỹ thuật xử lý trước dữ liệu được áp dụng ở đây như sau:
- Làm sạch văn bản: iết thường, oại bỏ các ký tự và số đặc biệt, v l xử lý các từ viết tắt
- Loại bỏ các từ phổ biến ừ gốc hoặc bổ ngữ: Rút gọn các từ về dạng gốc hoặc , t gốc của chúng
- Nhãn mã hóa: sử dụng các kỹ thuật như LabelEncode để chuyển đổi chúng sang định dạng số Tokenization Padding Vectorization: Chuyển đổi dữ liệu văn bản thành định dạng số mà có thể được sử dụng làm đầu vào cho các mô hình học máy Các kỹ thuật như TF IDF (Tần số nghịch đảo tần số thuật ngữ) hoặc nhúng -từ (Word2Vec, GloVe) có thể được sử dụng cho mục đích này
Sau đây là cách triển khai quá trình tiền xử lí:
#Remove punctuations:
imdb_data['review'] = imdb_data['review'].apply(lambda x re.sub:('[%s]' % re.escape(string.punctuation),'' x,))
#Removing words and digits (combined):
imdb_data['review']= imdb_data['review'].apply(lambdaxre.sub('W\d+w*','', ))x
#removing stopwords taking the help of nltk library:from nltk.corpus import stopwords
return" ".join([word for word instr(text split)()if word not in
Trang 9#remove tag
return TAG_RE.sub('',text)
imdb_data['review']=imdb_data['review'].apply(lambda x:remove_tags()) #stemming:
from nltk.stem.porter import PorterStemmer ps=PorterStemmer()
return ps.stem(word)
imdb_data['review']=imdb_data['review'].apply(lambda x:stemming())#removing extra space:
imdb_data['review'] = imdb_data['review'].apply(lambda x re.sub:(' +',' 'x))
#Converting the target variable imdb['sentiment'] to numerical values:encoder=LabelEncoder()
encoder.fit imdb_data(['sentiment'])
imdb_data['sentiment']=encoder.transform imdb_data(['sentiment'])pos_pct=sum(imdb_data['sentiment'])/len(imdb_data['sentiment'])pos_pct
Tiếp theo, chúng ta thực hiện việc chia dữ liệu thành hai phần: một phần được sử dụng để huấn luyện mô hình (train) và phần còn lại được sử dụng để kiểm thử mô hình (test)
#dividing the data into train and test split:
x_tr x_val y_tr y_val=train_test_split imdb_data,,,(['review'],imdb_data['sentiment'],test_size=0.2,random_state=104,shuffle=True)
y_train=np.array y_tr()y_test=np.array y_val()
Cuối cùng là chuyển đổi văn bản thành các token số Kĩ thuật Tokenization sẽ chia văn bản thành câu, câu thành từ, sau đó xử lí các trường hợp đặc biệt, loại bỏ những từ thừa hay không mong muốn và chuẩn hóa từ ngữ Việc làm này sẽ giúp xử lí văn bản có thể xử lí, giảm chiều dài của dữ liệu giúp việc xây dựng mô hình dễ dàng và chính xác hơn
#Tokenizing the sequences:tokenizer=Tokenizer()tokenizer.fit_on_texts x_tr()
Trang 10word_index=tokenizer.word_index
Trang 11CHƯƠNG III: TRIỂN KHAI 1 Giới thiệu thuật toán sử dụng:
Ở đây chúng ta sẽ sử dụng mạng lưới thần kinh Convolutional Neural Network (CNN) và Recurrent Neural Network (RNN)
a) CNN:
Về CNN, là một trong những mô hình Deep Learning tiên tiến nhất hiện nay Nó được thiết kế dựa trên nơ ron tích chập, đặc biệt mạnh mẽ trong việc xây dựng các hệ -thống có độ chính xác và thông minh cao Sức mạnh của CNN được thể hiện rõ khi áp dụng vào nhiều lĩnh vực, đặc biệt là trong bài toán nhận dạng vật thể trên ảnh
CNN đóng vai trò quan trọng trong việc phát triển các hệ thống nhận diện thông minh, mang lại độ chính xác cao trong bối cảnh công nghệ ngày nay Điều này là do CNN không chỉ giúp nhận dạng vật thể mà còn có khả năng tự học các đặc trưng quan trọng từ dữ liệu, tạo ra các biểu diễn hiệu quả Điều này làm cho CNN trở thành công cụ ưu việt trong các ứng dụng yêu cầu độ nhạy cảm và độ chính xác cao, đặc biệt là trong lĩnh vực nhận dạng và phân loại hình ảnh
Hình 1: Sơ đồ các lớp của CNN
CNN bao gồm những lớp sau:
- Lớp Đầu vào (Input Layer): chứa dữ liệu đầu vào, thường là hình ảnh hoặc dãy thời gian trong trường hợp các ứng dụng âm thanh
- Lớp Convolutional (Convolutional Layer) hịu trách nhiệm thực hiện các phép : c tích chập để trích xuất đặc trưng từ dữ liệu đầu vào
- Lớp Activation (Activation Layer): ử dụng hàm kích hoạt như ReLU để thêm s tính phi tuyến tính vào mô hình, giúp mô hình học được các đặc trưng phức tạp
Trang 12- Lớp Pooling (Pooling Layer): Thực hiện các phép lọc để giảm kích thước không gian của dữ liệu, giảm chi phí tính toán và giảm overfitting
- Lớp Kết nối đầy đủ (Fully Connected Layer): Làm phẳng dữ liệu và kết nối mỗi node với tất cả các node trong lớp trước đó Thường xuất hiện ở các phần cuối của mô hình
- Lớp Dropout: Ngăn chặn hiện tượng quá mức học (overfitting) bằng cách ngẫu nhiên "tắt" một số nơ ron trong quá trình huấn luyện.
Lớp Đầu ra (Output Layer): Đưa ra dự đoán cuối cùng, thường áp dụng hàm kích hoạt phù hợp (ví dụ: softmax cho bài toán phân loại)
Mạng Convolutional Neural Network (CNN) được xây dựng từ một loạt các lớp Convolution được xếp chồng lên nhau Trong quá trình này, CNN sử dụng các hàm kích hoạt phi tuyến (như ReLU và tanh) để kích hoạt trọng số trong các nơ-ron Sau khi lớp này được áp dụng, trọng số được tạo ra trong các nơ ron, tạo ra thông tin trừu tượng -hơn cho các lớp tiếp theo
Đặc điểm quan trọng của mô hình CNN là tính bất biến và tính kết hợp Điều này đồng nghĩa với việc độ chính xác có thể bị ảnh hưởng nếu đối tượng giống nhau được chiếu theo nhiều phương diện khác nhau Để đối phó với các biến động như chuyển dịch, co giãn và quay, pooling layer được sử dụng để làm cho mô hình trở nên bất biến với những thay đổi này
Pooling layer đóng vai trò quan trọng trong việc tạo ra tính bất biến đối với dịch chuyển, co giãn và quay Trong khi đó, tính kết hợp cục bộ thể hiện sự biểu diễn từ mức độ thấp đến cao, thông tin được trích xuất thông qua convolution từ các bộ lọc Cơ chế convolution giúp liên kết các lớp với nhau, mỗi lớp kết quả được tạo ra từ lớp convolution trước đó, đảm bảo kết nối cục bộ hiệu quả nhất
Trong quá trình huấn luyện, CNN tự động học các giá trị thông qua lớp filter, học cách nhận diện "mẫu" tương tự cách bộ não con người nhận diện vật thể trong thế giới
Trang 13Hình 2: Sơ đồ các lớp của CNN 2
Tuy CNN là thuật toán phổ biến trên tập dữ liệu ảnh nhưng ở bài báo cáo này sẽ sử dụng trên tập dữ liệu chữ để phân loại ý kiến người dung
b) RNN:
Recurrent Neural Network (RNN) là một loại mô hình neural network được thiết kế để xử lý dữ liệu chuỗi và dữ liệu có tính tuần tự Trái ngược với mô hình truyền thống như Feedforward Neural Network, RNN có khả năng xử lý thông tin từ quá khứ để ảnh hưởng đến quá trình dự đoán hiện tại
Đặc điểm chính của RNN là khả năng duy trì một trạng thái ẩn (hidden state) trong mỗi bước thời gian, nơi nó lưu giữ thông tin về quá khứ Mỗi bước thời gian của RNN nhận đầu vào mới cùng với trạng thái ẩn từ bước trước đó để tạo ra đầu ra và cập nhật trạng thái ẩn mới Điều này giúp RNN xử lý dữ liệu tuần tự và tương tác giữa các phần tử trong chuỗi
Mô hình RNN thích hợp cho nhiều nhiệm vụ, như dự đoán chuỗi thời gian, dịch máy, tạo văn bản, và nhiều ứng dụng trong xử lý ngôn ngữ tự nhiên Tuy nhiên, RNN cũng đối mặt với vấn đề "vanishing gradient" khi xử lý chuỗi dài, khi thông tin từ quá khứ không được duy trì hiệu quả Để khắc phục vấn đề này, nhiều kiến trúc RNN cải tiến đã được phát triển, bao gồm Long Short-Term Memory (LSTM) và Gated Recurrent Unit (GRU)
Trang 14Mô hình Recurrent Neural Network (RNN) được sử dụng trong nhiều ứng dụng khác nhau như xử lý ngôn ngữ tự nhiên, dự đoán chuỗi thời gian, và nhiều tác vụ máy học khác RNN đã đem lại những đóng góp quan trọng trong các lĩnh vực như: - Dịch máy.
- Tạo văn bản tự động
- Nhận diện thực thể trong văn bản - Dự đoán chuỗi thời gian - Học mô hình ngôn ngữ - Tự động hóa việc mô tả hình ảnh - Phân loại văn bản
- Dự đoán từ tiếp theo trong chuỗi văn bản
Ứng dụng của RNN không chỉ giới hạn trong những lĩnh vực này mà còn mở rộng ra nhiều ngữ cảnh và yêu cầu ứng dụng khác nhau tùy thuộc vào nhu cầu cụ thể của
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['acc'])
Trang 15Hình 3: Cấu trúc của mô hình CNN Training with 15 epoches:
history_cnn=model.fit trainvalid_data(,y_train batch_size=,1000,epochs=15,validation_data= test_data y_test(,))
model_lstm.add Dense((,activation="sigmoid"))
model_lstm.compile(optimizer='adam',loss='binary_crossentropy',metrics=['acc'])
Trang 16Hình 4: Cấu trúc mô hình RNN Training with 6 epoches:
history_lstm= model_lstm.fit(trainvalid_data, y_train batch_size=,500,epochs=6 validation_split=0.2)
3 Tối ưu hóa bằng Hyperparameter:
Hyperparameter là các tham số không phải làm nhiệm vụ học từ dữ liệu mà cần được đặt trước khi quá trình huấn luyện mô hình bắt đầu Những tham số này không được học từ dữ liệu mà phải được người phát triển thiết lập trước để ổn định cấu trúc và hành vi của mô hình
Ví dụ, trong một mô hình học máy, các trọng số là những giá trị được cập nhật thông qua quá trình huấn luyện để làm cho mô hình học được từ dữ liệu đầu vào Ngược lại, hyperparameter không phụ thuộc vào dữ liệu mà do người phát triển quyết định trước Các ví dụ về hyperparameter bao gồm learning rate (tốc độ học), số lượng epoch (số lần lặp lại qua dữ liệu), kích thước batch (số lượng mẫu dữ liệu được sử dụng trong mỗi lần cập nhật), và kiến trúc mạng (số lượng lớp, số lượng nơ ron trong mỗi lớp) -Tinh chỉnh hyperparameter là quá trình điều chỉnh giá trị của chúng để tối ưu hóa hiệu suất của mô hình trên dữ liệu kiểm thử
Dưới đây là cách để triển khai hyperparameter:
Trang 17- CNN:
#hyperparameter tuning for cnn:
!pip install keras-tuner import keras_tuner import keras
from keras_tuner.tuners import RandomSearch from tensorflow.keras.regularizers import l2
model=Sequential()
model.add(Embedding input_dim=vocab_size output_dim=embedding_dim input_(,,length=max_length))
model.add(Conv1D filters=hp.Int(('filters', min_value=120, max_value=130,step=1),kernel_size=hp.Int('kernel_size', min_value=4 max_value=7
step=1),activation='relu',kernel_regularizer=l2 hp.Choice(('rate',values=[1e-4,1e-5,1e-6]))))
model.add(GlobalAveragePooling1D())
model.add(Dropout rate=hp.Float(('dropout', min_value=0.3, max_value=0.7,step=0.2)))
model.add(Dense(,activation='sigmoid'))
model.compile(optimizer=keras.optimizers.Adam hp.Choice(('learning_rate',values=[1e-3,1e-2,1e-1])),loss='binary_crossentropy',metrics=['acc']) return model
tuner = RandomSearch ( build_model, objective='val_acc',
max_trials=3 # Number of hyperparameter combinations to try directory='my_tuner3', # Directory to save the search results project_name='my_tuning3'
tuner.search trainvalid_data(, y_train epochs=,5 validation_data=(test_data,y_test))
Hình 5: Kết quả sau khi Hyperparameter CNN best_hps = tuner.get_best_hyperparameters(num_trials=1)[0