Lọc nội dung chính của các trang web (URLs)

Một phần của tài liệu Luận án tiến sĩ: Xử lý tiếng việt (Trang 39 - 44)

Khi các URL được tải về, thông tin MIME4 cho URL cũng như kích cỡ của trang là có sẵn, chỉ thu lấy các trang có kiểu MIME là text hoặc HTML và có dung lượng lớn hơn 5 KB (để xác suất các tệp này có tính kết nối văn bản5 lớn hơn) bởi vì các tập tin có độ lớn này là rất thường xuyên chứa các đoạn liên kết tới các tập tin và văn bản không có tính kết nối cao. Các tệp có dung lượng lớn hơn 2 MB cũng

được loại bỏ để tránh bất kì tệp thuộc miền đặc biệt nào thống trị thành phần của kho ngữ liệu.

Những trang được tải về bao hàm cả các dấu (thẻ) của HTML, văn bản ‘boilerplate’- các thanh menu, quảng cáo.... Đó là các phần tài liệu không hợp pháp, tạm gọi là phần đánh dấu. Thuật toán rút trích phần thân văn bản BTE (Body Text Extraction) được phát triển từ thuật toán gốc của Aidan Fin - loại bỏ những phần

đánh dấu và chỉ trích rút những văn bản kết nối [30](có tính kết nối văn bản) . BTE đã thực hiện trên tất cả các trang tải xuống để thu được các trang văn bản thô. Những trang văn bản thô này lại tiếp tục được loại bỏ nhũng trang văn bản có tỷ lệ từ chức năng thấp [36]. Việc kiểm tra thực hiện như sau: giả định 500 từ đầu trong danh sách tần số (được lấy từ kho ngữ liệu Wiki) bao gồm hầu hết các từ

chức năng. Để thiết lập một ngưỡng tính tỷ lệ dấu hiệu (token), tất cả các tệp tin

4 MIME, viết tắt của Multipurpose Internet Mail Extensions là một chuẩn Internet về định dạng cho thư điện tử

24

Wiki được sắp xếp giảm dần theo tỷ lệ các từ trong tệp với 500 từ chức năng, kết quả cho thấy hầu hết các tệp Wiki ở phía dưới (phía sau 75-80%) của danh sách đã

được sắp xếp này không có tính kết nối. Đây hoặc là do công cụ Wikipedia2Text không tốt hoặc vì trang văn bản thực sự không có tính kết nối. Tệp tin Wiki ở vị trí thứ 70% của danh sách đã sắp xếp sẽ được sử dụng để thiết lập các ngưỡng: Nếu danh sách 500 từđầu chiếm 65% của tất cả các từ trong tệp thứ 70% trở về trước sẽ được giữ lại, bất kỳ tệp nào ít hơn 65% sẽ bị loại bỏ.

Trong phần sau sẽ trình bày thuật toán cải tiến BTE (Body Text Extraction)

để trích rút nội dung thân văn bản của trang Web (Thuật toán 2.4) cùng với thử

nghiệm và đánh giá. Cuối cùng là kiểm tra độ lớn của các của các văn bản thu được và tính kết nối văn bản.

2.2.3.1. Phát triển thuật toán BTE

Dựa vào việc quan sát, thuật toán BTE (Body Text Extractor) [30] được Aidan Finn phát triển bằng cách sử dụng thông tin mật độ chữ văn bản và mật độ

thẻ để đánh dấu cho các phần khác nhau của trang web.Ý tưởng chính của thuật toán BTE được Aidan Finn đề xuất như sau :

Xác định hai điểm i, j sao cho số thẻ HTML (tag-tokens) dưới i và trên j là tối đa, đồng thời số dấu hiệu văn bản (text-tokens) giữa i và j là tối đa. Kết quả

trích rút chính là các dấu hiệu văn bản giữa đoạn [i, j] được tách ra.

Aidan Fin đã thử nghiệm sử dụng thuật toán BTE để trích nội dung văn bản phục vụ cho phân loại nội dung văn bản thư viện điện tử số, chủ yếu chỉ thu thập các bài báo mới thuộc lĩnh vực thể thao và chính trị trong các trang web tin tức. Thuật toán trên có ưu điểm là việc bóc tách không phụ thuộc vào ngưỡng cho trước hay phụ thuộc vào ngôn ngữ, nhưng thuật toán không phù hợp với các trang web tin tức tiếng Việt khi có chứa một số thẻ HTML nâng cao.

Bắt đầu từ việc quan sát một số trang web tin tức khác nhau cho thấy các trang web tin tức nói chung có đặc điểm chính là trong mã HTML của mỗi trang, phần thân văn bản là phần chứa ít thẻ và nhiều dấu hiệu văn bản nhất.

25

Bảng 2. 2. Tỷ lệ dấu hiệu văn bản và thẻ HTML xuất hiện trong phần thân văn bản của một số trang web tin tức Việt Nam

Trang tin tức Dấu hiệu văn bản trong phần thân văn bản của trang web/Dấu hiệu văn bản trong

toàn trang

Thẻ HTML trong phần thân văn bản của trang web/Thẻ HTML trong toàn

trang

Vietnamnet 53% 9%

Dantri 55% 10%

Vnexpress 52% 3%

Bảng 2.2 cho thấy các số liệu thống kê của 100 trang web tin tức Việt Nam có liên quan đến tỷ lệ của dấu hiệu văn bản và các thẻ xuất hiện trong phần thân văn bản của trang web. Các trang Web điển hình thường có mục tài liệu mà phần bắt

đầu và kết thúc là nhiều “boilerplate” và thẻ HTML (tags), còn phần ở giữa là phần thân của văn bản (texts) trong đó phần đánh dấu (tags) tương đối ít, đó là phần ngôn ngữ và là thân văn bản (text) cần trích rút. (adsbygoogle = window.adsbygoogle || []).push({});

Thuật toán BTE được cải tiến (thêm bước 0) để trích rút thân văn bản chính từ các trang web tin tức Việt phục vụ cho việc xây dựng kho ngữ liệu nghiên cứu từ

vựng tiếng Việt, có khối lượng khoảng 100 triệu từ.

Xây dựng thuật toán: Quan sát thực nghiệm cho thấy phần thân văn bản của trang web luôn thuộc về một thẻ cha nào đó nằm trong cặp thẻ <body>,</body> trong đó lại có những đoạn mã HTML chắc chắn không chứa phần dấu hiệu văn bản thuộc phần thân văn bản, các thẻcomment hoặc script nhúng vào và một số thẻ như

<img> <input> <select> <option>… Ngoài ra một số nội dung không liên quan đến phần thân văn bản lại nằm trong một số thẻ HTML nâng cao như

(<style>…</style>, <script>….</script>, <a>….</a>,…). Bởi vậy, đầu tiên là loại bỏ đi các đoạn mã HTML chắc chắn không chứa phần nội dung chính của trang web (Bước 0). Sau đó sẽ mã hóa nhị phân phần nội dung còn lại (thẻ HTML tương

ứng với 1, dấu hiệu văn bản tương ứng với -1), tính tổng các giá trị liền kề giống nhau lại rồi trích rút đoạn có nhiều giá trị âm (-1) nhất và ít giá trị dương (1) nhất,

độ phức tạp của thuật toán là O(n2).

26

Bước 0: Mỗi trang web tương ứng với 1 tệp định dạng HTML. Làm sạch mã HTML bằng cách loại bỏ những thẻ, những đoạn mã HTML chắc chắn không chứa thông tin liên quan đến nội dung như các thẻ <input>, <script>, <img>, <style>, <marquee>,<!--...-->, <a>… và phần nội dung HTML nằm bên ngoài cặp thẻ

<body></body> của mỗi trang web. Thư viện thẻ HTML được thu thập từ địa chỉ

trang web [120,121].

Bước 1: Đối với phần trang web còn lại, xây dựng hai mảng, binary_tokens[] và tokens[];

Binary_tokens[] gồm các phần tử 1 và -1: Binary_tokens[i]=1 tương ứng với i là một thẻ HTML, thẻ bao gồm: Thẻ mở đầu có dạng <?...>, ví dụ, <html>, <p color=red> và thẻ kết thúc có dạng </?...>, ví dụ </html>, </p>. Binary_tokens[i]=- 1 tương ứng với i là một dấu hiệu văn bản;

Tokens[] là mảng gồm các phần tử là các giá trị dấu hiệu văn bản hoặc thẻ

tương ứng với các phần tử trong binary_tokens[]. Vídụ, tại vị trí 23, binary_tokens[23]=1, tokens[23]= <td…>;

Gộp các phần tử liền nhau có giá trị giống nhau trong mảng binary_tokens[] lại làm thành một phần tử lưu vào mảng encode[], việc này giúp làm giảm rất đáng kể kích thước của binary_tokens[] vì theo như sự quan sát từ ban đầu vềđịnh dạng tệp HTML của trang web, các dấu hiệu văn bản trong phần thân văn bản đi liền nhau và rất dày đặc, bên ngoài phần thân văn bản lại chủ yếu là các thẻ HTML đi liền nhau;

Thuật toán của bước 1có độ phức tạp là O(n)

Bước 2: Xác định vị trí hai điểm i, j từ mảng binary.tokens[]vừa thu

được ở bước 1 sao cho tổng số phần tử -1 (tương ứng với từ) giữa [i,j] và số phần tử

1 (tương ứng với thẻ) ngoài [i,j] là lớn nhất. Tiến hành bóc tách dữ liệu trong đoạn [i,j] và loại bỏ các thẻ HTML.

27

2.2.3.2. Thử nghiệm và đánh giá thuật toán BTE

Thuật toán BTE cải tiến được thử nghiệm và so sánh với thuật toán gốc đề

xuất bởi Aidan Finn trên tập thử nghiệm trên cùng một số trang web. Các lần thử

nghiệm như sau:

Lần 1: Chạy BTE của Aidan. Fin trên các tệp mã HTML thu được tương ứng từ các URL.;

Lần 2: Chạy BTE cải tiến trên các tệp mã HTML thu được tương ứng từ các URL;

Bảng 2. 3. So sánh tỷ lệ “ thân văn bản cần lấy/ toàn bộ văn bản trích rút được” Loại trang web Thuật toán cải tiến Thuật toán của

Aidan.Fin

Dantri 99.02% 47.12% (adsbygoogle = window.adsbygoogle || []).push({});

VietnamNet 99.67% 65.71%

VnExpress 99.00% 48. 87%

Tỷ lệ về “thân văn bản cần lấy/ toàn bộ nội dung văn bản trích rút được” của 3 loại địa chỉ trang web được nhiều người truy cập được chỉ ra ở Bảng 2.3, trong đó mỗi loại trang được được đánh giá trên 100 tệp. Cả 2 thuật toán trên có ưu điểm là việc bóc tách không phụ thuộc vào ngưỡng cho trước, cách mã hóa ký tự nào, chỉ

cho kết quả chính xác nhất khi áp dụng cho bóc tách nội dung chính trên trang tin chi tiết của các trang tin tức, còn các trang có cấu trúc đặc biệt, các phần chứa thông tin chính dàn trải khắp trang web như các trang web bán hàng, mạng xã hội… những trang web này có tính kết nối chưa cao nên kết quả bóc tách không được tốt. Nội dung bóc tách thu được trên cùng một trang web đối với hai thuật toán cho thấy, với thuật toán BTE cải tiến cho kết quả tốt hơn, đã loại bỏ được hết các mã HTML nâng cao trong khi thuật toán cũ của Aidan Finn vẫn còn một số thẻ script nằm giữa đoạn văn bản nào đó.

28

Qua thử nghiệm cho thấy, thuật toán BTE cải tiến chỉ áp dụng chính xác khi trích rút nội dung văn bản chính của các trang tin tức, điều này là phù hợp với mục tiêu đề ra trong khi xây kho ngữ liệu nghiên cứu từ vựng tiếng Việt, đó là chỉ thu thập tựđộng các trang web có đủ độ lớn, và có tính kết nối văn bản6.

Một phần của tài liệu Luận án tiến sĩ: Xử lý tiếng việt (Trang 39 - 44)