- " "
- ": phần tử chứa danh sách thông tin liên quan đến thông tin bảng thơng tin Ví dụ: danh sách sân bay, địa điểm du lịch, địa danh tiếng Sử dụng thư viện Beautiful Soup ta thu ba thực thể đầu - quan hệ - thực thể đích dạng tiêu đề - key - value Với key, value thu từ việc trích xuất thơng tin từ thẻ HTML Trong hình (3.3) ba thu từ viết có tiêu đề "Hà Nội" 36 Hình 3.3: Một số ba trích xuất từ thẻ HTML viết "Hà Nội" 3.3 Xử lý ngôn ngữ tự nhiên (NLP) - Vi_spacy VNCoreNLP 3.3.1 Vi_spacy VNCoreNLP Phần lớn liệu Wikipedia dạng phi cấu trúc biên tập viên tạo Để trích xuất thơng tin thực thể mối quan hệ chúng, ta cần sử dụng kĩ thuật xử lý ngơn ngữ tự nhiên để phân tích cú pháp, cấu trúc, ngữ nghĩa tách từ, phân loại từ loại, phân tích cú pháp trích xuất thơng tin đoạn văn So với ngôn ngữ tiếng Anh, số lượng mơ hình xử lý ngơn ngữ tự nhiên phát triển hỗ trợ tiếng Việt cịn hạn chế Tuy nhiên ta có hai mơ hình xử lý tách từ, phân loại từ hỗ trợ tiếng Việt tốt Vi_Spacy model anh Trần Trung Việt [28] VNCoreNLP nhóm nghiên cứu anh Nguyễn Quốc Đạt [22] phát triển Để so sánh hai mơ hình này, ta sử dụng số độ đo sau • sents_p: độ xác việc dự đoán số lượng câu văn Nó tính tỷ lệ số câu dự đoán tổng số câu dự 37 đốn • sents_r: tỷ lệ số câu dự đoán tổng số câu thực tế văn • sents_f: điểm số F1 trung bình số liệu sents_p sents_r • tag_acc: độ xác việc dự đoán nhãn từ loại (POS tags) danh từ, động từ (verb), tính từ, trạng từ Thống kê kết đánh giá tập liệu mẫu tác giả thể bảng (3.1) Bảng 3.1: So sánh Vi_spacy VNCoreNLP Độ đo Vi_spacy VNCoreNLP sents_p 0.9040097205 0.8932 sents_r 0.9348 0.93 sents_f 0.9168207024 0.9178 tag_acc 0.8942170893 0.9065 Ta thấy dựa thang đo sents_f tag_acc ta thấy VNCoreNLP đánh giá cao Vì vậy, ta sử dụng mơ hình VNCoreNLP để trích xuất thơng tin ba bước Mơ hình VNCoreNLP huấn luyện dựa khoảng 39000 từ vựng tiếng Việt, âm tiết từ ghép nối dấu gạch "_" Các nhãn từ loại thống kê bảng (3.2) Một ví dụ VNCoreNLP để phân loại từ loại câu "Hà Nội thủ Việt Nam." thể hình (3.4) Câu văn tách từ phân loại theo nhãn sau • "Hà_Nội", Np: danh từ riêng • "là", V: động từ • "thủ_đô", N: danh từ 38 • "của", E: giới từ • "Việt_Nam" Np: danh từ riêng • ".", CH: dấu câu Bảng 3.2: Các nhãn phân loại từ VNCoreNLP STT Nhãn Tên Ví dụ N Danh từ tiếng, nước, thủ đô, nhân dân Np Danh từ riêng Đại học Bách khoa Hà Nội Nc Danh từ loại con, cái, đứa, Nu Danh từ đơn vị mét, cân, giờ, nắm, nhúm, hào, xu Ni Danh từ ký hiệu A1, A4, 60 A, 20a, 20b V Động từ ngủ, ngồi, đọc, viết A Tính từ tốt, xấu, đẹp; cao, thấp, rộng P Đại từ tôi, chúng tôi, hắn, đại nhân, đại L Định từ mỗi, từng, các, những, 10 M Số từ một, mười, mười ba, dăm, vài 11 R Phó từ đã, sẽ, đang, vừa, mới, từng, 12 E Giới từ trên, dưới, trong, ngồi 13 C Liên từ vậy, nhiên, ngược lại 14 Cc Liên từ đẳng lập và, hoặc, với, 15 I Thán từ ôi, chao, 16 T Trợ từ, tình thái từ à, a, á, a, ấy, chắc, chăng, cho 17 B Từ tiếng nước Internet, email, video, chat 18 Y Từ viết tắt OPEC, WTO, HIV 19 X Không phân loại 20 Z Yếu tố cấu tạo từ bất, vô, phi 21 CH Các loại dấu câu !?,;: 39 Hình 3.4: Một ví dụ với VNCoreNLP 3.3.2 Trích xuất thơng tin ba (h,r,t) sử dụng VNCoreNLP Với việc trích xuất dấu câu văn bản, ta dễ dàng tách đoạn văn dài thành câu riêng lẻ, vấn đề trích xuất ba thực thể đầu - quan hệ - thực thể đích câu văn Phương pháp đơn giản để trích xuất thơng tin ba (h,r,t) sử dụng tập hợp quy tắc (rule) xác định trước, tùy thuộc vào đặc điểm riêng toán Ý tưởng phương pháp xây dựng thủ công tập liệu đủ lớn thực thể, quan hệ chuẩn đưa vào mơ hình VNCoreNLP để có thẻ từ loại tương ứng Ở phần sau thuật toán trích xuất, với câu liệu mới, ta tìm kiếm dãy thẻ từ loại tương đồng với thẻ từ loại (POS tags) có tập mẫu đưa thông tin thực thể, quan hệ tương ứng Với toán xây dựng đồ thị tri thức cho miền địa lý Việt Nam, ban đầu ta xây dựng tập 100 câu thông tin địa lý ngẫu nhiên, xác định thực thể quan hệ phương pháp thủ cơng sau thực phân loại nhãn từ loại Từ ta có tập 185 thực thể 80 quan hệ mẫu khác nhãn phân loại từ loại tương ứng Quy tắc xác định thực thể Các thực thể địa lý thường danh từ, cụm danh từ tên riêng Ta sử dụng nhãn phân loại từ VNCoreNLP để trích xuất thực thể Ví dụ sau • "Hà Nội" có nhãn phân loại N p • "quận Cầu Giấy" có nhãn phân loại N + N p 40 • "đường mịn Hồ Chí Minh" có nhãn phân loại N + N p • "núi đá vơi" có nhãn phân loại N + N • "đồng châu thổ sơng Hồng" có nhãn phân loại N + N + N p Thực thống kê với tập 185 thực thể mẫu có cho thấy tất 12 trường hợp (rule) nhãn phân loại thực thể Với N + N p hiểu hai từ liên tiếp có nhãn danh từ (N) danh từ riêng (N) tạo thành thực thể Ta ưu tiên trích xuất thực thể có nhãn đầy đủ (kết hợp hai nhãn trở lên), ví dụ với cụm từ "quần đảo Hồng Sa" trích xuất thực thể có kết "quần đảo", "Hồng Sa" "quần đảo Hồng Sa" thuật tốn cho thực thể "quần đảo Hồng Sa" Quy tắc xác định quan hệ Việc trích xuất quan hệ thực thể phức tạp có nhiều trường hợp, quy tắc Một số ví dụ nhãn phân loại quan hệ sau • "là" có nhãn phân loại V • "nằm ở" có nhãn phân loại V + E • "có dân số là" có nhãn phân loại V + N +V • "là phần của" có nhãn phân loại V + M + N + E Thống kê cho thấy 80 quan hệ mẫu có 23 trường hợp (rule) nhãn phân loại khác Tương tự trích xuất thực thể, ta ưu tiên quan hệ có nhãn đầy đủ Thuật tốn trích xuất ba (h-r-t) Dựa quy tắc xây dựng, ta có thuật tốn trích xuất ba sau Thuật tốn 3.2 Trích xuất ba sử dụng quy tắc Input: • Tập Sents bao gồm câu tách VNCoreNLP 41 • Trong câu bao gồm từ gán nhãn phân loại gọi token Mỗi token bao gồm token.word chứa từ gán nhãn token.pos nhãn phân loại từ • Tập E V tập quy tắc thực thể quan hệ Output: Danh sách ba thực thể (h,r,t) Khởi tạo: • biến h chứa thơng tin thực thể đầu • biến r chứa thơng tin quan hệ • biến t chứa thơng tin thực thể đích • data-frame result để lưu thơng tin ba (h-r-t) Bước 1: h ← φ , r ← φ , t ← φ Với câu thuộc Sents, duyệt token câu Bước 2: Kiểm tra có tồn dãy token.pos thỏa mãn quy tắc e ∈ E hay khơng? Nếu tồn lưu dãy token.word tương ứng vào biến thực thể đầu h chuyển sang bước Nếu khơng bỏ qua quay lại bước chuyển sang câu Bước 3: Thực duyệt tiếp token câu, kiểm tra có tồn dãy token.pos thỏa mãn quy tắc v ∈ V hay khơng? Nếu tồn lưu dãy token.word tương ứng vào biến quan hệ r chuyển sang bước Nếu khơng bỏ qua quay lại bước chuyển sang câu Bước 4: Tiếp tục duyệt token lại câu, kiểm tra có tồn dãy token.pos thỏa mãn quy tắc e ∈ E hay không? Nếu tồn lưu dãy token.word tương ứng vào biến thực thể đích chuyển sang bước Nếu khơng quay lại bước chuyển sang câu Bước Thêm ba thực thể h,r,t vào danh sách result Thuật toán (3.2) duyệt qua câu, câu trích xuất thơng tin theo thứ tự thực thể đầu - mối quan hệ - thực thể đích lưu vào 42 data-frame Nếu câu không chứa đủ ba thông tin cần thiết coi câu khơng có giá trị chuyển sang câu Sau trích xuất thông tin ba, ta biểu diễn sử dụng đồ thị Để đánh giá thông tin trích xuất từ việc gán nhãn, phân loại từ loại ta xét đoạn văn mẫu sau "Hà Nội thủ đô, thành phố trực thuộc trung ương đô thị loại đặc biệt nước Cộng hòa Xã hội chủ nghĩa Việt Nam Hà Nội nằm phía tây bắc trung tâm vùng đồng châu thổ sơng Hồng, với địa hình bao gồm vùng đồng trung tâm vùng đồi núi phía bắc phía tây thành phố Với diện tích 3.359,82 km², dân số 8,33 triệu người, Hà Nội thành phố trực thuộc trung ương có diện tích lớn Việt Nam, đồng thời thành phố đông dân thứ hai có mật độ dân số cao thứ hai 63 đơn vị hành cấp tỉnh Việt Nam, phân bố dân số không đồng Hà Nội có 30 đơn vị hành cấp huyện, gồm 12 quận, 17 huyện thị xã." Các ba (h-r-t) mà mơ hình trích xuất • Hà_Nội - - thủ_đơ • Hà_Nội - nằm phía_tây - vùng đồng_bằng sơng_Hồng • Hà_Nội - - thành_phố_trực_thuộc_trung_ương • Hà_Nội - có - 30 đơn_vị hành_chính cấp huyện Ta thấy thơng tin trích xuất cịn hạn chế, chưa đầy đủ Thậm chí cịn có thơng tin bị sai lệch quan hệ "nằm phía tây" xác phải "nằm phía tây bắc" Nguyên nhân kĩ thuật trích xuất theo quy tắc đơn giản, quy tắc đặt chưa đầy đủ Để giải vấn đề này, ta bổ sung, xây dựng thêm tập quy tắc thực thể, quan hệ mà tập liệu mẫu chưa có Ngồi ra, việc trích xuất thơng tin câu ghép khó khăn thuật tốn trích xuất tối đa ba (h-r-t) câu văn lượng thông tin nhiều 43 3.4 Biểu diễn đồ thị Có nhiều cơng cụ phần mềm hỗ trợ việc trực quan hóa đồ thị tri thức Trong có NetworkX [20] gói thư viện Python hỗ trợ xây dựng tạo, thao tác nghiên cứu kiến trúc đồ thị từ đơn giản đến phức tạp Dươi số tính mà NetworkX hỗ trợ • Tạo đồ thị: NetworkX cho phép người dùng tạo đối tượng đồ thị thông qua lớp đồ thị, bao gồm đồ thị vô hướng, đồ thị có hướng, đồ thị trọng số, đồ thị đa đồng • Thao tác đồ thị: NetworkX cung cấp hàm để thêm xóa đỉnh cạnh từ đồ thị, lấy danh sách đỉnh cạnh, tìm kiếm đỉnh cạnh • Phân tích đồ thị: NetworkX cung cấp hàm để tính tốn thông số đồ thị, bao gồm bậc đỉnh, bán kính, đường kính, đường ngắn nhất, trung tâm, cụm • Các định dạng file: NetworkX cho phép người dùng đọc ghi đối tượng đồ thị định dạng file thông dụng GraphML, GEXF, GML, Pickle • Hỗ trợ thuật tốn phân tích mạng: NetworkX hỗ trợ thuật tốn phân tích mạng phổ biến PageRank, Clustering • Hỗ trợ trực quan hóa mạng: NetworkX hỗ trợ trực quan hóa đồ thị cách sử dụng thư viện trực quan hóa Matplotlib, Plotly • Hỗ trợ mạng xã hội: NetworkX hỗ trợ tính tốn thơng số đồ thị cho mạng xã hội, bao gồm lan truyền thông tin, tìm kiếm đỉnh quan trọng • Hỗ trợ mạng kích thước lớn: NetworkX cung cấp phương pháp để xử lý đồ thị lớn, bao gồm lưu trữ đồ thị xử lý song song 44 3.5 Triển khai kết Dựa phương pháp trình bày, ta thực xây dựng đồ thị tri thức miền địa lý - hành hính Việt Nam với tham số sau • Đầu vào tiêu đề cho viết Wikipedia danh sách tên 63 tỉnh thành Việt Nam [1] Số độ sâu lớp trang đường dẫn depth = • Với viết, để có thơng tin gần với lĩnh vực xét nhất, ta giới hạn lượng thông tin phi cấu trúc thu thập ba đoạn văn viết Dựa phương pháp xây dựng được, ta thực bước sau Bước 0: Tạo tệp lưu trữ liệu thông tin đầu vào, đầu sau • Tệp excel "tieude.xlsx": Gồm hai cột hứa thông tin tiêu đề đầu vào cột thích để đánh dấu xem tiêu đề trích xuất thơng tin hay chưa • Tệp excel "hrt.xlsx": Gồm ba cột chứa thông tin ba trích xuất • Tệp excel "text_sent.xlsx": Chứa câu văn trích xuất từ viết Wikipedia • Tệp text "rule_object.txt": Chứa thơng tin quy tắc xác định thực thể • Tệp text "rule_relation.txt": Chứa thông tin quy tắc xác định mối quan hệ Bước Danh sách 63 tiêu đề đầu vào tên 63 tỉnh thành lưu vào tệp "tieude.xlsx" gồm hai cột "tiêu đề" "note", cột "note" chứa thơng tin xem tiêu đề trích xuất thơng tin hay chưa (nếu chưa giá trị khơng 0, ngược lại giá trị 1) Bước Duyệt qua tệp chứa danh sách tiêu đề, thực tìm tiêu đề viết liên quan đến tiêu đề tại, chưa có danh sách tiêu đề chèn thêm vào tệp "tieude.xlsx" với thích có giá trị Cùng với đó, ta trích xuất thơng tin 45 ba từ liệu gán nhãn dạng bảng lưu vào tệp "hrt.xlsx" Song song, ta trích xuất câu văn lưu vào tệp "text_sent.xlsx" Bước Duyệt tệp "text_sent.xlsx", với câu văn bản, ta thực bước trích xuất mối quan hệ sử dụng thư viện VNCoreNLP lưu vào tệp "hrt.xlsx" Bước Xem kết file "hrt.xlsx", loại bỏ ba không hoàn thiện Bước Thực biểu diễn đồ thị thư viện NetworkX Hình ảnh số bước thực minh họa hình (3.5), hình (3.6) , hình (3.7) hình (3.8) Hình 3.5: Danh sách tiêu đề chương trình duyệt qua tiêu đề viết Cài đặt chương trình ngơn ngữ Python 3.7, sử dụng máy tính cá nhân với cấu hình CPU Intel Core i5-1135G7 2.4GHz thực chương trình với tham số chọn Với tham số độ sâu (depth) 2, chương trình trích xuất qua 2732 viết khoảng thời gian 327 phút, trung bình thời gian trích xuất 7,2 giây/bài viết Các thống kê cụ thể đồ thị tri thức xây dựng được thể bảng (3.3) 46 Hình 3.6: Quy tắc xác định thực thể quan hệ Hình 3.7: Nội dung câu văn thu thập từ Wikipedia Hình 3.8: Một phần ba mơ hình trích xuất 47 Bảng 3.3: Thống kê đồ thị tri thức xây dựng Số lượng Số viết trích xuất thơng tin 2732 Tổng số câu văn 12200 Tổng số ba trích xuất 29143 Số ba từ liệu dạng bảng 21432 Số ba từ phân tích từ loại 7711 Số thực thể khác 11601 Số quan hệ khác 492 Qua thống kê, ta phát số ba khơng có ý nghĩa bị khuyết mối quan hệ thực thể, quan hệ, thực thể bị bắt nhầm ký tự, chữ đặc biệt khơng định dạng tiếng Việt Thực tìm kiếm, ta loại bỏ 210 ba khơng có ý nghĩa Một phần đồ thị tri thức xây dựng liên quan đến thực thể "Hà Nội" thể hình (3.9) Hình 3.9: Một số thực thể liên quan đến "Hà Nội" Theo trang Wikipedia tại, thơng tin dân số, diện tích mật độ dân số đơn vị hành tham khảo dựa số liệu Tổng 48 cục thống kê [1] Ta sử dụng số liệu tổng cục thống kê để so sánh với thông tin mà đồ thị thu thập Thực lập danh sách dân số, diện tích, mật độ dân số 705 đơn vị hành cấp huyện 63 tỉnh thành theo Tổng cục thống kê so sánh với thơng tin đồ thị tri thức có Kết thể bảng (3.4) Bảng 3.4: Thống kê thơng tin trích xuất Dân số Diện tích Mật độ dân số Số huyện trích xuất thơng tin 693 691 685 Số huyện trích xuất thơng tin xác 693 691 685 Ta thấy tỷ lệ thơng tin dân số, diện tích, mật độ dân số quận/huyện/thị xã mà đồ thị tri thức thu thập cao, khoảng 97% − 98% số lượng thơng tin có xác Ta thấy thơng tin gán nhãn, độ xác thơng tin thu cao 3.6 Một số vấn đề gặp phải Mặc dù ta xây dựng đồ thị tri thức theo miền địa lý, địa danh Việt Nam từ tiêu đề đầu vào, số vấn đề tồn đọng sau • Xác định đầy đủ quy tắc thực thể, quan hệ mẫu: việc xây dựng quy tắc mẫu giúp ta trích xuất thơng tin cách đầy đủ xác Tuy nhiên, quy tắc đủ? Đây vấn đề lớn, liệu đa dạng liên tục sinh quy tắc phức tạp lên theo thời gian • Tính đầy đủ thơng tin: ví dụ khơng có cở sở để đảm bảo đồ thị trích xuất tất thông tin tên quận/huyện tỉnh Điều phụ thuộc vào chất lượng nguồn liệu, thuật tốn trích xuất Và vấn đề "lượng liệu đủ?" lĩnh vực cụ thể câu hỏi lớn cần đặt trước xây dựng đồ thị tri thức 49 • Tính xác thơng tin: vấn đề đánh giá độ xác địi hỏi phải có nguồn liệu so sánh đáng tin cậy, thông qua nghiệp vụ so sánh, thống kê thông qua trải nghiệm người dùng • Ứng dụng đồ thị tri thức: đồ thị tri thức xây dựng cịn sơ khai Để ứng dụng đồ thị, ta phải nâng cao chất lượng đồ thị, sử dụng ngơn ngữ truy vấn, mơ hình học máy, mơ hình xử lý ngơn ngữ tự nhiên để phục vụ cho việc tìm kiếm thơng tin, đưa thơng tin có ngữ nghĩa hay phục vụ cho hệ thống hỗ trợ định 50