∑𝑛−1 ∑𝑚−1 𝑀(𝑥𝑖 , 𝑦𝑗 )
𝑆(𝑋, 𝑌) =
𝑖=0 𝑗=0
𝑛 + 𝑚 − ∑𝑛−1 ∑𝑚−1 𝑀(𝑥𝑖 , 𝑦𝑗)
Trong đó:
𝑖=0 𝑗=0
- S(X, Y): Độ tương đồng giữa 2 chuỗi ký tự X và Y.
- x, y: Lần lượt là tập hợp các từ trong chuỗi X và Y (các từ không trùng lặp).
- n, m: Lần lượt là số lượng các từ không trùng lặp trong chuỗi ký tự X và Y.
- 𝑴(𝒙𝒊, 𝒚𝒋) : Chỉ số tương đồng về ngữa nghĩa của 2 từ 𝑥𝑖 và 𝑦𝑗 dựa trên từ điển word2vec.
Ví dụ: Cho 2 câu sau:
- X : Cách để bày tỏ tình cảm với bạn gái.
- Y : Cách để thổ lộ tình yêu với bạn gái.
Sau khi phân tách từ ta sẽ có hai tập từ tương ứng như sau:
- x = {cách, để, bày_tỏ, tình_cảm, với, bạn_gái}
- y = {cách, để, thổ_lộ, tình_yêu, với, bạn_gái}
- n = 6, m = 6
Dễ dàng để nhận thấy hai tập x, y có tập từ chung nhau (phần giao):
{cách, để, với, bạn_gái} (4 phần tử)
Và hai tập x, y hợp với nhau (phần hợp) thành tập từ:
{cách, để, bày_tỏ, thổ_lộ, tình_cảm, tình_yêu, với, bạn_gái} (8 phần tử)
Nếu chúng ta áp dụng công thức của Jaccard Similarity thì độ tương đồng giữa 2 câu văn sẽ là:
𝐽(𝑋, 𝑌) = 4
8
= 0.5 (1)
Dựa vào từ điển word2vec ta sẽ có ma trận chỉ số tương đồng về ngữ nghĩa của các từ trong hai chuỗi X và Y như sau:
cách | để | thổ_lộ | tình_yêu | với | bạn_gái | |
cách | 1 | 0 | 0 | 0 | 0 | 0 |
để | 0 | 1 | 0 | 0 | 0 | 0 |
bày_tỏ | 0 | 0 | 0.619774 | 0 | 0 | 0 |
tình_cảm | 0 | 0 | 0 | 0.705005 | 0 | 0 |
với | 0 | 0 | 0 | 0 | 1 | 0 |
bạn_gái | 0 | 0 | 0 | 0 | 0 | 1 |
Có thể bạn quan tâm!
- Thị Phần Sử Dụng Các Công Cụ Tìm Kiếm Trên Toàn Cầu Năm 2019
- Bảng Đối Chiếu Một Số Khái Niệm Của Elasticsearch Và Mysql
- Các Phương Pháp Tiếp Cận Của Bài Toán Phân Tách Từ
- Cấu Trúc Lưu Trữ Dữ Liệu Bài Viết Của Wikihow Trên Database
- Nội Dung Bài Viết Phù Hợp Với Truy Vấn Của Người Dùng
- Hệ thống tìm kiếm tri thức thông minh trên miền wikihow - 9
Xem toàn bộ 81 trang tài liệu này.
Bảng 4: Ma trận chỉ số tương đồng giữa các từ theo Word2vec
Khi đó độ tương đồng giữa hai chuỗi X và Y tính theo phương pháp đề xuất sẽ là:
𝑆(𝑋, 𝑌) = 1+1+0.619774+0.705005+1+1 6+6−(1+1+0.619774+0.705005+1+1)
= 5.324779
6.675221
≈ 0.7977 (2)
Nhìn vào hai kết quả tính độ tương đồng (1) và (2) thì cho thấy phương pháp đề xuất sẽ cho ra kết quả tương đồng cao hơn nếu như hai chuỗi đầu vào có chứa các từ đồng nghĩa.
Tập dữ liệu
Dữ liệu được sử dụng trong luận văn được thu thập từ website wikiHow (https://www.wikihow.com/). Đây là một trang web cộng đồng trực tuyến mang tính chất wiki. Được thành lập vào năm 2005 bởi Jack Herrick, tính đến năm 2017 wikiHow chứa hơn 190.000 bài viết hướng dẫn miễn phí và hơn 1.6 triệu người dùng đã đăng ký [14].
Dữ liệu được sử dụng trong luận văn này chỉ bao gồm những bài viết tiếng Việt. Dữ liệu này được trải rộng trong các lĩnh vực trong đời sống như:
- Nghệ thuật Giải trí
- Xe hơi và Phương tiện Khác
- Máy tính và Điện tử
- Giáo dục và Truyền thông
- Cuộc sống Gia đình
- Tài chính và Kinh doanh
- Ẩm thực và Giải trí
- Sức khỏe
- Sở thích và Thủ công Mỹ nghệ
- Ngày lễ và Truyền thống
- Nhà ở và Làm vườn
- Chăm sóc Cá nhân và Phong cách
- Thú cưng và Động vật
- Triết học và Tôn giáo
- Mối quan hệ
- Thể thao và Thẩm mỹ
- Du lịch
- Thế giới Làm việc
- Giới trẻ.
Trong mỗi lĩnh vực, là tập hợp các bài biết về cách làm/công thức để thực hiện các vấn đề trong cuộc sống thường ngày chúng ta hay gặp phải, ví dụ như: Cách để làm gà rán KFC, Cách để nướng hạt điều, Cách nấu cơm bàng lò vi sóng, Cách xác định hắc lào, Các điều trị nấm móng… Mỗi bài viết bao gồm một hoặc nhiều phương pháp thực hiện và các bước thực hiện cụ thể cho mỗi phương pháp thông qua văn bản và hình ảnh minh họa. Các bài
viết này được đóng góp và chỉnh sửa từ nhiều biên tập viên, nhà nghiên cứu và các chuyên gia.
Hình 14: Minh họa dữ liệu từ WikiHow
Tổng số lượng bài viết thu thập được là khoảng 10.000, mỗi bài viết có khoảng từ một đến bốn phương pháp khác nhau.
Xây dựng hệ thống
3.3.1. Thu thập dữ liệu từ wikiHow và index dữ liệu vào Elasticsearch
Hình 15: Thu thập dữ liệu và index dữ liệu vào Elasticsearch
3.3.1.1. Thu thập dữ liệu từ trang web wikiHow
Để thu thập dữ liệu từ trang web wikiHow, tôi đã xây dựng một công cụ (sau đây tôi gọi là web-crawler) có chức năng thu thập tất cả các đường link của các bài viết có trên trang web https://wikihow.vn. Với những đường link đó, công cụ này sẽ tải dữ liệu của bài viết về và thực hiện trích xuất các thông tin của bài viết để lưu trữ vào cơ sở dữ liệu.
Để trích xuất được các thông tin của trang web, web-crawler đã sử dụng thư viện Jsoup. Đây là một thư viện của Java, chúng làm việc với dữ liệu html. Jsoup cung cấp rất nhiều API phục vụ cho việc kéo và trích xuất dữ liệu từ các website một cách linh hoạt, thuận tiện và được sử dụng tốt với phương thức HTML5 DOM và CSS selectors. [15]
Để có thể lấy được các đường dẫn (link) của các bài viết một cách đầy đủ nhất, web-crawler sẽ tạo ra một queue để lưu trữ các đường link mà công cụ đã khám phá ra được trong wikiHow. Các phần tử trong queue sẽ có thông tin về url của website và kiểu của url. Kiểu của url được phân thành các dạng sau:
- Category: đây là đường dẫn của các chuyên mục, như được nói ở phần giới thiệu của wikiHow thì nó sẽ bao gồm 19 chuyên mục lớn về các lĩnh vực trong đời sống như: Nghệ thuật Giải trí, Xe hơi và Phương tiện Khác, Máy tính và Điện tử, Giáo dục và Truyền thông, Cuộc sống Gia đình…
- Page: trong mỗi chuyên mục thì thường sẽ có rất nhiều các bài viết, vì vậy wikiHow sẽ sắp xếp các bài viết này thành từng trang một và mỗi trang thì thường sẽ bao gồm nhiều nhất là 80 tiêu đề bài viết trong chuyên mục đó, và có 1 hoặc nhiều trang, tùy vào số lượng các bài viết trong chuyên mục.
- Article: đây là đường dẫn trực tiếp đến bài viết. Và sẽ là nơi chúng ta có thể lấy được thông tin đầy đủ về nội dung của bài viết.
Khởi tạo queue trên, công cụ sẽ cho vào tất cả 19 đường link của 19 chuyên mục chính trong wikiHow và được mang kiểu là category. Ta thực hiện thu thập các đường dẫn trực tiếp đến bài viết bằng cách lấy lần lượt các phần tử trong queue bên trên, nếu như phần tử được lấy ra khỏi queue:
- Có kiểu category: chúng ta sẽ sử dụng Jsop để trích xuất thông tin nội dung của trang web theo url đã lưu.
o Nếu như nhận thấy chuyện mục đó chỉ bao gồm một trang thì chúng ta sẽ tạo một bản sao(clone) từ phần tử đó và chuyển thành kiểu page và url giữ nguyên. Sau đó đẩy phẩn tử mới này vào queue.
o Nếu như chuyên mục có nhiều trang thì chúng ta sẽ lần lượt phép duyệt với một biến tăng dần rồi thay đổi tham số trên url để xem chuyên mục có bao nhiêu trang. Vòng lặp sẽ dừng khi mà biến tăng dần sẽ tạo ra một url mà trang web không tồn tại. Ví dụ: khi ta có chuyên mục “Máy tính và điện tử” có link chuyên mục là:
https://www.wikihow.vn/Thể_loại:Máy-tính-và-Điện-tử
ta sẽ duyệt lần lượt các url: https://www.wikihow.vn/Thể_loại:Máy-tính-và-Điện-tử?pg=1 https://www.wikihow.vn/Thể_loại:Máy-tính-và-Điện-tử?pg=2 https://www.wikihow.vn/Thể_loại:Máy-tính-và-Điện-tử?pg=3
…
Đến khi tham số pg trong url sẽ tạo ra một link không có nội dung. Khi đó sẽ là giới hạn của số trang trong chuyên mục hiện tại. Và tương tự như trên, ta sẽ tạo ra các phần tử mới có kiểu là page và url là các url bên trên. Sau đó đẩy phẩn tử mới này vào queue.
- Có kiểu page: khi download source code của trang web tương ứng với url của phần tử này, chúng ta sẽ được một danh sách các url của các bài viết có dạng như sau: https://www.wikihow.vn/Lưu-tập-tin-vào-USB
https://www.wikihow.vn/Thay-đổi-ngôn-ngữ-mặc-định-trong-Google-Chrome https://www.wikihow.vn/Thay-đổi-quốc-gia-trên-YouTube
Với mỗi url trên ta sẽ tạo một phần tử có kiểu article và url tương ứng và cho vào trong queue.
- Có kiểu article: chúng ta sẽ giữ nguyên (có thể clone ra một phần tử tương ứng để push vào queue).
Vòng lặp trên sẽ thực hiện đến khi tất cả các phần tử trong queue đều có kiểu là article.
Hình 16: Mô tả luồng hoạt động của cơ chế thu thập dữ liệu trên wikiHow
Sau khi đã có tất cả các url của tất cả bài viết trên wikiHow, web-crawler sẽ tiến hành kéo nội dung của trang web về và trích xuất thông tin. Các thông tin mà chúng ta có thể thu thập được từ một bài viết thường sẽ là:
- Tiều đề bài viết, được nằm ở phía trên cùng của trang web. Sau đó sẽ là nội dung tóm tắt hoặc mô tả về bài viết (phần đánh dấu số 1 trong ảnh 18).
- Các phương pháp để thực hiện (phần đánh dấu số 2 trong ảnh 18).
- Với mỗi phương pháp thì sẽ có một bài bước tiến hành được mô tả cụ thể và kèm với đó có thể là hình ảnh (phần đánh dấu số 3 trong ảnh 18).