Với sự phát triển không ngừng của công nghệ thông tin, số lượng tài liệu điện tử do con
người tạo ra ngày càng lớn phong phú và đa dạng. Nhu cầu khai thác dữ liệu này trong kho
tài liệu là rất lớn, đây là trong những nhu cầu thường ngày, thiết thực của người sử dụng.
Tuy nhiên, một trong những khó khăn mà con người gặp phải trong việc khai thác thông tin
là: Khả năng tìm kiếm chính xác thông tin cần tìm trong kho tài liệu, khả năng tìm kiếm
nhanh với lượng dữ liệu lớn. Nếu dùng các hệ quản trị cơ sở dữ liệu quan hệ để tìm kiếm dữ
liệu thì sẽ gặp phải các hạn chế như: Bị giới hạn cú pháp của ngôn ngữ SQL, tốc độ tìm
kiếm chậm khi tìm kiếm gần đúng (dùng LIKE) trong cơ sở dữ liệu. Qua tìm hiểu thì chúng
tôi thấy trang truy vấn thông tin pháp luật như thuvienphapluat.vn là trang website có thể
khai thác được với lượng dữ liệu lớn và mỗi một tài liệu thường rất dài và có sự trùng lắp về
mặt ngôn ngữ là rất lớn.Việc đó, gây ảnh hướng đến việc tìm kiếm của người sử dụng. Vì lí
do trên, chúng tôi mong muốn phát triển và cải thiện khả năng tìm kiếm thông tin trên văn
bản pháp luật.
7 trang |
Chia sẻ: Thục Anh | Ngày: 11/05/2022 | Lượt xem: 388 | Lượt tải: 0
Nội dung tài liệu Truy vấn thông tin trên văn bản pháp luật, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
102
TRUY VẤN THÔNG TIN TRÊN VĂN BẢN PHÁP LUẬT
Phan Hải Đăng, Dương Thanh Toàn
Viện Công nghệ Việt – Nhật (VJIT), Trường Đại học Công nghệ TP. Hồ Chí Minh
GVHD: TS. Lê Thị Ngọc Thơ
TÓM TẮT
Với sự phát triển không ngừng của công nghệ thông tin, số lượng tài liệu điện tử do con
người tạo ra ngày càng lớn phong phú và đa dạng. Nhu cầu khai thác dữ liệu này trong kho
tài liệu là rất lớn, đây là trong những nhu cầu thường ngày, thiết thực của người sử dụng.
Tuy nhiên, một trong những khó khăn mà con người gặp phải trong việc khai thác thông tin
là: Khả năng tìm kiếm chính xác thông tin cần tìm trong kho tài liệu, khả năng tìm kiếm
nhanh với lượng dữ liệu lớn. Nếu dùng các hệ quản trị cơ sở dữ liệu quan hệ để tìm kiếm dữ
liệu thì sẽ gặp phải các hạn chế như: Bị giới hạn cú pháp của ngôn ngữ SQL, tốc độ tìm
kiếm chậm khi tìm kiếm gần đúng (dùng LIKE) trong cơ sở dữ liệu. Qua tìm hiểu thì chúng
tôi thấy trang truy vấn thông tin pháp luật như thuvienphapluat.vn là trang website có thể
khai thác được với lượng dữ liệu lớn và mỗi một tài liệu thường rất dài và có sự trùng lắp về
mặt ngôn ngữ là rất lớn.Việc đó, gây ảnh hướng đến việc tìm kiếm của người sử dụng. Vì lí
do trên, chúng tôi mong muốn phát triển và cải thiện khả năng tìm kiếm thông tin trên văn
bản pháp luật.
Từ khóa: Apache Lucene, Elasticsearch, indexing, thu thập dữ liệu, vnTokenizer.
ABSTRACT
With the continuous development of information technology, the number of electronic
documents created by human is increasingly rich and diverse. The demand for this data
exploitation in the document warehouse is huge, this is in the daily necessities, practical
users. However, one of the difficulties that we encounter in the exploitation of information is:
the ability to search for accurate information to look for in document repositories, search
capabilities with large amounts of data quickly. If you use relational database management
systems to search data, you will encounter limitations such as: Limited SQL language syntax,
slow search speed when searching approximate (using LIKE) in the database. While
studying, we find that information retrieval websites, such as thuvienphapluat.vn, are those
that can be exploited with a large amount of data and each document is usually very long
and has a great linguistic overlap. These facts affect the performance of user's search. For
the above reasons, we are going to develop and improve the ability to search for information
on legal documents.
Keyword: Apache Lucene, crawling data, Elasticsearch, indexing, vnTokenizer.
103
1 GIỚI THIỆU CHUNG
Truy vấn thông tin là hoạt động thu thập các nguồn thông tin liên quan đến một thông tin cần
tìm kiếm, có thể dựa trên siêu dữ liệu (metadata) và trên việc đánh chỉ mục toàn văn bản
(hoặc dựa vào nội dung khác). Những hệ thống truy vấn thông tin tự động được sử dụng để
giảm thiểu việc quá tải thông tin. Nhiều các trường đại học và thư viện công cộng sử dụng
hệ thống truy hồi thông tin để cung cấp truy cập đến sách báo và các tài liệu khác. Các máy
tìm kiếm trên website được coi là những ứng dụng truy vấn thông tin dễ nhận thấy nhất. Các
công cụ tìm kiếm được tích hợp vào website thì có rất nhiều, trong đó công cụ được biết đến
khá mạnh về lĩnh vực truy vấn thông tin thì không thể nói đến Elasticsearch để giải quyết
việc tìm kiếm bằng thời gian thực và độ chính xác các văn bản trả về có độ tương quan cao.
Để giải quyết vấn đề nêu trên, chúng tôi đã đưa ra một trang website giả lập xử lý truy vấn
thông tin trên trang Thư viện Pháp luật. Mục tiêu cung cấp ứng dụng là cải thiện phần tìm
kiếm cho các trang website giúp người dùng có thể dễ dàng lấy đưa các văn bản trả về mà
mình mong muốn, đồng thời đảm bảo về mặt thời gian và ý nghĩa của việc tìm kiếm.
2 TRIỂN KHAI PHẦN MỀM
Phần này trình bày chi tiết môi trường đề xuất, công cụ và phương pháp thực hiện phần
nghiên cứu tích hợp Elasticsearch để truy vấn thông tin trên Thư viện Pháp luật.
Trong thời đại bùng nổ thông tin, việc tìm kiếm “thông tin” trở nên rất cần thiết và yêu cầu
cao hơn. Ngày nay, có rất nhiều cách để tìm kiếm phổ biến được sử dụng trong trang
website là câu lệnh truy vấn LIKE trong cơ sở dữ liệu quan hệ SQL. Tuy nhiên, việc sử dụng
câu truy vấn như vậy gặp một số vấn đề làm sai kết quả hiển thị và thời gian truy xuất thông
tin. Ví dụ: Nếu tìm kiếm bằng truy vấn LIKE “%one%” thì kết quả sẽ chỉ cần chứa “one” là ra.
Ví dụ: các từ trong tiếng Anh như “phone”, “zone”, “money”, “alone”, nói chung sẽ là một
danh sách kết quả không mong muốn. Còn đối với tiếng Việt, các từ khoá có dấu là “có”, nếu
truy vấn LIKE chỉ gõ “co” thì sẽ không trả về được chính xác kết quả về hiệu suất truy vấn
LIKE sẽ tìm kiếm đơn thuần toàn văn bản không sử dụng index, nghĩa là tập dữ liệu càng
lớn thì tìm kiếm càng lâu.
Hình 1. Sơ đồ thực hiện của đề tài
104
Để có thể giải quyết vấn đề trên trước hết chúng tôi thực hiện lấy dữ liệu về từ trang Thư
viện Pháp luật qua sự phân tích và cào dữ liệu (crawl data) từ các thẻ HTML để lấy các
văn bản về cơ sở dữ liệu MySQL điều này tạo ra lượng dữ liệu dùng cho việc tìm kiếm sau
này, kế tiếp để tạo tài liệu cho index với số lượng nhiều chúng tôi xuất cơ sở dữ liệu vừa
cào ra tập tin kiểu json và đưa vào Elasticsearch bằng lệnh chèn. Sau cùng chúng sẽ xử lý
các câu truy vấn tích hợp vào website. Bây giờ, nếu người dùng tìm kiếm từ khóa thì đầu
ra mong muốn với độ tương quan và thời gian trả kết quả là rất cao, như sơ đồ thực hiện
trong Hình 1.
2.1 Công cụ tìm kiếm theo chỉ mục Elasticsearch [4]
Elasticsearch là một hệ thống hỗ trợ tạo chỉ mục và tìm kiếm riêng biệt, mạnh mẽ, thời gian
đáp ứng và kết quả tìm kiếm phù hợp với yêu cầu. Tiền thân của Elasticsearch được phát
hành phiên bản đầu tiên vào tháng 2/2010 bởi Shay Banon [4]. Nó cung cấp một bộ máy tìm
kiếm dạng phân tán có đầy đủ công cụ với một giao diện web HTTP có hỗ trợ dữ liệu JSON.
Elasticsearch là một máy chủ tìm kiếm dựa trên nền tảng kế thừa và phát triển từ Lucene
Apache. Elasticsearch được phát triển bằng Java và được phát hành dưới dạng mã nguồn
mở theo các điều khoản của Giấy phép Apache.
ElasticSearch có một số ưu điểm như sau:
- Có thể tìm kiếm tất cả các loại dữ liệu, đáp ứng gần như thời gian thực, dễ sử dụng
cũng như dễ cài đặt; hỗ trợ thêm, sửa, xoá hay thay đổi các độ đo, thông số thông qua
HTTP và JSON.
- Hỗ trợ lập chỉ mục với nhiều ngôn ngữ khác nhau và có hỗ trợ lập chỉ mục cho cả tiếng
Việt. Chia dữ liệu hệ thống (sharding) phục vụ cho các ngôn ngữ khác nhau, chẳng
hạn Tiếng Anh và Tiếng Pháp.
- Chúng ta có thể chia thông tin trên 2 máy chủ khác nhau, sau đó người dùng tìm kiếm
tiếng Anh sẽ lấy kết quả từ nút (node) Tiếng Anh và tìm kiếm bằng tiếng Pháp sẽ lấy từ
nút (node) Tiếng Pháp.
- Khả năng tăng sức chịu đựng các truy xuất cùng lúc và giảm các rủi ro khi các nút
khác bị sự cố thông qua khả năng nhân bản (replication).
- Thời gian lập chỉ mục nhanh nên rất hợp với các loại dữ liệu lớn và có tần suất cập
nhật cao.
2.2 Khái niệm chỉ mục ngược (Inverted Index) [4]
Chỉ mục ngược (Inverted Index) được thiết kế để cho phép tìm kiếm toàn văn. Cách thức
của nó khá đơn giản, các văn bản được phân tách ra thành từng từ có nghĩa sau đó sẽ
được map xem thuộc văn bản nào. Khi tìm kiếm tùy thuộc vào loại tìm kiếm sẽ đưa ra kết
quả cụ thể. Ví dụ, ta có hai văn bản cụ thể như sau:
1. The quick brown fox jumped over the lazy dog.
2. Quick brown foxes leap over lazy dogs in summer.
105
Để tạo ra một Inverted Index, trước hết chúng ta sẽ phân chia nội dung của từng tài liệu
thành các từ riêng biệt (chúng tôi gọi là terms), tạo một danh sách được sắp xếp của tất
cả terms duy nhất, sau đó liệt kê tài liệu nào mà mỗi thuật ngữ xuất hiện. Kết quả như trong
Bảng 1a. Bây giờ, nếu chúng ta muốn tìm kiếm từ khóa “quick brown,” chúng ta chỉ cần tìm
trong các tài liệu trong đó mỗi thuật ngữ có xuất xuất hiện hay không, như kết quả minh họa
trong Bảng 1b.
Bảng 1a. Chia nội dung thành các từ riêng biệt
Term
Doc_
1
Doc_
2
Term Doc_1 Doc_2
Quick X jumped X
The X lazy X X
brown X X leap X
dog X over X X
dogs X quick X
fox X summer X
foxes X the X
in X
Bảng 1b. Kết quả tìm kiếm “quick
bro
wn”
Term Doc_1 Doc2
brown X X
quick X
Total 2 1
2.3 Khái niệm Web crawling [1]
Web crawling là quá trình tự động trích xuất các thông tin từ các trang web và lưu trữ nó
dưới một định dạng phù hợp. Chương trình mà thực hiện công việc này gọi là web crawler.
Thông thường, khi muốn lấy một số thông tin từ các trang web, chúng ta sẽ dùng các API
mà các trang đó cung cấp. Đây là cách đơn giản, tuy nhiên không phải trang web nào cũng
cung cấp sẵn API cho chúng ta sử dụng. Do đó chúng ta cần một kĩ thuật để lấy các thông
tin từ các trang web đó mà không thông qua API.
2.4 Phương thức hoạt động của Elasticsearch [2]
Hình 2. Sơ đồ hoạt động của Elasticsearch
106
Elasticsearch được xây dựng để hoạt động như một server riêng biệt theo cơ chế của
RESTful phục vụ việc tìm kiếm dữ liệu.
Đầu tiên, dữ liệu thô (raw data) vào Elasticsearch từ nhiều nguồn như log, system indicators
và webapp sẽ được phân tích, xử lý, bình thường hóa (normalizes) và làm phong phú thêm
(enriches) trong quá trình nhập liệu (Data ingestion) trước khi được lập chỉ mục (index) và
đẩy lên Server Elasticsearch.
Cuối cùng, sau khi dữ liệu được lập chỉ mục, người dùng có thể tạo các truy vấn phức tạp từ
dữ liệu này và sử dụng các tập hợp (aggregations) để truy xuất các bản tóm tắt phức tạp
của dữ liệu hay nói ngắn gọn là lấy data trả về từ Server Elasticsearch.
2.5 Công cụ tách từ VnTokenizer [3]
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.
Chí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. 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ừ.
Ví dụ, ta có câu văn bản cụ thể như sau:
“Dự thảo Thông tư hướng dẫn thực hiện Nghị định 135/2020/NĐ - CP quy định về tuổi nghỉ
hưu đối với quân nhân và người làm công tác cơ yếu hưởng lương như đối với quân nhân do
Bộ Quốc phòng ban hành”.
Sau khi thực hiện công cụ tách từ VnTokenizer ta được kết quả như sau:
“Dự_thảo Thông_tư hướng_dẫn thực_hiện Nghị_định 135/2020/NĐ - CP quy_định về tuổi
nghỉ hưu đối_với quân_nhân và người làm công_tác cơ_yếu hưởng lương như đối_với
quân_nhân do Bộ Quốc_phòng_ban_hành”.
3 KẾT QUẢ ĐẠT ĐƯỢC
3.1 Thu thập dữ liệu cho tệp JSON xuất MySQL
Dữ liệu về từ trang Thư viện Pháp luật qua sự phân tích và cào dữ liệu (crawl data) bằng thư
viện Beautiful Soup từ các thẻ HTML để lấy thông tin văn bản như: tiêu đề, nội dung, về
cơ sở dữ liệu MySQL đã được tạo sẵn, kế tiếp để tạo tài liệu cho index với số lượng nhiều
107
chúng tôi xuất cơ sở dữ liệu vừa cào ra tập tin kiểu json và đưa vào Elasticsearch bằng lệnh
bên dưới để nạp nó vào index.
curl -H "Content-Type: application/json" -XPOST
"localhost:9200/index/_bulk?pretty&refresh" --data-binary "@tentaptin.json"
Việc cào dữ liệu và chuyển tài liệu vào Elasticsearch nhằm phục vụ cho chức năng tìm kiếm
trong Elasticsearch. Kết quả sau khi qua sự phân tích và cào dữ liệu (crawl data) bằng thư
viện Beautiful Soup ta được cơ sở dữ liệu ta được 1,460 văn bản pháp luật.
3.2 Tích hợp Elasticsearch
Để bạn biết đã kết nối thành công với Elasticsearch server lắng nghe ở cổng 9200. Để biết
kết nối với kibana lắng nghe ở cổng 5601 dùng để test Resuft API từ Elasticsearch và có thể
tạo được HTTP Request với các phương thức như PUT, GET ... kèm dữ liệu JSON (REST
API) gửi đến Server Elasticsearch. Kiểm tra kết nối thành công với Elasticsearch với câu
lệnh bên dưới.
curl -X GET
Index là một tập hợp những dữ liệu có chung một số tên thuộc tính, tính chất - nó giống như
một bảng trong SQL. Giờ ta sẽ tiến hành tạo một index có tên là “tvpl”, thật đơn giản chỉ việc
PUT đến địa chỉ /tvpl?pretty, vậy là tạo thành công index “tvpl” và thêm các văn bản cho
Elasticsearch.
3.3 Search Client
Tạo thành công một giao diện hoàn chỉnh dựa vào trang Thư viện Pháp luật. Đồng thời,
thành công trong việc sử dụng các câu truy vấn Request API của Elasticsearch vào trong
website.
Bảng 2. Từ khóa tìm kiếm và kết quả khi sử dụng Elasticsearch
Nội dung truy vấn: Chế độ tài chính đối với các tổ chức tín dụng
Kết quả truy vấn
dưới dạng tiêu đề
các văn bản có liên
quan
1. Dự thảo Nghị định về nội dung đặc th về chế độ tài chính đối
với tổ chức tín dụng yếu kém.
2. Dự thảo Thông tư sửa đổi Thông tư 320/2016/TT - BTC quy
định chế độ bồi dưỡng đối với người làm nhiệm vụ tiếp công
dân, ử lý đơn khiếu nại, tố cáo, kiến nghị, phản ánh do Bộ
trưởng Bộ Tài chính ban hành.
3. Dự thảo Thông tư hướng dẫn thuế và quản lý thuế đối với hộ
kinh doanh, cá nhân kinh doanh do Bộ Tài chính.
4. Dự thảo Thông tư sửa đổi Thông tư quy định về hồ sơ, thủ tục
hành chính trong lĩnh vực quản lý ngoại hối do Thống đốc Ngân
hàng Nhà nước Việt Nam ban hành.
108
4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Vấn đề truy vấn thông tin trang Thư viện Pháp luật còn đang là bài toán khó với rất nhiều
khía cạnh. Trong bài nghiên cứu này chúng tôi bắt đầu bằng việc tích hợp Elasticsearch vào
để kiểm tra và cải thiện một số câu truy vấn Request API có trong Elasticsearch. Nói đến cỗ
máy tìm kiếm (search engines) thương mại mã nguồn mở, có hai sự lựa chọn lớn:
Elasticsearch hoặc Solr. Về mặt hiệu năng, cả hai lựa chọn đều hoạt động ổn định. Vậy dù là
ứng dụng tìm kiếm nội bộ hay bên ngoài, thì vấn đề hiệu suất/ công năng cũng không quá
quan trọng nếu lập trình viên thiết kế và cấu hình một cách phù hợp. Việc áp dụng
Elasticsearch cho đề tài này đem lại đầu ra mong muốn với độ tương quan và thời gian trả
kết quả là rất cao so với trang website thuvienphapluat.vn hiện có. Qua đó, chúng ta cũng
thấy được tiềm năng của hướng nghiên cứu này trong tương lai với bài toán truy vấn thông
tin này vì nó đem lại sự hài lòng và độ chính xác của tài liệu truy vấn. Trong nghiên cứu tiếp
theo, chúng tôi sẽ tiến hành ứng dụng cho các bài toán khác trong xử lý ngôn ngữ tự nhiên
mà cụ thể là bài toán phân tách từ ngữ trong tiếng Việt.
TÀI LIỆU THAM KHẢO
[1] Scraping Data on the Web with BeautifulSoup. Hackers Slackers.
https://www.crummy.com/software/BeautifulSoup/. Tháng 10/2019.
[2] Elastic Stack and Product Documentation. Elastic.
https://www.elastic.co/guide/index.html
[3] Chương trình tách từ vnTokenizer. Lê Hồng Phương - Nguyễn Thị Minh Huyền.
Tháng 12/2016.
Các file đính kèm theo tài liệu này:
- truy_van_thong_tin_tren_van_ban_phap_luat.pdf