Quan điểm và phản hồi của cộng đồng luôn được chứng minh là nguồn dữ liệu cần thiết và có giá trị cho các công ty và tổ chức Với sự sẵn có của một khối lượng lớn dữ liệu đánh giá trực tuyến phân tích cảm xúc ngày càng trở nên quan trọng Đối với tiếng Anh có rất nhiều bộ dữ liệu và mô hình cho mục đích này nhưng vẫn còn tương đối mới đối với ngôn ngữ tiếng Việt Một phần là do thiếu một kho dữ liệu từ đã được chú thích dữ liệu huấn luyện có nhãn các mô hình phân lớp cảm xúc mã nguồn mở và các công cụ phục vụ cho xử lý ngôn ngữ tiếng Việt Trong luận văn này mục tiêu nghiên cứu là thiết kế khởi tạo và đánh giá mô hình phân lớp cảm xúc bình luận tiếng Việt bằng cách sử dụng Thuật toán Máy Vector SVM để phân lớp nhận xét bình luận phim tiếng Việt là tích cực hay tiêu cực Để đánh giá hiệu suất của SVM một số mô hình phân loại khác và nhiều phương pháp trích xuất tính năng được sử dụng và để phân tích so sánh ba biện pháp được sử dụng Precision Recall and F Measure Quan điểm và phản hồi của cộng đồng luôn được chứng minh là nguồn dữ liệu cần thiết và có giá trị cho các công ty và tổ chức Với sự sẵn có của một khối lượng lớn dữ liệu đánh giá trực tuyến phân tích cảm xúc ngày càng trở nên quan trọng Đối với tiếng Anh có rất nhiều bộ dữ liệu và mô hình cho mục đích này nhưng vẫn còn tương đối mới đối với ngôn ngữ tiếng Việt Một phần là do thiếu một kho dữ liệu từ đã được chú thích dữ liệu huấn luyện có nhãn các mô hình phân lớp cảm xúc mã nguồn mở và các công cụ phục vụ cho xử lý ngôn ngữ tiếng Việt Trong luận văn này mục tiêu nghiên cứu là thiết kế khởi tạo và đánh giá mô hình phân lớp cảm xúc bình luận tiếng Việt bằng cách sử dụng Thuật toán Máy Vector SVM để phân lớp nhận xét bình luận phim tiếng Việt là tích cực hay tiêu cực Để đánh giá hiệu suất của SVM một số mô hình phân loại khác và nhiều phương pháp trích xuất tính năng được sử dụng và để phân tích so sánh ba biện pháp được sử dụng Precision Recall and F Measure Quan điểm và phản hồi của cộng đồng luôn được chứng minh là nguồn dữ liệu cần thiết và có giá trị cho các công ty và tổ chức Với sự sẵn có của một khối lượng lớn dữ liệu đánh giá trực tuyến phân tích cảm xúc ngày càng trở nên quan trọng Đối với tiếng Anh có rất nhiều bộ dữ liệu và mô hình cho mục đích này nhưng vẫn còn tương đối mới đối với ngôn ngữ tiếng Việt Một phần là do thiếu một kho dữ liệu từ đã được chú thích dữ liệu huấn luyện có nhãn các mô hình phân lớp cảm xúc mã nguồn mở và các công cụ phục vụ cho xử lý ngôn ngữ tiếng Việt Trong luận văn này mục tiêu nghiên cứu là thiết kế khởi tạo và đánh giá mô hình phân lớp cảm xúc bình luận tiếng Việt bằng cách sử dụng Thuật toán Máy Vector SVM để phân lớp nhận xét bình luận phim tiếng Việt là tích cực hay tiêu cực Để đánh giá hiệu suất của SVM một số mô hình phân loại khác và nhiều phương pháp trích xuất tính năng được sử dụng và để phân tích so sánh ba biện pháp được sử dụng Precision Recall and F Measure Quan điểm và phản hồi của cộng đồng luôn được chứng minh là nguồn dữ liệu cần thiết và có giá trị cho các công ty và tổ chức Với sự sẵn có của một khối lượng lớn dữ liệu đánh giá trực tuyến phân tích cảm xúc ngày càng trở nên quan trọng Đối với tiếng Anh có rất nhiều bộ dữ liệu và mô hình cho mục đích này nhưng vẫn còn tương đối mới đối với ngôn ngữ tiếng Việt Một phần là do thiếu một kho dữ liệu từ đã được chú thích dữ liệu huấn luyện có nhãn các mô hình phân lớp cảm xúc mã nguồn mở và các công cụ phục vụ cho xử lý ngôn ngữ tiếng Việt Trong luận văn này mục tiêu nghiên cứu là thiết kế khởi tạo và đánh giá mô hình phân lớp cảm xúc bình luận tiếng Việt bằng cách sử dụng Thuật toán Máy Vector SVM để phân lớp nhận xét bình luận phim tiếng Việt là tích cực hay tiêu cực Để đánh giá hiệu suất của SVM một số mô hình phân loại khác và nhiều phương pháp trích xuất tính năng được sử dụng và để phân tích so sánh ba biện pháp được sử dụng Precision Recall and F Measure Quan điểm và phản hồi của cộng đồng luôn được chứng minh là nguồn dữ liệu cần thiết và có giá trị cho các công ty và tổ chức Với sự sẵn có của một khối lượng lớn dữ liệu đánh giá trực tuyến phân tích cảm xúc ngày càng trở nên quan trọng Đối với tiếng Anh có rất nhiều bộ dữ liệu và mô hình cho mục đích này nhưng vẫn còn tương đối mới đối với ngôn ngữ tiếng Việt Một phần là do thiếu một kho dữ liệu từ đã được chú thích dữ liệu huấn luyện có nhãn các mô hình phân lớp cảm xúc mã nguồn mở và các công cụ phục vụ cho xử lý ngôn ngữ tiếng Việt Trong luận văn này mục tiêu nghiên cứu là thiết kế khởi tạo và đánh giá mô hình phân lớp cảm xúc bình luận tiếng Việt bằng cách sử dụng Thuật toán Máy Vector SVM để phân lớp nhận xét bình luận phim tiếng Việt là tích cực hay tiêu cực Để đánh giá hiệu suất của SVM một số mô hình phân loại khác và nhiều phương pháp trích xuất tính năng được sử dụng và để phân tích so sánh ba biện pháp được sử dụng Precision Recall and F Measure
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA -
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA -
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan:
Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của TS Phạm Minh Tuấn
Những nội dung trình bày trong luận văn là những kiến thức của riêng cá nhân tôi tích lũy trong quá trình học tập, nghiên cứu, không sao chép lại một công trình nghiên cứu hay luận văn của bất cứ tác giả nào khác
Trong nội dung của luận văn, những phần tôi nghiên cứu, trích dẫn đều được nêu trong phần các tài liệu tham khảo, có nguồn gốc, xuất xứ, tên tuổi của các tác giả, nhà xuất bản rõ ràng
Những điều tôi cam kết hoàn toàn là sự thật, nếu sai, tôi xin chịu mọi hình thức
xử lý kỷ luật theo quy định
TÁC GIẢ LUẬN VĂN PHÙNG VĂN HÒA
Trang 4ỨNG DỤNG MÁY VECTƠ HỖ TRỢ PHÂN LOẠI Ý KIẾN BÌNH LUẬN
NGƯỜI DÙNG XEM PHIM TRỰC TUYẾN Học viên:Phùng Văn Hòa Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01.01 Khóa: 32 Trường Đại học Bách khoa - ĐHĐN Tóm tắt - Quan điểm và phản hồi của cộng đồng luôn được chứng minh là nguồn dữ liệu cần thiết và có giá trị cho các công ty và tổ chức Với sự sẵn có của một khối lượng lớn dữ liệu đánh giá trực tuyến, phân tích cảm xúc ngày càng trở nên quan trọng Đối với tiếng Anh, có rất nhiều bộ dữ liệu và mô hình cho mục đích này nhưng vẫn còn tương đối mới đối với ngôn ngữ tiếng Việt Một phần là do thiếu một kho dữ liệu từ đã được chú thích,
dữ liệu huấn luyện có nhãn, các mô hình phân lớp cảm xúc mã nguồn mở và các công cụ phục vụ cho xử lý ngôn ngữ tiếng Việt
Trong luận văn này, mục tiêu nghiên cứu là thiết kế, khởi tạo và đánh giá mô hình phân lớp cảm xúc bình luận tiếng Việt bằng cách sử dụng Thuật toán Máy Vector (SVM) để phân lớp nhận xét bình luận phim tiếng Việt là tích cực hay tiêu cực Để đánh giá hiệu suất của SVM, một số mô hình phân loại khác và nhiều phương pháp trích xuất tính năng được
sử dụng và để phân tích so sánh, ba biện pháp được sử dụng: Precision, Recall and Measure
F-Từ khóa – Máy vector hỗ trợ, Mô hình phân lớp, phân tích cảm xúc, nlp, đánh giá phân lớp
APPLICATION OF SVM IN SENTIMENT CLASSIFICATION OF USERS
REVIEWS ON ONLINE MOVIE WEBSITES Abstract - Community's view and feedback have always proved to be the most essential and valuable resource for companies and organizations Giving the availability of a large volume
of online review data, sentiment analysis becomes increasingly important For the English language, There are many datasets and models for this purpose but is still relatively new for Vietnamese It is partly due to the lack of a large annotated corpus, labelled training data, open- source sentiment classification models and tools for Vietnamese
In this thesis, the research goal is to design, instantiate and evaluate a Vietnamese sentiment classification model using the Support Vector Machine algorithm (SVM) which evaluates the polarity of a piece of vietnamese film's comments being either positive or negative To benchmark the performance of SVM, several other classifier model and multiple feature extraction methods are used and for comparative analysis, three measures are used: Precision, Recall and F-Measure
Key words - Support Vector Machine, classification model, sentiment analysis, nlp, classification evaluation
Trang 5LỜI CẢM ƠN
Em xin bày tỏ lòng biết ơn chân thành và sâu sắc đến thầy Phạm Minh Tuấn, thầy
đã dành nhiều thời gian tận tình chỉ bảo, hướng dẫn em trong suốt quá trình tìm hiểu, triển khai và nghiên cứu đề tài Thầy là người đã định hướng và đưa ra nhiều góp ý trong quá trình em thực hiện luận văn này
Em xin gửi lời cảm ơn chân thành tới toàn thể các thầy giáo, cô giáo trong khoa Công nghệ thông tin - Trường Đại học Bách Khoa Đà Nẵng đã dạy bảo tận tình, trang
bị cho em những kiến thức bổ ích và tạo điều kiện thuận lợi trong suốt quá trình em học tập và nghiên cứu tại trường Các kiến thức, kinh nghiệm quý báu của các thầy cô giáo không chỉ giúp cá nhân em hoàn thiện hệ thống kiến thức trong học tập mà còn giúp em ứng dụng các kiến thức đó trong công việc hiện tại
Do có nhiều hạn chế về thời gian và kiến thức nên luận văn không tránh khỏi những thiếu sót, rất mong nhận được những ý kiến đóng góp của quý thầy cô và các bạn cùng quan tâm
Xin chân thành cảm ơn!
HỌC VIÊN PHÙNG VĂN HÒA
Trang 6MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN iii
MỤC LỤC iv
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT vii
DANH SÁCH BẢNG viii
DANH SÁCH HÌNH VẼ ix
MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN BÀI TOÁN PHÂN LOẠI Ý KIẾN NGƯỜI DÙNG 5
1.1 Bài toán phân loại ý kiến bình luận người dùng xem phim trực tuyến 5
1.2 Các nghiên cứu liên quan bài toán phân lớp cảm xúc bình luận người dùng hiện nay 8
1.2.1 Các kỹ thuật liên quan đến bài toán phân loại cảm xúc bình luận 8
1.2.2 Các nghiên cứu liên quan đến bài toán phân loại ý kiến người dùng 8
1.2.3 Hướng tiếp cận giải quyết bài toán phân loại cảm xúc dựa vào các kỹ thuật học máy 9
1.3 Xử lý ngôn ngữ tự nhiên 10
1.3.1 Khái niệm 10
1.3.2 Các bước xử lý 10
1.3.3 Ứng dụng 11
1.4 Các bài toán và khái niệm cơ bản liên quan 12
1.4.1 Biểu thức chính quy (regular expressions) 12
1.4.2 Corpus 16
1.4.3 Morphological Analysis (phân tích hình thái) 17
1.4.4 Tokenization (tách từ) 17
1.4.5 Ambiguous (nhập nhằng nghĩa) 19
1.4.6 Stopwords (từ dừng) 20
1.4.7 Named Entities Recognition (nhận dạng tên thực thể) 21
1.4.8 Lemmatization và Stemming 21
1.4.9 Part of Speech (gán nhãn từ loại) 22
1.5 Khó khăn trong xử lý ngôn ngữ tự nhiên tiếng việt 23
1.6 Trích xuất đặc trưng 25
Trang 71.6.1 TF-IDF 25
1.6.2 Bag-of-Word (mô hình túi từ) 27
1.6.3 Word2Vec 27
CHƯƠNG 2: MÁY HỌC VECTƠ HỖ TRỢ 30
2.1 Tổng quan về bài toán phân lớp 30
2.1.1 Khái niệm 30
2.1.2 Một số thuật toán phân lớp phổ biến 32
2.1.2.1 Naive Bayes 32
2.1.2.2 K-Nearest Neighbors 33
2.1.2.3 Maximum Entropy 33
2.1.3 Đánh giá mô hình phân loại 34
2.1.4 Phân tích giá trị đơn 37
2.2 Support Vector Machine (SVM) 38
2.2.1 Giới thiệu 38
2.2.2 Cơ sở toán học 40
2.2.2.1 Ý tưởng 40
2.2.2.2 Xây dựng bài toán tối ưu cho SVM 41
2.2.3 Biên mềm (Soft Margin) 43
2.2.4 Các hàm thiệt hại cho SVM 46
2.3 Hàm hạt nhân SVM (Kernel) 46
2.3.1 Giới thiệu 46
2.3.2 Cơ sở toán học 47
2.3.3 Tính chất hàm hạt nhân 49
2.4 Phân lớp cảm xúc bình luận phim bằng SVM 50
2.4.1 Thu thập dữ liệu 51
2.4.2 Tiền xử lý 51
2.4.2.1 Làm sạch dữ liệu 51
2.4.2.2 Tách từ 52
2.4.3 Trích xuất đặc trưng bình luận 53
2.4.3.1 Trích xuất đặc trưng TF-IDF 53
2.4.3.2 Giảm chiều dữ liệu 54
2.4.4 Huấn luyện và đánh giá mô hình 55
Trang 8CHƯƠNG 3: THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ 58
3.1 Dữ liệu, công cụ và môi trường thực hiện 58
3.2 Tiền xử lý dữ liệu 58
3.3 Trích xuất đặc trưng bình luận 62
3.4 Huấn luyện mô hình SVM và đánh giá 64
KẾT LUẬN 69
DANH MỤC CÁC TÀI LIỆU THAM KHẢO 71
PHỤ LỤC 73
Trang 9DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
NLP Natural Language Processing Xử lý ngôn ngữ tự nhiên
IDF Inverse Document Frequency Tần số tài liệu nghịch đảo
SVD Singular Value Decomposition Phân tích giá trị đơn
Trang 10DANH SÁCH BẢNG
Bảng 1.1: Bảng các ký tự đặc biệt dùng trong Regex 16
Bảng 2.1: Cấu trúc biểu diễn ma trận nhầm lẫn 34
Bảng 2.2: So sánh điểm tương đồng giữa SVM, Mạng Nơron 39
Bảng 2.3: Một số hàm SVM kernel thông dụng 49
Bảng 2.4: Một số bình luận được làm sạch 52
Bảng 2.5: Một số bình luận tiến hành tách từ thông thường 53
Bảng 2.6: Một số bình luận tiến hành tách từ áp dụng regex nâng cao 53
Bảng 3.1: Môi trường, thư viện và dữ liệu thực nghiệm 58
Bảng 3.2: Kết quả phân lớp SVM trên tập dữ liệu kiểm thử 67
Bảng 3.3: Kết quả phân lớp SVM trên tập dữ liệu kiểm thử không áp dụng regex nâng cao ở bước tiền xử lý 67
Bảng 3.4: So sánh hiệu quả của một số phương pháp trích xuất đặc trưng và giải thuật phân lớp phổ biến 68
Trang 11DANH SÁCH HÌNH VẼ
Hình 1.1: Các loại hình video theo nhu cầu được xem nhiều nhất tại Việt Nam 6
Hình 1.2: Các thiết bị được sử dụng để xem video trực tuyến 7
Hình 1.3: Mô hình phân lớp cảm xúc bình luận SVM 7
Hình 1.4: Quy trình xử lý ngôn ngữ tự nhiên phổ biến 11
Hình 1.5: Các bước tiền xử lý dữ liệu 11
Hình 1.6: Ví dụ tách từ trong câu 18
Hình 1.7: Phân tích gán nhãn cho các từ trong câu 20
Hình 1.8: Gán nhãn loại từ cho các từ trong câu 23
Hình 1.9: Trích xuất đặc trưng bằng mô hình Bag-of-Word 27
Hình 1.10: Biểu diễn từ Queen bằng phương pháp one-hot-vector 28
Hình 1.11: Biểu diễn từ bằng phương pháp word2vec 28
Hình 1.12: Minh họa 2 mô hình CBOW và Skip-gram 29
Hình 2.1: Minh họa hai mô hình học giám sát và học không giám sát 31
Hình 2.2: Ma trận nhầm lẫn cho mô hình phát hiện ảnh mèo 35
Hình 2.3: Minh họa độ chính xác và độ bao phủ 36
Hình 2.4: Siêu phẳng phân tách dữ liệu trong không gian 𝑹𝟐 và 𝑹𝟑 39
Hình 2.5: Các mặt phẳng phân chia 2 lớp dữ liệu 40
Hình 2.6: Một số siêu phẳng phân chia 2 lớp dữ liệu trong đó mặt phẳng 𝑯𝟐 là tối ưu nhất 41
Hình 2.7: Siêu phẳng với lề cực đại trong không gian 𝑹𝟐 42
Hình 2.8: Xuất hiện điểm dữ liệu nhiễu 44
Hình 2.9: Dữ liệu gần như không thể phân tách tuyến tính 44
Hình 2.10: Bổ sung thêm biến slack 𝝃𝒏 đối với các điểm nhiễu 45
Hình 2.11: Hàm hạt nhân chuyển dữ liệu từ không gian 𝑹𝟐 chiều sang 𝑹𝟑 47
Hình 2.12: Quy trình xây dựng phân lớp cảm xúc bình luận phim trực tuyến 51
Hình 2.13: Nén ảnh bằng phương pháp SVD Với số chiều càng giảm nhiều thì ảnh càng mất nhiều chi tiết so với ảnh gốc 54
Hình 2.14: Phân lớp SVM sử dụng và không sử dụng tham số trọng số lớp class_weight 55
Hình 2.15: Đường bao phân lớp SVM với các giá trị C khác nhau 56
Hình 2.16: Đường bao phân lớp SVM với các giá trị gamma khác nhau 56
Trang 12Hình 3.1: Biểu đồ số lượng dữ liệu bình luận và tổng số token riêng biệt trong các bình
luận 59
Hình 3.2: Biểu đồ phân bố độ dài các bình luận tích cực 60
Hình 3.3: Biểu đồ phân bố độ dài các bình luận tiêu cực 60
Hình 3.4: WordCloud bình luận tích cực 61
Hình 3.5: WordCloud bình luận tiêu cực 62
Hình 3.6: 40 từ có điểm trung bình tf-idf cao nhất trong các bình luận thuộc 2 lớp dữ liệu huấn luyện 63
Hình 3.7: Biểu đồ tương quan giữa số chiều dữ liệu và lượng thông tin được giữ lại 64 Hình 3.8: Biểu đồ nhiệt độ chính xác của SVM sử dụng kernel linear với các giá trị C và class_weight khác nhau 65
Hình 3.9: Biểu đồ nhiệt độ chính xác của SVM sử dụng kernel rbf với các giá trị C, class_weight, gamma khác nhau 66
Trang 13MỞ ĐẦU
1 Lý do chọn đề tài
Ngày nay, ngành công nghiệp điện ảnh đang bùng nổ khiến cho người xem khó khăn trong việc chọn phim khó khăn hơn Ngoài ra khán giả càng ngày càng khó tính hơn và bận rộn nhiều hơn nên trước khi xem một bộ phim nào đó, họ cân nhắc đủ thứ
từ nội dung, xem trailer, diễn viên, đạo diễn, nhận xét phim, điểm phim, thậm chí là cả kinh phí làm phim để quyết định những phim đáng xem mà không lãng phí thời gian
Đa phần người xem vẫn thường có xu hướng dựa vào những bình luận, nhận xét phim
từ những người xem trước để quyết định việc xem phim vì nó cung cấp một cái nhìn tổng quát về phim nhanh chóng và thực tế Do đó, những lời bình luận về phim đóng vai trò rất quan trọng trong việc quyết định xem phim của người xem
Có nhiều lý do khiến cho việc đọc bình luận phim là không nên Một khi chúng
ta đọc những lời bình luận, nhận xét ấy, trí nhớ ngắn hạn của chúng ta sẽ lưu giữ chúng
và ít nhiều, việc đó sẽ ảnh hưởng tới cảm xúc của chúng ta khi xem phim Ngoài ra, tổng
số các bình luận, nhận xét từ người xem có thể rất lớn và một số bình luận có thể cần phải có kiến thức chuyên ngành để nhận biết được đó là bình luận khen hay chê Do đó cần phải có một công cụ khai thác dữ liệu để khám phá thông tin từ các lời bình luận phim nhằm tiết kiệm thời gian và công sức cho người xem trong việc lựa chọn phim để xem
May mắn là tốc độ xử lý của máy tính càng ngày càng lớn và sự phát triển mạnh
mẽ của trí tuệ nhân tạo đã giúp máy tính thực sự trở thành một công cụ đắc lực, hỗ trợ con người trong nhiều lĩnh vực, trong đó có lĩnh vực phân loại thông tin Ở Việt Nam, cũng đã có nhiều nghiên cứu về lĩnh vực xử lý văn bản tiếng Việt, như đề tài nghiên cứu
về Máy dịch tự động Anh –Việt (EVTRan) của viện nghiên cứu ứng dụng công nghệ,
đề tài nhận dạng, xử lý tiếng Việt VnDoc của viện công nghệ thông tin và nhiều luận văn tốt nghiệp cao học đại học khác Nhưng nghiên cứu về phân loại văn bản tiếng Việt chưa nhiều và kết quả còn hạn chế Bởi vậy, trong luận văn này em chỉ tập trung phát triển hệ thống phân loại bình luận phim tiêu cực và tích cực nhằm phục vụ cho người xem chọn phim nhanh chóng mà không tốn nhiều công sức
Hệ thống sẽ sử dụng mô hình Support Vector Machines để phân loại các bình luận phim bởi các đặc tính của thuật toán rất phù hợp cho việc phân loại dữ liệu có số lượng đặc trưng lớn như văn bản và bản chất của SVM phù hợp cho bài toán phân lớp nhị phân Ngoài ra, qua các thực tế đã được kiểm chứng thì hệ thống phân loại văn bản
sử dụng thuật toán SVM có độ chính xác cao và tốc độ xử lý nhanh
2 Mục tiêu và nhiệm vụ nghiên cứu
Trang 14a) Mục tiêu
Nghiên cứu và xây dựng một chương trình có khả năng phân loại ý kiến bình luận phim của người dùng theo cảm xúc tích cực và tiêu cực một cách tự động dựa trên việc phân tích nội dung của bình luận thành các từ hoặc cụm từ khóa và áp dụng bộ phân lớp nhị phân SVM
b) Nhiệm vụ
- Nghiên cứu về bài toán phân lớp và các giải thuật phân lớp cho bài toán phân lớp văn bản
- Nghiên cứu thuật toán phân lớp SVM và các hàm nhân sử dụng với SVM
- Nghiên cứu đặc trưng của tiếng Việt
- Nghiên cứu các bài toán cơ bản của xử lý ngôn ngữ tự nhiên Trích xuất đặc trưng từ dữ liệu văn bản qua đó có thể biểu diễn văn bản dưới dạng vector nhằm phục vụ cho mục đích huấn luyện và phân loại
- Tìm hiểu các phương pháp đánh giá phân lớp
- Chuẩn bị dữ liệu bình luận đã được gán nhãn cảm xúc cho việc huấn luyện và đánh giá mô hình phân lớp
3 Đối tượng và phạm vi nghiên cứu
Trong khuôn khổ của luận văn thuộc loại nghiên cứu và ứng dụng, đề tải chỉ giới hạn nghiên cứu các vấn đề sau:
- Các mô hình, thuật toán phân lớp dữ liệu Đặc biệt là mô hình phân lớp dữ liệu SVM
- Đặc trưng của tiếng Việt
- Các thuật toán cơ bản của xử lý ngôn ngữ tự nhiên
- Các phương pháp đánh giá phân lớp
4 Phương pháp nghiên cứu
a) Phương pháp lý thuyết
- Tiến hành thu thập và nghiên cứu các tài liệu có liên quan đến đề tài
- Nghiên cứu các mô hình, thuật toán phân lớp dữ liệu Đặc biệt là mô hình SVM
- Tìm hiểu các thuật toán xử lý văn bản cơ bản
- Tìm hiểu các phương pháp trích xuất đặc trưng văn bản
Trang 15b) Phương pháp thực nghiệm
- Xây dựng chương trình demo dựa trên giải pháp đề xuất
- Thực nghiệm trên dữ liệu đầu vào là các ý kiến thuộc dữ liệu kiểm thử đã được thu thập ban đầu
- Kiểm tra, nhận xét và đánh giá kết quả
5 Ý nghĩa khoa học và thực tiễn của đề tài
a) Ý nghĩa khoa học
- Hiểu được cách thức hoạt động cơ bản của một số thuật toán phân loại phổ biến
- Nắm vững được mô hình phân loại Support Vector Machines (SVM)
- Nắm được kiến thức cơ bản về xử lý ngôn ngữ tự nhiên, đặc biệt là xử lý tiếng Việt Hiểu rõ hơn các đặc trưng của tiếng Việt
- Tạo được bộ dữ liệu phục vụ cho việc huấn luyện các mô hình phân loại văn bản tích cực và tiêu cực của tiếng Việt
- Kết quả có thể làm tài liệu tham khảo cho các học viên – sinh viên trong việc nghiên cứu xử lý ngôn ngữ tự nhiên
b) Ý nghĩa thực tiễn
Ứng dụng cho các hệ thống phân tích người dùng của các trang phim trực tuyến hoặc cho chính những người xem phim trực tuyến Góp phần giúp ban quản trị có thể quan sát và lấy ý kiến người dùng tốt hơn và giảm sức lao động của con người Đồng thời cũng giúp người dùng giảm thiểu thời gian và công sức trong việc đọc bình luận để quyết định xem phim Ngoài ra đề tài còn có ý nghĩa thúc đẩy phát triển và ứng dụng trí tuệ nhân tạo trong xử lý ngôn tự nhiên tiếng Việt
6 Cấu trúc luận văn
Luận văn được trình bày bao gồm 3 chương:
Chương 1 Tổng quan bài toán phân loại ý kiến người dùng: Nội dung của chương trình bày tổng quan về bài toán phân loại ý kiến bình luận phim của người dùng theo cảm xúc tích cực và tiêu cực trên các trang xem phim trực tuyến phổ biến ở Việt Nam Đồng thời cũng trình bày các nội dung chính về cơ sở lý thuyết của lĩnh vực xử lý ngôn ngữ tự nhiên
Chương 2 Phương pháp học máy SVM: Nội dung chương sẽ giới thiệu tổng quan về bài toán phân lớp dữ liệu trong lĩnh vực học máy, các mô hình phân lớp phổ
Trang 16biến và cách đánh giá hiệu quả của mô hình phân lớp Đồng thời trình bày các cơ sở lý thuyết chính để xây dựng mô hình phân lớp SVM cho bài toán phân loại ý kiến bình luận
Chương 3 Thực nghiệm và đánh giá kết quả: Nội dung chương trình bày về
sử dụng SVM để huấn luyện dữ liệu bình luận phim và tiến hành phân loại bình luận theo cảm xúc Xây dựng ứng dụng demo và đánh giá các kết quả từ các phương pháp trích xuất đặc trưng văn bản và thuật toán phân lớp khác nhau Từ đó rút ra những kết luận quan trọng trong bài toán phân loại ý kiến bình luận người dùng theo cảm xúc Phần kết luận: Phần này sẽ trình bày những kết quả đạt được của luận văn, đồng thời cũng chỉ ra những hạn chế và hướng phát triển trong tương lai
Trang 17CHƯƠNG 1: TỔNG QUAN BÀI TOÁN PHÂN LOẠI Ý KIẾN
NGƯỜI DÙNG
1.1 Bài toán phân loại ý kiến bình luận người dùng xem phim trực tuyến
Ngày nay, với sự phát triển mạnh mẽ của internet… người ta có thể ngồi hàng giờ mỗi ngày để đọc báo, nghe nhạc và chia sẻ cảm xúc, viết các ghi chú, bình luận…
Ẩn trong những bình luận đó là những cảm xúc vui, buồn, yêu, ghét… của người dùng Những thứ mang hướng “cảm tính” như thế nếu không phải là con người tự đọc, tự hiểu được thì nó thực sự là một thách thức lớn đối với máy tính
Bài toán phân loại bình luận ý kiến theo cảm xúc tích cực, tiêu cực là một trong những bài toán biến thể của phân lớp văn bản Mục đích chính của bài toán phân tích cảm xúc (hay còn gọi là khai thác ý kiến), xác định cảm xúc liên kết với văn bản bằng cách trích xuất ngữ cảnh cảm xúc từ văn bản Đây là một trong những bài toán có tính ứng dụng rất cao trong xử lý ngôn ngữ tự nhiên vì các bình luận sản phẩm có tác động trực tiếp đến việc hỗ trợ người dùng quyết định có sử dụng hoặc mua sản phẩm nào đó hay không Ngoài ra,theo thống kê thu thập được thì tỉ lệ xem video mỗi ngày cũng có
sự tang đáng kể qua từng năm Báo cáo chỉ ra rằng, trong 4 năm vừa qua tính đến năm
2016, tỉ lệ xem video trực tuyến mỗi ngày đã tăng chỉ từ 10% lên đến 64% trong số những người sử dụng internet tại Việt Nam [14] Với tốc độ tăng trưởng như vậy sẽ khiến lượng dữ liệu cần phân tích càng ngày càng lớn và sẽ gần như không thể xử lý hoàn toàn bằng sức người mà cần có một quy trình xử lý tự động
Trang 18Hình 1.1: Các loại hình video theo nhu cầu được xem nhiều nhất tại Việt
Trang 19Hình 1.2: Các thiết bị được sử dụng để xem video trực tuyến [14]
Mục đích của bài toán: Xác định, phân loại được bình luận của người dùng dành cho các bộ phim trên các trang xem phim trực tuyến là tiêu cực hay tính cực
Đầu vào: Các bình luận phim của người dùng được chia sẻ trên các trang xem phim trực tuyến
Đầu ra: Phân lớp, gán nhãn cho các bình luận của người dùng vào 2 lớp tiêu cực
và tích cực
Hình 1.3: Mô hình phân lớp cảm xúc bình luận SVM
Ví dụ về bài toán phân loại cảm xúc:
Đầu vào: Phim dở quá không hay tí nào
Đầu ra: Tiêu cực
Trang 201.2 Các nghiên cứu liên quan bài toán phân lớp cảm xúc bình luận người dùng hiện nay
1.2.1 Các kỹ thuật liên quan đến bài toán phân loại cảm xúc bình luận
Bài toán phân loại ý kiến của người dùng sử dụng phương pháp phân lớp Phân lớp (hay phân loại) là một tiến trình xử lý nhằm xếp các mẫu dữ liệu hay các đối tượng vào một trong các lớp đã được định nghĩa trước Các thuật toán phân lớp tiêu biểu cho bài toán phân loại văn bản bao gồm [8]: Cây quyết định (Decision Tree), máy vector hỗ trợ (Support Vector Machine - SVM), K láng giềng gần nhất (KNN), Maximum Entropy Model (MaxEnt), Naive Bayes Trong luận văn của mình, tác giả tiến hành thực nghiệm với cả bốn mô hình phân lớp tiêu biểu trên để chứng minh hiệu quả của mô hình phân lớp SVM cho bài toán phân lớp cảm xúc bình luận
1.2.2 Các nghiên cứu liên quan đến bài toán phân loại ý kiến người dùng
Có nhiều nghiên cứu tiếng Việt về khai phá quan điểm, tuy nhiên những nghiên cứu trong chuyên về phân tích cảm xúc người dùng ở Việt Nam còn ít Các nghiên cứu thường thiên về khai phá quan điểm nói chung, nhưng chuyên về miền cảm xúc người dùng thì hầu như chưa có Đặc biệt với bài toán phân lớp cảm xúc bình luận phim ngôn ngữ tiếng Việt thì chưa có nghiên cứu nào được công bố trước đây
Sau đây là một vài nghiên cứu có liên quan đến xử lý và phân tích văn bản tiếng Việt:
- Trích xuất ý định người dùng mua hàng trên mạng xã hội sử dụng phương pháp suy luận các mô hình: Công trình nghiên cứu luận văn thạc sĩ của tác giả Doãn Huyền Trang trường Đại Học Công nghệ, đại học Quốc gia
Hà Nội sử dụng phương pháp suy luận các mô hình vào bài toán khai thác ý định mua hàng người dùng trên mạng xã hội cụ thể là trên Facebook dựa vào hành vi đăng tải và bình luận của họ trên các trang bán hàng
- Phân loại văn bản với máy học vector hỗ trợ: Nghiên cứu của Trần Cao Đệ
và Phạm Nguyên Khang đăng trên Tạp chí Khoa học 2012 sử dụng công cụ SVM áp dụng cho bài toán gán các nhãn phân loại lên một văn bản
- Phân loại văn bản dựa trên rút trích tự động tóm tắt của văn bản: Bài báo khoa học của tác giả Trương Quốc Định Khoa Công nghệ thông tin & Truyền thông, Trường Đại học Cần Thơ sử dụng máy học vectơ hỗ trợ để phân lớp văn bản và thực hiện đối chiếu, so sánh giải với phương pháp phân loại khác
Trang 21- Phân loại cảm xúc người dùng trong mạng xã hội: Luận văn thạc sĩ của tác giả Đỗ Hồng Đạt sử dụng máy học vector để phân lớp bình luận tiêu cực và tích cực của người nghe nhạc trực tuyến
- Phân loai ý kiến trên Twitter: Bài báo khoa học của tác giả Võ Tuyết Ngân trên tạp chí khoa học Trường Đại học Cần Thơ tiến hành phân loại ý kiến trên Twitter là phân loại cho từng bình luận theo hướng quan điểm tích cực hay tiêu cực dựa trên nội dung bình luận Tác giả sử dụng thuật tốn SVM và Multinomial Nạve Bayes để tiến hành phân lớp ý kiến của người dùng theo cảm xúc
1.2.3 Hướng tiếp cận giải quyết bài tốn phân loại cảm xúc dựa vào các kỹ thuật học máy
Mục tiêu của học máy (Machine Learning) là xây dựng một giải thuật để nhận biết được dữ liệu đầu vào mới từ những dữ liệu đã được huấn luyện trước đĩ
Cĩ hai giai đoạn chính trong việc phân lớp dữ liệu, cụ thể [5]:
- Giai đoạn huấn luyện: Từ tập dữ liệu huấn luyện đưa ra được mơ hình cĩ thể phân chia dữ liệu cho từng lớp
- Giai đoạn áp dụng: Phân lớp văn bản mới dựa vào mơ hình đã được xây dựng
từ giai đoạn huấn luyện
Ở cả hai giai đoạn huấn luyện và áp dụng, dữ liệu đều phải qua hai pha chính là tiền xử lý dữ liệu (Data preprocessing) và trích chọn vectơ đặc trưng cho văn bản Cụ thể các bước này như sau [5]:
- Tiền xử lý dữ liệu (Data preprocessing): Ở bước này, dữ liệu sẽ được xử lý để loại bỏ hay chỉnh sửa cho phù hợp với mục tiêu của bộ phân loại Với việc xử
lý ngơn ngữ tự nhiên, dữ liệu thu thập được sẽ chứa những thơng tin dư thừa ( thẻ HTML, script, css…) hoặc gặp những sai sĩt về ngữ pháp chính tả Tập
dữ liệu thơ sẽ được loại bỏ những thơng tin dư thừa này hay chỉnh sửa lại những sai sĩt để đảm bảo cho dữ liệu đạt chuẩn yêu cầu về ngơn ngữ Ở pha tiếp theo, dữ liệu sẽ được phân tích thành các đơn vị nhỏ về cú pháp như tách câu, tách từ, gán nhãn hoặc nhận diện từ loại Những thơng tin về các đơn vị ngơn ngữ này sẽ ảnh hưởng đến ngữ nghĩa của câu hay văn bản và sẽ được sử dụng trong việc lựa chọn đặc trưng để xây dựng mơ hình phân lớp
- Trích xuất đặc trưng: Ở bước này, các thành phần ngơn ngữ sẽ được lựa chọn hợp lý sao cho một văn bản cĩ thể vectơ hĩa để biểu diễn được như sau: 𝐷𝑜𝑐 = {𝑣 , 𝑣 ,…, 𝑣 }
Trang 22Trong đĩ:
- 𝐷𝑜𝑐 là văn bản thứ i của tập dữ liệu
- 𝑣 , 𝑣 ,…, 𝑣 là tập các vec-tơ đặc trưng Sau khi lựa chọn đặc trưng xong, ta cĩ thể áp dụng các giải thuật phân lớp khác nhau ví dụ như K-Nearest Neighbors, Nạve Bayes, Máy vector hỗ trợ (SVM)… để tiến hành phân lớp bình luận theo cảm xúc
1.3 Xử lý ngơn ngữ tự nhiên
1.3.1 Khái niệm
Ngơn ngữ tự nhiên là ngơn ngữ mà các lồi động vật sáng tạo ra để giao tiếp với đồng loại Con người cũng là một loại động vật sử dụng ngơn ngữ để giao tiếp Thế giới ngơn ngữ của con người rất phong phú, theo thơng kê của các nhà khoa học thì cĩ tới hàng ngàn ngơn ngữ tồn tại trên trái đất Ngơn ngữ tự nhiên cĩ 2 dạng là chữ viết và âm thanh Ngơn ngữ của mỗi dân tộc, quốc gia lại khác nhau bao gồm khác nhau cả về cách viết cũng như cách phát âm
Xử lý ngơn ngữ tự nhiên (natural language processing - NLP) là một nhánh của lĩnh vực trí tuệ nhân tạo tập trung vào các ứng dụng trên ngơn ngữ của con người Mục tiêu của lĩnh vực này là làm cho máy tính thực hiện hiệu quả những nhiệm vụ liên quan đến ngơn ngữ của con người như giao tiếp giữa người và máy, cải thiện hiệu quả giao tiếp giữa người với người, hoặc đơn giản là nâng cao hiệu quả xử lý văn bản và lời nĩi
Xử lý ngơn ngữ tự nhiên ra đời từ những năm 1940, với rất nhiều cơng trình nghiên cứu theo hai hướng chính là: 1) ơ-tơ-mát (automaton) và các mơ hình xác suất (probabilistic models) vào những năm 1950; 2) các phương pháp dựa trên ký hiệu (symbolic) và các phương pháp ngẫu nhiên (stochastic) vào những năm 1970 Giai đoạn tiếp theo (1970-1983) chứng kiến sự bùng nổ trong nghiên cứu về xử lý tiếng nĩi và ngơn ngữ Ngày nay với sự phát triển nhanh chĩng, học máy (machine learning) đã trở thành trung tâm của phần lớn các lĩnh vực thuộc khoa học máy tính, bao gồm xử lý ảnh
và thị giác máy tính, tin sinh học, các hệ gợi ý, kỹ nghệ phần mềm, và cả xử lý ngơn ngữ tự nhiên
Trong lĩnh vực trí tuệ nhân tạo thì xử lý ngơn ngữ tự nhiên là một trong những phần khĩ nhất vì nĩ liên quan đến việc phải hiểu ý nghĩa ngơn ngữ cơng cụ hồn hảo nhất của tư duy và giao tiếp
1.3.2 Các bước xử lý
Quá trình xử lý ngơn ngữ tự nhiên thường được thực hiện theo mơ hình như sau
Trang 23Hình 1.4: Quy trình xử lý ngôn ngữ tự nhiên phổ biến Trong đó bước tiền xử lý gồm 5 bước
Hình 1.5: Các bước tiền xử lý dữ liệu 1.3.3 Ứng dụng
Xử Lý Ngôn Ngữ Tự Nhiên đóng vai trò vô cùng quan trọng trong ngành Khoa Học Máy Tính và có rất nhiều ứng dụng hữu ích trong đời sống cũng như trong nghiên cứu Có thể điểm qua một vài ứng dụng điển hình của xử lý ngôn ngữ tự nhiên như:
- Nhận dạng chữ viết: Có hai kiểu nhận dạng thường gặp, thứ nhất là nhận dạng chữ in, ví dụ nhận dạng chữ trên giấy rồi chuyển nó thành dạng văn bản điện tử như dưới định dạng doc của Microsoft Word chẳng hạn Phức tạp hơn
là nhận dạng chữ viết tay, nó khó khăn hơn bởi vì chữ viết tay không có khuôn dạng rõ ràng và khác nhau ở mỗi người Với ứng dụng này ta có thể chuyển các quyển sách trong thư viện thành văn bản điện tử trong thời gian ngắn mà không tốn nhiều sức người Nhận dạng chữ viết của con người có ứng dụng trong khoa học hình sự và bảo mật thông tin (nhận dạng chữ ký điện tử)
- Nhận dạng tiếng nói: Nhận dạng tiếng nói thường được dùng để chuyển các câu nói thành văn bản tương ứng Giúp con người thao tác trên các thiết bị điện tử nhanh hơn và đơn giản hơn, chẳng hạn như gõ một tài liệu nào đó
Trang 24bằng cách đọc thay vì phải gõ từng ký tự Nhận dạng tiếng nói có khả năng trợ giúp người khiếm thị và người khuyết tật rất nhiều
- Tổng hợp tiếng nói: Từ một văn bản ứng dụng sẽ tự động chuyển thành tiếng nói Thay vì phải tự đọc một cuốn sách hay nội dung một trang web, nó tự động đọc cho chúng ta Giống như nhận dạng tiếng nói, tổng hợp tiếng nói là
sự trợ giúp tốt và vô cùng quan trọng cho người khiếm thị trong giao tiếp
- Dịch tự động (Machine translate): Chương trình dịch tự động từ ngôn ngữ này sang ngôn ngữ khác Một dịch vụ điển hình của ứng dụng này đó chính
là Google dịch đang được dùng rộng rãi trên toàn thế giới
- Tìm kiếm thông tin (Information retrieval): Người dùng đặt câu hỏi và chương trình sẽ tìm ra nội dung phù hợp nhất cho người dùng Thông tin ngày càng tăng lên theo hàm mũ, đặc biệt với sự trợ giúp của Internet việc tiếp cận thông tin trở lên dễ dàng hơn bao giờ hết Việc khó khăn lúc này là tìm đúng thông tin giữa khối lượng tri thức khổng lồ và đặc biệt thông tin đó phải đáng tin cậy
- Tóm tắt văn bản: Từ một văn bản dài tóm tắt thành một văn bản ngắn hơn theo mong muốn nhưng vẫn chứa những nội dung thiết yếu nhất
- Khai phá dữ liệu (Data mining) và phát hiện tri thức: Từ rất nhiều tài liệu khác nhau phát hiện ra tri thức mới Thực tế để làm được điều này rất khó, nó gần như là mô phỏng quá trình học tập, khám phá khoa học của con người, đây là lĩnh vực đang trong giai đoạn đầu phát triển Ở mức độ đơn giản khi kết hợp với máy tìm kiếm nó cho phép đặt câu hỏi để từ đó công cụ tự tìm ra câu trả lời dựa trên các thông tin trên web mặc cho việc trước đó có câu trả lời lưu trên web hay không (giống như trang Quora hay Reddit, nơi chuyên đặt các câu hỏi để người khác trả lời), nói một cách ngắn gọn là máy tính đã biết xử lý dữ liệu để trả lời câu hỏi của người sử dụng, thay vì chỉ đáp trả những gì có sẵn trong bộ nhớ
1.4 Các bài toán và khái niệm cơ bản liên quan [6]
1.4.1 Biểu thức chính quy (regular expressions)
Regular Expression hay còn gọi là biểu thức chính quy là một chuỗi ký tự mô tả mẫu văn bản, được dùng để xử lý chuỗi nâng cao thông qua biểu thức riêng của nó, những biểu thức này sẽ có những nguyên tắc riêng và ta phải tuân theo nguyên tắc đó thì biểu thức mới hoạt động được Ngoài tên gọi Regular Expression ra thì nó còn có thể viết tắt thành RegEx
Trang 25RegEx đã trở thành kỹ thuật tiêu chuẩn được hỗ trợ bởi hầu hết các ngôn ngữ lập trình (ví dụ, NET, Java, Python, Perl, Ruby, AWK và Tcl) Nhiều nghiên cứu xử lý ngôn ngữ tự nhiên sử dụng RegEx làm giải pháp cho một số bài toán con Nguyên tắc hoạt động của biểu thức RegEx là so khớp dựa vào khuôn mẫu, khuôn mẫu được xây dựng từ các quy tắc căn bản của biểu thức RegEx Khuôn mẫu được định nghĩa bởi biểu thức chính quy có thể khớp một hoặc một vài lần, hoặc không khớp với một văn bản cho trước Những cụm từ thông dụng này thường được tạo bởi các nhà phát triển phần mềm làm việc với các chuyên gia miền Vì không có cách tiêu chuẩn để tạo hoặc kiểm tra các biểu thức chính quy, việc bảo trì và mở rộng của chúng là một thách thức
Về cơ bản Regex thường được ứng dụng với các mục đích sau:
- Giảm bớt những dòng lệnh trong quá trình xử lí chuỗi những biểu thức ngắn gọn mà vẫn đem lại kết quả như mong đợi
- Kiểm tra tính hợp lệ của giá trị đầu vào ví dụ như các phần tử form
- Xử lí yêu cầu phức tạp trong chuỗi (bóc tách, thay đổi nội dung, loại bỏ ký tự…)
Một mẫu biểu thức chính quy là một tập các kí tự thường, như /abc/ sẽ tìm các các đoạn 'abc' theo đúng thứ tự đó trong các chuỗi, hay một tập kết hợp cả kí tự thường
và kí tự đặc biệt như /ab*c/ hoặc /(\d+)\.\d*/ Các kí tự đặc biệt cho các mục đích tìm kiếm nâng cao mà tìm kiếm trực tiếp sẽ khó khăn như tìm một đoạn chứa một hoặc nhiều hơn một kí tự Trong ví dụ cuối có sử dụng các dấu ngoặc đơn () như các thiết bị nhớ, tức là các mẫu trong phần () này sau khi được tìm kiếm có thể được nhớ lại để sử dụng cho các lần sau
^ Khớp các kí tự đứng đầu một chuỗi
Nếu có nhiều cờ này thì nó còn khớp
được cả các kí tự đứng đầu của mỗi
dòng (sau kí tự xuống dòng)
/^A/ sẽ không khớp được với 'A' trong "an A" vì 'A' lúc này không đứng đầu chuỗi, nhưng nó sẽ khớp "An E" vì lúc này 'A' đã đứng đầu chuỗi
$ So khớp ở cuối chuỗi Nếu gắn cờ
multiline (đa dòng), nó sẽ khớp ngay
trước kí tự xuống dòng
/t$/ không khớp với 't' trong chuỗi
"eater" nhưng lại khớp trong chuỗi "eat"
* Cho phép kí tự trước nó lặp lại 0 lần
hoặc nhiều lần Tương đương với cách
viết {0,}
/bo*/ khớp với 'boooo' trong chuỗi "A ghost booooed" nhưng không khớp trong chuỗi "A birth warbled"
Trang 26+ Cho phép kí tự trước nó lặp lại 1 lần
hoặc nhiều lần Tương đương với cách
viết {1,}
/a+/ khớp với 'a' trong chuỗi
"candy" và khớp với tất cả kí tự a liền nhau trong chuỗi
"caaaaaaandy"
? Cho phép kí tự trước nó lặp lại 0 lần
hoặc 1 lần duy nhất Tương đương với
cách viết {0,1}
/e?le?/ khớp với 'el' trong chuỗi
"angel" và 'le' trong chuỗi "angle" hay 'l' trong "oslo"
Dấu khớp với bất kì kí tự đơn nào
ngoại trừ kí tự xuống dòng
/.n/ khớp với 'an' và 'on' trong chuỗi "no, an apple is on the tree", nhưng không khớp với 'no' (x) Khớp 'x' và nhớ kết quả so khớp này
Các dấu ngoặc tròn được gọi là các dấu
ngoặc có nhớ
Biểu mẫu /(foo) (bar) \1 \2/ khớp với 'foo' và 'bar' trong chuỗi "foo bar foo bar" \1 và \2 trong mẫu khớp với 2 từ cuối
(?:x) Khớp 'x' nhưng không nhớ kết quả so
khớp Những dấu ngoặc tròn được gọi
là những dấu ngoặc không nhớ, nó cho
phép định nghĩa những biểu thức con
cho những toán tử so khớp
Xem xét biểu thức đơn giản /(?:foo){1,2}/ Nếu biểu thức này được viết là /foo{1,2}/, {1,2} sẽ chỉ áp dụng cho kí tự 'o' ở cuối chuỗi 'foo' Với những dấu ngoặc không nhớ, {1,2} sẽ áp dụng cho
cả cụm 'foo'
x(?=y) Chỉ khớp 'x' nếu 'x' theo sau bởi 'y' /Jack(?=Sprat)/ chỉ khớp với
'Jack' nếu đằng sau nó là 'Sprat' /Jack(?=Sprat|Frost)/ chỉ khớp 'Jack' nếu theo sau nó là 'Sprat' hoặc 'Frost' Tuy nhiên, cả 'Sprat'
và 'Frost' đều không phải là một phần của kết quả so khớp trả về x(?!y) Chỉ khớp 'x' nếu 'x' không được theo
sau bởi 'y'
/\d+(?!\.)/ chỉ khớp với số không
có dấu đằng sau x|y Khớp 'x' hoặc 'y' /green|red/ khớp với 'green' trong
chuỗi "green apple" và 'red' trong chuỗi "red apple"
{n} Kí tự đứng trước phải xuất hiện n lần n
phải là một số nguyên dương
/a{2}/ không khớp với 'a' trong
"candy", nhưng nó khớp với tất
cả kí tự 'a' trong "caandy", và khớp với 2 kí tự 'a' đầu tiên trong
"caaandy"
{n,m} Kí tự đứng trước phải xuất hiện từ n
đến m lần n và m là số nguyên dương
/a{1,3}/ không khớp bất kì kí tự nào trong "cndy", kí tự 'a' trong
Trang 27và n <= m Nếu m bị bỏ qua, nó tương
đương như ∞
"candy", 2 kí tự 'a' đầu tiên trong
"caandy", và 3 kí tự 'a' đầu tiên trong "caaaaaaandy" Lưu ý là
"caaaaaaandy" chỉ khớp với 3 kí
tự 'a' đầu tiên mặc dù chuỗi đó chứa 7 kí tự 'a'
[xyz] Lớp kí tự Loại mẫu này dùng để so
khớp với một kí tự bất kì trong dấu
ngoặc vuông, bao gồm cả escape
sequences Trong lớp kí tự, dấu chấm
(.) và dấu hoa thị (*) không còn là kí tự
đặc biệt nên ta không cần kí tự thoát
tự không được theo sau hoặc đứng
trước bởi một kí tự khác Tương đương
- /oon\b/ khớp với 'oon' trong chuỗi "moon", bởi vì 'oon' ở cuối chuỗi nên nó không được theo sau bởi một kí tự
- /\w\b\w/ sẽ không khớp với bất
kì thứ gì, bởi vì một kí tự không thể theo sau một kí tự biên và một
kí tự thường
\B Khớp với kí tự không phải kí tự biên
Mẫu này khớp tại vị trí mà kí tự trước
và kí tự sau nó cùng kiểu: hoặc cả hai là
kí tự hoặc cả hai không phải là kí tự
Bắt đầu và kết thúc chuỗi không được
xem là những kí tự
/\B / khớp với 'oo' trong
"noonday", và /y\B./ khớp với 'ye' trong "possibly yesterday."
\cX X là một kí tự trong khoảng A tới Z
Mẫu này khớp với một kí tự điều khiển
trong một chuỗi
/\cM/ khớp với control-M (U+000D) trong chuỗi
\d Khớp với một kí tự số Tương đương
với mẫu [0-9]
/\d/ hoặc /[0-9]/ khớp với '2' trong chuỗi "B2 is the suite number."
Trang 28\D Khớp với một kí tự không phải là kí tự
số Tương đương với mẫu [^0-9]
/\D/ hoặc /[^0-9]/ khớp với 'B' trong "B2 is the suite number."
\W Khớp với tất cả kí tự không phải là chữ
Tương đương với mẫu [^A-Za-z0-9_]
/\W/ hoặc /[^A-Za-z0-9_]/ khớp với '%' trong "50%."
Bảng 1.1: Bảng các ký tự đặc biệt dùng trong Regex 1.4.2 Corpus
Trong ngôn ngữ học, corpus là 1 dữ liệu tập hợp các văn bản, ngôn ngữ đã được
số hoá Cách dịch thông thường ở VN là “kho ngữ liệu” Ví dụ về corpus như “tuyển tập các tác phẩm của Nam Cao”, hay “tuyển tập ca từ của Trịnh Công Sơn”, … Corpus
là 1 tài nguyên quan trọng trong NLP Corp được sử dụng để phân tích thống kê và kiểm tra giả thuyết, chiết suất 1 cách tự động các qui tắc ngữ pháp “văn mạch tự do”, kiểm tra các lần xuất hiện hoặc xác nhận các quy tắc ngôn ngữ trong một ngôn ngữ cụ thể Corpus thường được dùng trong phát triển trong các công cụ xử lý ngôn ngữ tự nhiên Corpus có thể bao gồm ngôn ngữ viết, ngôn ngữ nói hoặc cả hai Kho dữ liệu văn bản nói thường được lưu trữ ở dạng bản ghi âm Corpus có thể chứa các văn bản bằng một ngôn ngữ (monolingual corpus) hoặc dữ liệu văn bản bằng nhiều ngôn ngữ (multilingual corpus) Dữ liệu corpus có thể đóng hoặc mở công khai Corpus mở thường không được xử lý kỹ càng và lĩnh vực dữ liệu khá rộng Trong khi đó corpus đóng thường được xử lý trước khi lưu trữ và miền dữ liệu tập trung vào một lĩnh vực cụ thể
Dữ liệu corpus tốt phải đảm bảo 1 số nguyên tắc nhất định:
- Tính đại diện: các thành phần trong corpus phải có tính phổ quát, đa dạng và phong phú
- Kích thước: kích thước của corpus càng lớn thì càng được đánh giá cao Dựa vào mục đích, cách xây dựng corpus, người ta chia corpus thành các loại sau:
- Corpus thô (raw corpus): đơn giản chỉ là tập hợp các dữ liệu mà không có xử
lý gì thêm
- Corpus được gắn nhãn (tagged corpus): các dữ liệu trong corpus đã được xử
lý như phân tích từ, phân tích cú pháp, gắn nhãn từ loại, … để dữ liệu mang nhiều ý nghĩa hơn trong phân tích ngôn ngữ học
- Parallel Corpus: được sử dụng nhiều trong ứng dụng máy dịch
Trang 29Ngoài cách chia trên, ta cũng có thể chia corpus theo cấu tạo của nó:
- Corpus biệt lập: dữ liệu lấy vào 1 cách ngẫu nhiên, biệt lập và không phân biệt với nhau
- Corpus theo danh mục: dựa vào các danh mục để chia dữ liệu trong corpus thành các nhóm
- Corpus trùng lặp: các dữ liệu trong corpus có thể ở nhiều nhóm cùng lúc
- Corpus theo thời gian: các dữ liệu sắp xếp theo thời gian thu thập và thời gian xuất hiện
1.4.3 Morphological Analysis (phân tích hình thái)
Trong ngôn ngữ học, phân tích hình thái học là nghiên cứu các từ, cách chúng được hình thành và mối quan hệ của chúng với các từ khác trong cùng một ngôn ngữ chẳng hạn như từ gốc, ranh giới từ, dấu, phần của lời nói, v.v Qua đó tìm ra cấu trúc và hình thành các từ Đơn vị quan trọng nhất của nó là morpheme Có ba bài toán điển hình trong lĩnh vực này, bao gồm việc phân đoạn từ (word segmentation), nhận diện tên riêng (named entity recognition) và gắn thẻ một phần lời nói (Part-of-speech tagging) Mức
độ khó khăn của nhiệm vụ này phụ thuộc rất nhiều vào độ phức tạp của hình thái học (tức là cấu trúc của các từ) của ngôn ngữ đang được xem xét
Ví dụ đối với bài toán phân tách từ Tiếng Anh có hình thái khá đơn giản, đặc biệt là hình thái uốn (inflectional morphology), và do đó thường có thể bỏ qua tác vụ này hoàn toàn và chỉ đơn giản là mô hình tất cả các dạng có thể của một từ (ví dụ: "open, opens, opened, opening") Trong các ngôn ngữ như Thổ Nhĩ Kỳ hoặc Meitei, một ngôn ngữ Ấn Độ kết nối rất cao, cho nên cách tiếp cận như vậy là không thể, vì mỗi mục từ điển có hàng ngàn dạng từ có thể
1.4.4 Tokenization (tách từ)
Trong xử lý ngôn ngữ tự nhiên, token là một chuỗi ký tự ghép lại thành từ, tiếp giáp giữa hai khoảng trắng hoặc giữa dấu cách và dấu chấm câu Token cũng có thể là
số nguyên, số thực hoặc số có dấu hai chấm
Tách từ là một quá trình xử lý nhằm mục đích xác định ranh giới của các từ trong câu văn, cũng có thể hiểu đơn giản rằng tách từ là quá trình xác định các từ đơn, từ ghép… có trong câu Đối với xử lý ngôn ngữ, để có thể xác định cấu trúc ngữ pháp của câu, xác định từ loại của một từ trong câu, yêu cầu nhất thiết đặt ra là phải xác định được đâu là từ trong câu Vấn đề này tưởng chừng đơn giản với con người nhưng đối với máy tính, đây là bài toán rất khó giải quyết
Trang 30Chính vì lý do đó tách từ được xem là bước xử lý quan trọng đối với các hệ thống
Xử Lý Ngôn Ngữ Tự Nhiên, đặc biệt là đối với các ngôn ngữ thuộc vùng Đông Á theo loại hình ngôn ngữ đơn lập, ví dụ: tiếng Trung Quốc, tiếng Nhật, tiếng Thái, và tiếng Việt Với các ngôn ngữ thuộc loại hình này, ranh giới từ không chỉ đơn giản là những khoảng trắng như trong các ngôn ngữ thuộc loại hình hòa kết như tiếng Anh…, mà có
sự liên hệ chặt chẽ giữa các tiếng với nhau, một từ có thể cấu tạo bởi một hoặc nhiều tiếng Ngoài ra tiếng Việt không sử dụng các hình thái (morpheme) để tạo ra các ý nghĩa của từ (trong tiếng Anh, cup->cups thì 's' là hình thái số nhiều) Do đó trong tiếng Việt,
để tạo ra các sắc thái ý nghĩa khác nhau phụ thuộc vào trật tự của từ Ví dụ: với năm âm tiết (năm từ đơn): "sao, nó, bảo, không, đến" khi sắp xếp theo các trật tự khác nhau sẽ cho ra các nghĩa khác nhau Vì vậy đối với các ngôn ngữ thuộc vùng Đông Á, vấn đề của bài toán tách từ là khử được sự nhập nhằng trong ranh giới từ
Hình 1.6: Ví dụ tách từ trong câu Các phương pháp, thuật toán tách từ thường được được sử dụng:
- So khớp từ dài nhất (Longest Matching)
- So khớp cực đại (Maximum Matching)
- Mô hình Markov ẩn (Hidden Markov Models- HMM)
- Học dựa trên sự cải biến (Transformation-based Learning – TBL)
- Chuyển đổi trạng thái trọng số hữu hạn (Weighted Finite State Transducer – WFST)
- Độ hỗn loạn cực đại (Maximum Entropy – ME)
- Máy học vectơ hỗ trợ (Support Vector Machines)
- Trường xác xuất có điều kiện (CRFs)
Trang 311.4.5 Ambiguous (nhập nhằng nghĩa)
Một trong những thách thức lớn nhất trong xử lý ngôn ngữ tự nhiên đó là tính nhập nhằng vốn có của ngôn ngữ tự nhiên Nhập nhằng là hiện tượng mà khi nói, viết hoặc diễn tả những từ ngữ, ý nghĩa mơ hồ, không rõ nghĩa hoặc có nhiều nghĩa làm cho người đọc hoặc người nghe không phân biệt rõ ràng, dẫn đến sự hiểu nhấm ý nghĩa Nhập nhằng trong ngôn ngữ học là hiện tượng thường gặp, trong giao tiếp hàng ngày con người ít để ý đến nó bởi vì họ xử lý tốt hiện tượng này Nhưng trong các ứng dụng liên quan đến xử lý ngôn ngữ tự nhiên khi phải thao tác với ý nghĩa từ vựng mà điển hình là dịch tự động nhập nhằng trở thành vấn đề nghiêm trọng Ví dụ trong một câu cần dịch có xuất hiện từ “đường” như trong câu “ra chợ mua cho mẹ ít đường” vấn
đề nảy sinh là cần dịch từ này là road hay sugar, con người xác định chúng khá dễ dàng căn cứ vào văn cảnh và các dấu hiệu nhận biết khác nhưng với máy thì không
Nhập nhằng trong ngôn ngữ được chia làm các loại chính sau đây:
- Lexical Ambiguity: Là sự hiện diện của hai hoặc nhiều ý nghĩa có thể có trong một từ duy nhất Cũng được gọi là sự mơ hồ ngữ nghĩa hoặc đồng nghĩa
Ví dụ, trong tiếng Anh, từ “back” có thể là một danh từ (back stage), một tính
từ (back door) hoặc một trạng từ (back away)
- Phonological Ambiguity: Điều này xảy ra khi có hai từ, có âm giống nhau nhưng có ý nghĩa khác nhau
- Syntactic Ambiguity: Trường hợp không thể nói từ cú pháp của một câu ý nghĩa của một từ cụ thể Thường được tạo ra bằng cách chuyển động từ thành tính từ Ví dụ “Nhà thôi miên đang thôi miên, có thể là việc dễ dàng”
- Semantic Ambiguity: Loại sự mơ hồ này thường liên quan đến việc giải thích câu khi một câu có thể được hiểu theo nhiều cách do cấu trúc câu mơ
hồ
Sự nhập nhằng của ngôn ngữ tự nhiên khiến việc xử lý ngôn ngữ tự nhiên trên máy tính trở nên khó khăn Hãy cùng xem xét các ví dụ sau đây [15]:
Ví dụ 1:
They book that hotel (S1)
They read that book (S2)
Đầu tiên, từ book là nhập nhằng về mặt từ loại Book có thể là một động từ (trong câu S1) hoặc một danh từ (trong câu S2) tùy thuộc vào ngữ cảnh xuất hiện của nó Hiện tượng này gây khó khăn cho bài toán gán nhãn từ loại, một bước trong xử lý cú pháp Không chỉ vậy, book cũng nhập nhằng về mặt ngữ nghĩa Book có thể là một hành động
Trang 32đặt hàng thứ gì đó (trong câu S1) hoặc có thể là một văn bản viết được xuất bản dưới dạng in ấn hay điện tử (trong câu S2) Hiện tượng này gây khó khăn cho bài toán xác định nghĩa của từ, là một bước trong xử lý ngữ nghĩa
Ví dụ 2:
Xét câu sau: A computer understands you like your mother
Hình 1.7: Phân tích gán nhãn cho các từ trong câu [13]
Ở góc độ ngữ pháp, câu này có thể được giải thích theo hai cây cú pháp như trên hình trên Những cấu trúc khác nhau dẫn đến những cách hiểu khác nhau: “a computer understands you like your mother does” hoặc “a computer understands that you like your mother” Hiện tượng này gây khó khăn cho cả hai bài toán là phân tích cú pháp và phân tích ngữ nghĩa
1.4.6 Stopwords (từ dừng)
StopWords là những từ xuất hiện nhiều trong ngôn ngữ tự nhiên, tuy nhiên lại không mang nhiều ý nghĩa Ở tiếng Việt StopWords là những từ như: để, này, kia Tiếng anh là những từ như: is, that, this Trong xử lý ngôn ngữ tự nhiên, người ta thường làm một bước là lọc các từ gây nhiễu, và Stopwords chính là một trong số những nguyên nhân gây nhiễu Ngoài ra việc loại bỏ các từ này còn góp phần làm giảm số chiều của văn bản khiến cho tốc độ xử lý văn bản và độ chính xác phân lớp văn bản được tăng lên
Có rất nhiều cách để loại bỏ StopWords trong đó có 2 cách phổ biến là:
- Dùng từ điển: Cách này đơn giản nhất, chúng ta tiến hành lọc văn bản, loại
bỏ những từ xuất hiện trong từ điển StopWords
- Dựa theo tần suất xuất hiện của từ: Với cách này, chúng ta tiến hành đếm số lần xuất hiện của từng từ trong data sau đó sẽ loại bỏ những từ xuất hiện nhiều lần (cũng có thể là ít lần) Một số thực nghiệm đã cho thấy những từ xuất hiện nhiều nhất thường là những từ không mang nhiều ý nghĩa
Trang 331.4.7 Named Entities Recognition (nhận dạng tên thực thể)
Nhiệm vụ xác định tên riêng của người, tổ chức, địa điểm, hoặc các thực thể khác
là một nhiệm vụ khai thác thông tin từ các tài liệu ngôn ngữ tự nhiên Với số lượng dữ liệu khổng lồ đến từ các phương tiện truyền thông xã hội, email, blog, tin tức và các bài viết học thuật, ngày càng khó để trích xuất, phân loại và học hỏi từ thông tin đó Đây là bài toán khá cơ bản trong nhóm các bài toán trích chọn thông tin Các hệ thống nhận dạng thực thể trong văn bản thường nhận dạng một số loại thực thể phổ biến sau:
- Thực thể chỉ người (Person)
- Thực thể chỉ tổ chức (Organization)
- Thực thể chỉ địa điểm (Location)
- Thực thể chỉ ngày (Date)
- Thực thể chỉ thời gian (Time)
- Thực thể chỉ đơn vị tiền tệ (Money)
- Thực thể chỉ phần trăm (Percent)
Trong dó, loại thực thể chỉ ngày (Date), thực thể chỉ thời gian (Time), thực thể chỉ các đơn vị tiền tệ (Money), thực thể chỉ phần trăm (Percent) thường ít mang tính nhập nhằng, không khó để nhận dạng Ngoài ra tùy từng lĩnh vực, người ta có thể thêm vào những loại thực thể đặc thù khác Ví du, hệ thống nhận dạng thực thể trong văn bản lĩnh vực y tế sẽ nhận dạng những thực thể chỉ tên thuốc, tên bệnh v.v Đây là một bài toán quan trọng và cơ bản trong xử lý ngôn ngữ tự nhiên nhưng hiện nay vẫn chưa có nhiều nghiên cứu về bài toán nhận dạng thực thể trong văn bản đối với tiếng Việt
Có ba hướng tiếp cận chính cho bài toán nhận dạng thực thể trong văn bản là: hướng tiếp cận sử dụng hệ luật được xây dựng bởi chuyên gia, hướng tiếp cận sử dụng các phương pháp học máy và hướng tiếp cận lai hai phương pháp trên Hầu hết các hệ thống NER tập trung vào việc áp dụng các phương pháp máy học và không đòi hỏi nhiều kiến thức chuyên sâu về mặt ngôn ngữ
1.4.8 Lemmatization và Stemming
Trong quá trình xử lý ngôn ngữ tự nhiên, chúng ta sẽ có nhu cầu so sánh các từ (token) với nhau Việc so sánh này tưởng chừng như đơn giản là lấy 2 chuỗi ký tự và dùng phép “==” để kiểm tra, nhưng thực tế thì không phải là như vậy Đối với một số ngôn ngữ, tiêu biểu là tiếng Anh, mỗi từ có thể có nhiều biến thể khác nhau Điều này làm cho việc so sánh giữa các từ là không thể mặc dù về mặc ý nghĩa cơ bản là như nhau Ví dụ các từ “walks”, “walking”, “walked” đều là các biến thể của từ “walk” và
Trang 34đều mang ý nghĩa là “đi bộ” Lemmatization và Stemming chính là 2 kỹ thuật thường được dùng cho việc so sánh các từ như trên với nhau
Stemming Là kỹ thuật dùng để biến đổi 1 từ về dạng gốc bằng cách cực kỳ đơn giản là loại bỏ 1 số ký tự nằm ở cuối từ mà nó nghĩ rằng là biến thể của từ Ví dụ như chúng ta thấy các từ như walked, walking, walks chỉ khác nhau là ở những ký tự cuối cùng, bằng cách bỏ đi các hậu tố -ed, -ing hoặc -s, chúng ta sẽ được từ nguyên gốc là walk Người ta gọi các bộ xử lý stemming là Stemmer Bởi vì nguyên tắc hoạt động của stemmer rất là đơn giản như vậy cho nên tốc độ xử lý của nó rất là nhanh, và kết quả stem đôi khi không được như chúng ta mong muốn Chẳng hạn như từ goes sẽ được stem thành từ goe (bỏ chữ s cuối từ) trong khi đó stem của từ go vẫn là go, kết quả là 2
từ “goes” và “go” sau khi được stem thì vẫn không giống nhau Một nhược điểm khác
là nếu các từ dạng bất quy tắt như went hay spoke thì stemmer sẽ không thể đưa các từ này về dạng gốc là go hay speak Tuy có các nhược điểm như trên nhưng trong thực tế Stemming vẫn được sử dụng khá phổ biến trong NLP vì nó có tốc độ xử lý nhanh và kết quả cuối cùng nhìn chung không hề tệ khi so với Lemmatization
Lemmatization Khác với Stemming là xử lý bằng cách loại bỏ các ký tự cuối từ một cách rất heuristic, Lemmatization sẽ xử lý thông minh hơn bằng một bộ từ điển hoặc một bộ Ontology nào đó Điều này sẽ đảm bảo rằng các từ như “goes”, “went” và “go”
sẽ chắc chắn có kết quả trả về là như nhau Kể các từ danh từ như mouse, mice cũng đều được đưa về cùng một dạng như nhau Người ta gọi bộ xử lý lemmatization là lemmatizer Nhược điểm của lemmatization là tốc độ xử lý khá chậm vì phải thực hiện tra cứu từ trong cơ sở dữ liệu Trong các ứng dụng xử lý NLP mà cần độ chính xác cao hơn và thời gian không quan trọng, người ta có thể sử dụng Lemmatization
1.4.9 Part of Speech (gán nhãn từ loại)
Part of Speech (POS) giải thích cách một từ được sử dụng trong một câu Có tám phần chính của lời nói đó là danh từ, đại từ, tính từ, động từ, trạng từ, giới từ, liên từ và thán từ Hầu hết các POS được chia thành các lớp con Gắn thẻ POS là quá trình gắn nhãn các từ với phần POS thích hợp của chúng
Trang 35Hình 1.8: Gán nhãn loại từ cho các từ trong câu Việc phân loại từ như thế này sẽ góp phần giúp cho các chương trình xử lý ngôn ngữ tự nhiên nắm được thêm ý nghĩa của câu thay vì chỉ xem nó như là tập hợp của các
ký tự Ví dụ như trong tiếng anh cùng là một từ “can” nhưng nó có thể có nghĩa là “có thể” hoặc nghĩa là “cái lon“, như vậy POS có thể giúp máy tính phân biệt được điều này một cách dễ dàng tùy vào nội dung của câu Trong các kỹ thuật xử lý NLP thì đây được xem là một trong những kỹ thuật cơ bản nhất vì nó được sử dụng bởi các kỹ thuật khác,
vì vậy đa số các công cụ liên quan tới NLP thì đều có POS parser
Để gán nhãn POS cho các từ trong câu thì người ta sẽ sử dụng một bộ phân tích gọi là “POS parser” hay còn gọi là “POS tagger” Các bộ parser này thường sẽ tuân theo những quy tắc nào đó hoặc là sử dụng Máy học để phân loại từ một cách hợp lý nhất dựa trên những dữ liệu huấn luyện đã được gán nhãn bằng tay Ví dụ: bằng cách cho máy tính học thật nhiều các dữ liệu mà trong đó từ “can” nếu đứng sau một danh từ thì thường có nhãn là MD (modal verb) rồi sau đó cho máy tính gãn nhãn một câu mới, nó
sẽ có khả năng gán nhãn MD cho một từ can ở vị trí tương tự như dữ liệu huấn luyện 1.5 Khó khăn trong xử lý ngôn ngữ tự nhiên tiếng việt
Thông số tiếng việt [16]:
- Số từ: lấy từ Vietnam Lexicography Center (Vietlex) gồm 40181 từ (Những
từ được sử dụng nhiều và rộng rãi nhất)
- Số âm tiết: 7729 âm tiết
- 81.55% các âm tiết đồng thời là các từ đơn
Trang 36- 70.72% các từ ghép có 2 âm tiết
- 13.59% các từ ghép có 3,4 âm tiết
- 1.04% các từ ghép có từ 5 âm tiết trở lên
So với các ngôn ngữ khác, dấu trong tiếng Việt phức tạp hơn rất nhiều Ta sẽ thấy
rõ điều đó qua một vài con số thống kê sau:
- Hơn 95% từ tiếng Việt có chứa dấu Trong khi ở tiếng Pháp là 15%, tiếng Romanian là 35%
- Hơn 80% âm tiết mất dấu bị trùng lặp và không rõ ràng (ví dụ "cho" có thể hiểu là "chó", "chợ", âm tiết rõ ràng ví dụ như "nghieng" chỉ có 1 cách thêm dấu là "nghiêng") Trong tiếng Pháp là 50%, và tiếng Romanian là 25%
- Với 1 âm tiết hay 1 từ, sẽ có 1 số cách nhất định để thêm dấu Tỉ lệ trung bình
về số cách thêm dấu của các từ trong tiếng Pháp và tiếng Romanian là khoảng 1.2, trong khi tiếng Việt là >2
- Ngoài ra, tiếng Việt còn không có dấu phân tách từ
Ngoài các nguyên nhân khách quan trên, ngôn ngữ tiếng Việt không phải là một ngôn ngữ thịnh hành trên thế giới và điều quan trọng hơn hết là người Việt Nam rất ngại chia sẻ, liên kết, hợp tác làm việc theo đúng quy trình, và không có tính kế thừa, khiến cho người mới khi gặp vấn đề không biết phải xử lý sao, hỏi ai để có thể giải quyết Điều
đó khiến cho các bộ dữ liệu chưa hoàn chỉnh, không được công hay thương mại hóa nên các công cụ xử lý ngôn ngữ tự nhiên cho tiếng việt khá hạn chế
Ở Việt Nam cũng đã có một số nhóm bắt đầu nghiên cứu về xử lý ngôn ngữ, bước đầu đã có những kết quả nhất định, như: các nhóm nghiên cứu đến từ các trường đại học, đại học Bách Khoa, đại học Công Nghệ, đại học Khoa Học Tự Nhiên, Viện Nghiên Cứu Công Nghệ Thông Tin, Nhóm nghiên cứu VLNP Bên ngoài Việt Nam cũng có các nghiên cứu đến từ các nghiên cứu sinh Việt Nam tại JAIST Phần lớn các sản phẩm hiện nay đang tập trung vào lĩnh vực dịch máy, một sản phẩm khó, và yêu cầu làm dài hạn Ngoài ra còn có các bài toán phân loại chia nhóm văn bản Và đa phần chỉ dừng lại ở đề tài tiến sĩ, thạc sĩ, mang tính chất tìm hiểu, chưa hệ thống và định hướng rõ ràng Một số thư viện xử lý ngôn ngữ dành cho tiếng việt phổ biến mã nguồn mở trên Github:
- vncorenlp/VnCoreNLP: Bộ công cụ xử lý ngôn ngữ tự nhiên Việt Nam, tác giả NQ Dat (2018)
Trang 37- pth1993/NNVLP: Bộ công cụ xử lý ngôn ngữ tiếng Việt dựa trên mạng nơron, tác giả PT Hoang (2017)
- DongDu: Công cụ phân đoạn từ chính xác và nhanh nhất by LT Anh (2014)
- phuonglh/vn.vitk: Bộ công cụ xử lý ngôn ngữ tự nhiên Việt Nam, tác giả LH Phuong (2016)
- phongnt570/UETsegmenter: Bộ công cụ cho phân đoạn từ tiếng Việt, tác giả NT Phong (2016)
- facebookresearch/fastText: Thư viện để thể hiện và phân loại văn bản nhanh, tác giả Facebook
số chiều khác nhau về cùng một chuẩn (cùng là các vector hoặc ma trận) Dữ liệu chuẩn mới này phải đảm bảo giữ được những thông tin đặc trưng (features) cho dữ liệu thô ban đầu Không những thế, tùy vào từng bài toán, ta cần thiết kế những phép biến đổi để có những đặc trưng phù hợp [5]
Đối với bài toán xử lý ngôn ngữ tự nhiên, đây là một công việc rất khó vì khi biểu diễn đặc trưng của câu ở dạng vector, chúng ta cần phải biết cả ý nghĩa của câu và ngữ cảnh những mà những câu đó xuất hiện Về cơ bản để biểu diễn đúng đặc trưng của câu
ta cần phân tích được:
- Ý nghĩa của các từ vựng được sử dụng
- Cấu trúc cú pháp của câu
- Ngữ cảnh trong đó những câu đó xuất hiện
1.6.1 TF-IDF
Trong khai phá dữ liệu văn bản (text mining), thuật ngữ TF-IDF (term frequency
- inverse document frequency) là một phương thức thống kê được biết đến rộng rãi nhất
để xác định độ quan trọng của một từ trong đoạn văn bản trong một tập nhiều đoạn văn bản khác nhau Nó thường được sử dụng như một trọng số trong việc khai phá dữ liệu văn bản TF-IDF chuyển đổi dạng biểu diễn văn bản thành dạng không gian vector (VSM), hoặc thành những vector thưa thớt
Trang 38- TF (Term Frequency): Tần suất xuất hiện của một từ trong một đoạn văn bản Với những đoạn văn bản có độ dài khác nhau, sẽ có những từ xuất hiện nhiều
ở những đoạn văn bản dài thay vì những đoạn văn bản ngắn Vì thế, tần suất này thường được chia cho độ dài của đoạn văn bản như một phương thức chuẩn hóa (normalization) TF được tính bởi công thức:
tf(t) = ( , ) (1.1)Trong đó t là một từ trong đoạn văn bản; f(t,d) là tần suất xuất hiện của t trong đoạn văn bản d; T là tổng số từ trong đoạn văn bản đó)
- IDF (Inverse Document Frequency): tính toán độ quan trọng của một từ Khi tính toán TF, mỗi từ đều quan trọng như nhau, nhưng có một số từ trong tiếng Anh như "is", "of", "that" xuất hiện khá nhiều nhưng lại rất ít quan trọng
Vì vậy, chúng ta cần một phương thức bù trừ những từ xuất hiện nhiều lần và tăng độ quan trọng của những từ ít xuất hiện những có ý nghĩa đặc biệt cho một số đoạn văn bản hơn bằng cách tính IDF:
idf(t) = log
|{ ∈ ∶ ∈ }| (1.2)Trong đó N là tổng số đoạn văn bản, tập |{𝑑 ∈ 𝐷 ∶ 𝑡 ∈ 𝑑}| là số văn bản chứa từ t
Cách tiếp cận của tf-idf sẽ ước lượng được độ quan trọng của một từ đối với một văn bản trong danh sách tập tài liệu văn bản cho trước Nguyên lí cơ bản của TF-IDF là:
“độ quan trọng của một từ sẽ tăng lên cùng với số lần xuất hiện của nó trong văn bản và
sẽ giảm xuống nếu từ đó xuất hiện trong nhiều văn bản khác” Lí do đơn giản là vì nếu một từ xuất hiện trong nhiều văn bản khác nhau thì có nghĩa là nó là từ rất thông dụng
vì thế khả năng nó là từ khóa sẽ giảm xuống (ví dụ như các từ “vì thế”, “tuy nhiên”,
“nhưng”, “và”…) Do đó độ đo sự quan trọng của một từ t trong tài liệu f sẽ được tính bằng: tf * idf, với tf là độ phổ biến của từ t trong tài liệu f và idf là nghịch đảo độ phổ biến của từ t trong các tài liệu còn lại của tập tài liệu Được tóm tắt trong công thức tổng quát sau:
Trang 39Độ đo này của từ càng cao thì khả năng là từ khóa càng lớn Hướng tiếp cận độ
đo tf-idf này rất thông dụng hiện nay
1.6.2 Bag-of-Word (mô hình túi từ)
Mô hình Bag-of-Word (BOW) là một biểu diễn đơn giản hóa của văn bản thường được sử dụng trong xử lý ngôn ngữ tự nhiên và tìm kiếm thông tin Trong mô hình này, một văn bản được biểu diễn như một tập hợp (gọi là “túi”) các từ xuất hiện trong văn bản, không quan tâm đến ngữ pháp và thứ tự xuất hiện của các từ mà chỉ lưu lại tần suất xuất hiện của mỗi từ trong văn bản BOW thường được sử dụng trong các phương pháp phân loại văn bản khi mà tần suất xuất hiện của từ được sử dụng như là một đặc trưng
để huấn luyện một bộ phân lớp
Mô hình túi từ ngữ học được một bộ từ vựng từ tất cả các văn bản, rồi mô hình các văn bản bằng cách đếm số lần xuất hiện của mỗi từ trong văn bản đó
Hình 1.9: Trích xuất đặc trưng bằng mô hình Bag-of-Word Trong phương pháp này, mỗi từ được gọi là "gram" Tùy theo số từ liền kề được
sử dụng để xây dựng từ điển tính năng mà ta có các tên các nhau như UniGram (chỉ chứa 1 từ), BiGram (chứa không quá 2 từ) và TriGram (chứa không quá 3 từ)
BOW cũng có chung một nhược điểm lớn với một số phương pháp khác là nó không mang thông tin về thứ tự của các từ Cũng như sự liên kết giữa các câu, các đoạn văn trong văn bản Các văn bản có chứa các từ giống nhau thì sẽ có chung 1 biểu diễn vector cho dù nghĩa khác nhau
1.6.3 Word2Vec
Mô hình Word2Vec được sử dụng để học biểu diễn vector của các từ được gọi là
"nhúng từ" Word2vec biểu diễn các từ dưới dạng một phân bố quan hệ với các từ còn lại (distributed representation) Mỗi từ được biểu diễn bằng một vector có các phần tử mang giá trị là phân bố quan hệ của từ này đối với các từ khác trong từ điển Biểu diễn phân phối các từ trong không gian vectơ giúp thuật toán học tập đạt được hiệu suất tốt hơn trong các tác vụ xử lý ngôn ngữ tự nhiên bằng cách nhóm các từ tương tự
Trang 40Ví dụ, 1-of-N (one-hot vector) sẽ vector hoá các từ trong từ điển thành một vector
có chiều dài N (tổng số lượng các từ trong từ điển) Giả sử từ điển của chúng ta chỉ có
5 từ: King, Queen, Man, Woman, và Child
Hình 1.10: Biểu diễn từ Queen bằng phương pháp one-hot-vector
Nhược điểm của cách biểu diễn này là ta không thu được nhiều ý nghĩa trong việc
so sánh các từ với nhau ngoại trừ so sánh bằng, các từ có ý nghĩa hơn không được nhấn mạnh
Ngược lại, word2vec mang lại cho ta cả cú pháp và ngữ nghĩa ở một mức độ nào