Đề tài: Xây dựng công cụ để xác định độ tương đồng giữa 1 hoặc nhiều văn bản đầu vào với các văn bản đã có trong kho ngữ liệu văn bản sẵn có.. Các công trình liên quan: a Các ứng dụng: -
Trang 1UNIVERSITY OF SCIENCE
FACULTY OF INFORMATION TECHNOLOGY
Seminar Report
MÔN: NHẬP MÔN XỬ LÝ
NGÔN NGỮ TỰ NHIÊN
Sinh viên thực hiện : 21127043 - Lư Trung Hậu
21127454 - Đinh Bảo Trân
21127578 - Nguyễn Hồng Quế Anh
Giảng viên hướng dẫn: Nguyễn Hồng Bửu Long
Lê Thanh Tùng Lương An Vinh
Trang 2Mục lục
1 GIỚI THIỆU TỔNG QUAN 2
1.1 Danh sách thành viên nhóm 2
1.2 Đề tài 2
2 NỘI DUNG CHÍNH 2
2.1 Các công trình liên quan 2
2.2 Phương pháp đã cài đặt 3
a) Tải Mô Hình Word2Vec từ Google 3
b) Hàm calculate_sentence_similarity_Word2vec 4
c) Hàm find_matching_sentences 4
d) Hàm calculate_similarity 5
e) Hàm highlight_matching_sentences 5
f) Các hàm load_text, compare_texts, và compare_texts_ui_load_text 5
3 MIÊU TẢ NGỮ LIỆU 6
4 THỰC NGHIỆM 7
4.1 Chuẩn bị môi trường và dữ liệu 7
4.2 Chạy chương trình và tải dữ liệu 7
4.3 Thực hiện so sánh 7
4.4 Phân tích kết quả 7
4.5 Điều chỉnh và thử nghiệm 8
4.6 Hình ảnh thực nghiệm 8
5 KẾT LUẬN 11
6 CÁC NGUỒN THAM KHẢO 12
1
Trang 31 GIỚI THIỆU TỔNG QUAN:
1.1 Danh sách thành viên nhóm :
TADoubleH
21127578 Nguyễn Hồng Quế Anh
1.2 Đề tài:
Xây dựng công cụ để xác định độ tương đồng giữa 1 (hoặc nhiều) văn bản đầu vào với các văn bản đã có trong kho ngữ liệu văn bản sẵn có Hiển thị văn bản và tô màu các câu tương đồng, hiển thị tỉ lệ % số câu tương đồng
Sử dụng ngôn ngữ Python, chạy theo dạng ứng dụng độc lập (không dùng web/server) SV phải build được tool hoàn chỉnh để người dùng chỉ cần mở lên là có thể sử dụng ngay chứ không phải build lại
2 NỘI DUNG CHÍNH:
2.1 Các công trình liên quan:
a) Các ứng dụng:
- Tóm tắt văn bản: Công cụ này có thể được sử dụng để xác định các phần văn
bản quan trọng, giúp trong việc tạo ra tóm tắt cho các trang web hoặc tài liệu dài
- So sánh và phân tích văn bản: Công cụ này còn hữu ích trong việc so sánh
và phân tích văn bản để xác định độ tương đồng giữa chúng Điều này có thể
áp dụng trong nghiên cứu học thuật, kiểm tra sao chép, hay phân tích sự tương quan giữa các văn bản khác nhau
- Ứng dụng trong ngôn ngữ tự nhiên: Trong lĩnh vực xử lý ngôn ngữ tự nhiên,
công cụ này có thể giúp xác định mối quan hệ giữa các từ, cụm từ hoặc câu trong một ngôn ngữ, hỗ trợ việc xây dựng các mô hình ngôn ngữ hiệu quả hơn
- Phát triển công cụ hỗ trợ nghiên cứu và giáo dục: Công cụ có thể hỗ trợ việc
nghiên cứu và giảng dạy bằng cách cung cấp phương tiện để so sánh và phân
2
Trang 4tích văn bản, giúp sinh viên và nhà nghiên cứu hiểu rõ hơn về các chủ đề học thuật
- Phân tích ngữ nghĩa: Sử dụng mô hình Word2Vec, công cụ này có thể giúp
phân tích độ tương tự ngữ nghĩa giữa các văn bản, hỗ trợ trong việc tìm kiếm thông tin và dịch máy, đặc biệt hữu ích trong xử lý văn bản tiếng Việt
b) Các bài báo liên quan:
- MỘT SỐ PHƯƠNG PHÁP TÍNH ĐỘ TƯƠNG ĐỒNG VĂN BẢN DỰA
TRÊN MÔ HÌNH VEC-TƠ, Tạp chí Khoa học và Công nghệ - Đại học Đà Nẵng, 2022 Bài báo này giới thiệu một số phương pháp tính độ tương đồng
văn bản dựa trên mô hình vec-tơ, bao gồm phương pháp Cosine, Jaccard, Matthanan và Levenshtein
- ĐỘ TƯƠNG ĐỒNG NGỮ NGHĨA GIỮA HAI CÂU VÀ ỨNG DỤNG
TRONG TÓM TẮT VĂN BẢN, UET, 2022 Bài báo này giới thiệu phương
pháp tính độ tương đồng câu dựa trên WordNet và Hidden Topic
- NGHIÊN CỨU CÁC PHƯƠNG PHÁP TÍNH TOÁN ĐỘ TƯƠNG TỰ
CỦA VĂN BẢN LUẬT TIẾNG VIỆT, Đại học Bách khoa Hà Nội, 2021.
Bài báo này nghiên cứu các phương pháp tính độ tương đồng văn bản tiếng Việt, đặc biệt là văn bản luật tiếng Việt
2.2 Phương pháp đã cài đặt:
a) Tải Mô Hình Word2Vec từ Google:
GoogleNews-vectors-negative300.bin, là một mô hình được huấn luyện
sẵn, sử dụng dữ liệu từ Google News Nó chứa hàng triệu từ được biểu diễn dưới dạng vector 300 chiều
- Nguyên Tắc Hoạt Động: Biểu diễn từ: Word2Vec sử dụng hai kiến trúc
chính là CBOW (Continuous Bag of Words) và Skip-gram:
+ CBOW: Dự đoán một từ dựa trên ngữ cảnh (các từ xung quanh) + Skip-gram: Ngược lại với CBOW, nó dự đoán ngữ cảnh dựa trên
một từ cụ thể
3
Trang 5- Mục đích: Tải mô hình Word2Vec, được đào tạo sẵn bởi Google, để biểu
diễn từ dưới dạng vector
- Cách thực hiện:
+ Lấy đường dẫn đến file mô hình Word2Vec (định dạng bin)
+ Sử dụng hàm load_word2vec_format từ thư viện Gensim để tải mô
hình này
+ Ứng dụng: Mô hình này giúp chuyển đổi từ thành vector trong không gian nhiều chiều, làm cơ sở cho việc tính toán độ tương đồng ngữ nghĩa
b) Hàm calculate_sentence_similarity_word2vec:
- Mục đích: Tính toán độ tương đồng giữa hai câu.
- Cách thực hiện:
+ Tách từ trong mỗi câu sử dụng word_tokenize.
+ Loại bỏ những từ không có trong mô hình Word2Vec.
+ Tính vector trung bình cho mỗi câu bằng cách cộng vector của từng
từ rồi chia cho số lượng từ
+ Tính độ tương đồng (cosine similarity) giữa hai vector trung bình
này
- Ứng dụng: Xác định mức độ tương đồng ngữ nghĩa giữa hai câu dựa trên
ngữ cảnh sử dụng từ
c) Hàm find_matching_sentences:
- Mục đích: Tìm các cặp câu tương đồng từ hai đoạn văn bản.
- Cách thực hiện:
+ Tách câu từ mỗi văn bản sử dụngsent_tokenize
+ So sánh từng cặp câu từ hai đoạn văn bản bằng cách sử dụng hàm
‘calculate_sentence_similarity_word2vec’.
+ Lưu cặp câu có độ tương đồng vượt quá ngưỡng đã định (ví dụ: 0.8)
- Ứng dụng: Phát hiện những đoạn văn có ý nghĩa tương tự nhau giữa hai văn
bản khác nhau, hữu ích trong việc so sánh và phân tích văn bản
4
Trang 6d) Hàm calculate_similarity:
- Mục đích: Tính toán độ tương đồng tổng thể giữa hai văn bản.
- Cách thực hiện:
+ Tách từ và chuyển chúng thành vector sử dụng Word2Vec
+ Tính độ tương đồng (sử dụng cosine similarity) giữa hai tập hợp vector từ hai văn bản
- Ứng dụng: Cung cấp một đánh giá tổng quan về mức độ tương đồng ngữ
nghĩa giữa hai đoạn văn bản
e) Hàm highlight_matching_sentences:
- Mục đích: Làm nổi bật các cặp câu tương đồng trên giao diện người dùng.
- Cách thực hiện:
+ Duyệt qua từng cặp câu tương đồng, tìm kiếm chúng trong widget văn bản
+ Sử dụng các thẻ (tag) và cấu hình màu sắc để làm nổi bật các cặp câu tương đồng
- Ứng dụng: Trực quan hóa kết quả phân tích, giúp người dùng dễ dàng nhận
biết và so sánh các phần tương đồng
f) Các hàm load_text, compare_texts, và compare_texts_ui_load_text:
- Hàm load_texts:
+ Mục đích: Cho phép người dùng tải văn bản từ tệp tin.
+ Cách thực hiện: Mở hộp thoại để chọn tệp tin, đọc nội dung và hiển
thị trên giao diện
- Hàm compare_texts:
+ Mục đích: Kích hoạt quá trình so sánh văn bản và cập nhật kết quả
trên giao diện
+ Cách thực hiện:
● Lấy nội dung văn bản từ hai widget văn bản
● Sử dụng hàm find_matching_sentences để tìm các cặp câu tương
5
Trang 7đồng và calculate_similarity để tính độ tương đồng tổng thể.
● Cập nhật kết quả và phần trăm tương đồng trên giao diện người dùng
● Gọi hàm highlight_matching_sentences để làm nổi bật các cặp
câu tương đồng trên giao diện
- Hàm compare_texts_ui:
+ Mục đích: Xây dựng và quản lý giao diện người dùng của chương
trình
+ Cách thực hiện:
● Tạo cửa sổ chính, các widget như nhãn (label), vùng nhập văn bản (text area), và nút bấm
● Sắp xếp các widget này trên giao diện sử dụng grid layout
● Liên kết các hành động (như nhấp nút) với các hàm tương ứng
(như load_text và compare_texts).
3 MIÊU TẢ NGỮ LIỆU:
- Mô hình Word2Vec "GoogleNews-vectors-negative300.bin" được đào tạo
trên một phần của tập dữ liệu Google News, gồm khoảng 100 tỷ từ Mô hình này chứa vector 300 chiều cho 3 triệu từ và cụm từ
- Các cụm từ được thu thập thông qua một phương pháp đơn giản dựa trên dữ
liệu, được mô tả trong nghiên cứu "Distributed Representations of Words
and Phrases and their Compositionality"
- Google không công bố cụ thể về cách chia tập dữ liệu train/dev/test khi đào tạo mô hình Word2Vec của họ
- Thông thường trong quá trình đào tạo mô hình NLP, tập dữ liệu thường được chia thành các phần để đào tạo (train), phát triển (dev), và kiểm thử (test) Điều này giúp đảm bảo mô hình hoạt động hiệu quả không chỉ trên dữ liệu
đã thấy trong quá trình đào tạo mà còn trên dữ liệu mới
- Đối với việc huấn luyện các mô hình NLP như Word2Vec, tập dữ liệu lớn và
đa dạng là quan trọng để bao quát được nhiều khía cạnh ngữ nghĩa và cú pháp của ngôn ngữ
- Mô hình được huấn luyện trên tập dữ liệu Google News chắc chắn đã được
6
Trang 8tối ưu hóa để nắm bắt được đa dạng các ngữ cảnh và sử dụng từ vựng trong thực tế
4 THỰC NGHIỆM:
4.1 Chuẩn bị môi trường và dữ liệu
- Cài đặt thư viện: Đảm bảo rằng các thư viện như NLTK, Gensim, và Tkinter
đã được cài đặt trong môi trường Python của bạn
- Tải mô hình Word2Vec: Tải file mô hình
“GoogleNews-vectors-negative300.bin” của Word2Vec, đặt trong thư mục làm việc hoặc cung cấp
đường dẫn chính xác tới file này trong code
- Chuẩn bị dữ liệu: Chuẩn bị hai tệp văn bản cần so sánh.
4.2 Chạy chương trình và tải dữ liệu
- Khởi chạy chương trình: Chạy chương trình Python, nó sẽ mở giao diện
người dùng Tkinter
- Tải văn bản: Sử dụng các nút "Load Text 1" và "Load Text 2" trong giao
diện để tải hai đoạn văn bản đã chuẩn bị
4.3 Thực hiện so sánh
- So sánh văn bản: Nhấp vào nút "Check Similarity" để chương trình bắt đầu
quá trình so sánh văn bản
- Quan sát kết quả:
+ Chương trình sẽ hiển thị độ tương đồng tổng thể giữa hai văn bản + Các cặp câu tương đồng được tìm thấy sẽ được làm nổi bật bằng màu sắc khác nhau trong cả hai văn bản
4.4 Phân tích kết quả
- Đánh giá độ tương đồng: Xem xét tỷ lệ phần trăm tương đồng được hiển thị
và các cặp câu tương đồng được làm nổi bật
- Kiểm tra mức độ chính xác: So sánh kết quả từ chương trình với nhận định
của bạn về mức độ tương đồng giữa hai văn bản
4.5 Điều chỉnh và thử nghiệm
7
Trang 9- Thay đổi ngưỡng tương đồng: Bạn có thể thử điều chỉnh ngưỡng tương
đồng trong hàm find_matching_sentences để xem ảnh hưởng của nó đến kết
quả
- Sử dụng văn bản khác nhau: Thử nghiệm với các đoạn văn bản khác nhau
để kiểm tra tính linh hoạt và độ chính xác của chương trình
4.6 Hình ảnh thực nghiệm:
Hình 1: Hình ảnh chờ
Hình 2: Test 01
- % chính xác: 93.77%
- Số câu tương đồng: 3
8
Trang 10- Các câu tương đồng chi tiết:
+ “The sun rose over the horizon, casting a warm orange glow over the city” và “The city was bathed in a soft orange light as the sun came up”
+ “The children play happily in the playground”
+ “Traffic moved slowly on the main street due to the heavy morning rush” và “Traffic on the main road crawled at snail’s pace because of the morning rush hour”
Hình 3: Test 02
- % chính xác: 93.32%
- Số câu tương đồng: 2
- Các câu tương đồng chi tiết:
+ “Programming languages such as Python and Java remain highly influential in the technology sector” và “Programming languages like Python and Java continue to dominate the tech world”
+ “Cloud services provide businesses with scalable resources and enhanced flexibility” và “Cloud computing offers scalable solutions and flexibility for businesses”
9
Trang 11Hình 4: Test 03
- % chính xác: 94.41%
- Số câu tương đồng: 3
- Các câu tương đồng chi tiết:
+ “The university campus was bustling with students from various faculties” và “Students from different departments were active across the university grounds”
+ “Libraries were packed with learners preparing for their exams” + “The cafeteria served a variety of healthy and delicious meals to students” và “The university’s cafeteria offered a range of nutritious and tasty food options”
10
Trang 12Hình 4: Test 05
- % chính xác: 92.76%
- Số câu tương đồng: 2
- Các câu tương đồng chi tiết:
+ “They communicate with their human families through a series of meows, purrs, and body gestures” và “Through barks, whimpers, and body language, they communicate a range of emotions”
+ “The presence of a cat in a home can greatly enhance the mood and emotional state of its inhabitants” và “The presence of a dog in a home can greatly enhance the mood and emotional state of its inhabitants”
5 KẾT LUẬN:
5.1 Kết quả đạt được:
- Độ chính xác: Chương trình có khả năng phát hiện và làm nổi bật các cặp
câu tương đồng, cung cấp một ước lượng độ tương đồng tổng thể giữa hai văn bản
- Trực quan hóa: Giao diện người dùng dễ sử dụng, cho phép người dùng tải
và so sánh văn bản một cách trực quan
5.2 Thách thức và giới hạn
11
Trang 13- Đa dạng ngữ cảnh: Một số từ có nhiều nghĩa hoặc sử dụng trong ngữ cảnh
đặc biệt có thể không được phân tích chính xác
- Giới hạn mô hình Word2Vec: Word2Vec tuy mạnh mẽ nhưng có hạn chế
trong việc xử lý từ đa nghĩa và phụ thuộc vào dữ liệu huấn luyện
5.3. Hướng phát triển tương lai
- Sử dụng mô hình NLP tiên tiến: Thay thế hoặc bổ sung mô hình Word2Vec
bằng các mô hình hiện đại hơn như BERT, GPT-3, hoặc Transformer-based models Những mô hình này tốt hơn trong việc hiểu ngữ cảnh và xử lý từ đa nghĩa
- Tự đào tạo mô hình: Xem xét việc tự đào tạo mô hình Word2Vec hoặc mô
hình tương tự trên tập dữ liệu đặc thù, nhằm tối ưu hóa cho ngữ cảnh cụ thể của ứng dụng
- Tối ưu giao diện người dùng: Cung cấp thêm tính năng và cải thiện trải
nghiệm người dùng
6 CÁC NGUỒN THAM KHẢO:
- Driscoll, Mike “PySimpleGUI: The Simple Way to Create a GUI With Python – Real Python.” Real Python,
https://realpython.com/pysimplegui-python/
- “Word2vec — Machine Learning cho dữ liệu dạng bảng.” Machine Learning
cơ bản,
https://machinelearningcoban.com/tabml_book/ch_embedding/word2vec.ht ml
- “fse/word2vec-google-news-300 · Hugging Face.” Hugging Face,
https://huggingface.co/fse/word2vec-google-news-300
- “What is Sentence Similarity?” Hugging Face,
https://huggingface.co/tasks/sentence-similarity
- “Text Similarity in NLP.” Scaler,
https://www.scaler.com/topics/nlp/text-similarity-nlp/
12
Trang 14- Import GGNews:
https://stackoverflow.com/questions/46433778/import-googlenews-vectors-n egative300-bin
13