Nhận dạng mã tiếng Việt và khối văn bản tin

Một phần của tài liệu Nghiên cứu phát triển các kỹ thuật xây dựng và khai thác thông tin web có ngữ nghĩa (Trang 66 - 74)

Nhận dạng mã tiếng Việt

Hiện nay, các trang Web ở Việt Nam dùng rất nhiều bảng mã khác nhau. Do đó, trước khi có thể rút trích thông tin trong một văn bản cần phải nhận ra bảng mã cụ thể đang được dùng cho văn bản đó. Sau đó, văn bản cũng cần được chuyển mã về một bảng mã chuẩn mà các module xử lý mặc định. Tuy nhiên, việc chuyển mã cho các trang Web tiếng Việt là không dễ dàng vì những lý do sau đây:

1. Có nhiều bảng mã tiếng Việt và không phải bảng mã nào cũng được công bố rộng rãi cho những người phát triển phần mềm.

2. Nhiều bảng mã thiết kế không tốt, một số ký tự còn trùng với các ký tự có sẵn trong bảng mã ASCII.

3. Một số trang Web sử dụng nhiều bảng mã cho các phần khác nhau của văn bản.

Chúng tôi đã phát triển một module chuyển mã tiếng Việt để nhận dạng và chuyển mã của một trang Web bất kỳ về dạng mã Unicode chuẩn. Hiện tại module này được tích hợp trong VN-KIM IE với các tính năng sau:

1. Hỗ trợ ba bảng mã tiếng Việt thông dụng nhất ở Việt Nam hiện nay là VNI, TCVN3, và TCVN6909.

2. Có khả năng nhận biết thông minh khi trang Web chứa nhiều mã tiếng Việt khác nhau, và chuyển mã xuôi và ngược.

3. Chuyển mã nhanh do các bảng mã được tích hợp vào bộ nhớ và xử lý theo cơ chế phân luồng.

Có nhiều phương pháp để chuyển mã tiếng Việt. Phần dưới đây liệt kê một vài phương pháp cùng với ưu và nhược điểm của chúng, sau đó trình bày phương pháp được lựa chọn để áp dụng. Phương pháp thứ nhất là dùng thẻ META, nơi được dùng để chỉ ra cách thức hiển thị nội dung của một trang Web. Ví dụ, <META http-equiv=Content-Type content="text/html; charset=UTF-8"> cho biết bảng mã trang Web đang sử dụng là Unicode và cách thức hiển thị các kí tự theo dạng UTF-8. Ví dụ, mã của chữ ‘ả’ theo cách hiển thị dạng UTF-8 là E1BAA3h. Muốn chuyển nó về mã Unicode, chỉ việc tìm và thay thế nó thành ‘&#7843;’.

Phương pháp này có ưu điểm là nhanh chóng, nhưng sẽ không áp dụng được trong trường hợp trang Web dùng Font cục bộ để hiển thị tiếng Việt. Thẻ META khi đó chỉ chứa thông tin về Font chủ đạo dùng trong trang Web mà thôi. Hơn nữa, một số trang Web không dùng thẻ META, và một số trang khác dùng nhiều hơn một Font tiếng Việt.

Khi đó phương pháp này không dùng được.

Phương pháp thứ hai là so trùng và thay thế cứng. Phương pháp này xem trang Web như một tập tin văn bản thường. Sau đó, sử dụng các kỹ thuật chuyển mã cho văn bản thường để chuyển mã cho trang Web. Phương pháp này áp dụng được khi trang Web chứa nhiều bảng mã. Tuy nhiên, nó không áp dụng được cho các bảng mã dùng hai Font để hiển thị, tức là cùng một ký tự trong bảng mã nhưng được hiển thị khác nhau tùy theo loại Font được quy định trong trang HTML. Ví dụ, chữ ‘Á’ trong bảng mã TCVN3 có thể là 00C1h, nhưng cũng có thể là 00B8h (chữ ‘á’) khi đi với Font .VnTimeH. Nhược điểm thứ hai là đôi khi việc chuyển mã thành công 100% nhưng trang Web lại bị hiển thị sai, do cơ chế mà trình duyệt hiển thị văn bản khác với cơ chế của phần mềm soạn thảo văn bản.

Phương pháp mà chúng tôi đề xuất là kết hợp hai phương pháp trên. Chừng nào mà trang Web chưa sử dụng Font mới thì thông tin trong thẻ META còn hiệu lực. Đối với các ký tự dùng một họ Font nào đó để hiển thị, chúng tôi lại áp dụng các kỹ thuật chuyển mã văn bản trên dãy kí tự đó. Tuy nhiên cần chú ý kiểm tra bảng mã chứa kí tự đó có hai bản Font hay không. Nếu đúng vậy thì cần xác định bản Font hiện hành và chạy giải thuật chuyển mã trên Font đó.

Module chuyển mã tiếng Việt đã được thử nghiệm trên nhiều Website báo điện tử như Vnexpress, Thanh Niên, Tuổi Trẻ, FPT, SaigonTourist. Độ chính xác của module này gần 100%, và độ đầy đủ khoảng 90% do có khoảng 10% các trang Web có dùng các bảng mã khác với VNI, TCVN3, và TCVN6909. Ngoài ra, đây là module chạy phía máy chủ nên tốc độ thực thi cũng quan trọng. Bảng 4.1.1 bên dưới cho thấy thời gian chạy của giải thuật tăng tuyến tính theo số trang Web, trên máy PC Intel 256M RAM, CPU 2,26GHz. Nếu tính trung bình một trang Web có kích thước 23KB, thì tốc độ xử lý của module này là 23×8/0.485 = 379Kbits/sec.

Bảng 4.1.1 Tốc độ thực thi của module chuyển mã tiếng Việt Số trang Web

Kiểm định

1 10 20 30 40 Thời gian chạy

(msec) 485 4.000 7.797 11.954 15.985

Nhận dạng khối văn bản tin

Một trang Web chứa và hiển thị các khối thông tin khác nhau như các hình quảng cáo, thực đơn, liên kết, và đặc biệt là các văn bản tin tức. Con người có thể nhận biết dễ dàng các khối thông tin này, nhưng máy tính thì không. Trong vấn đề rút trích thông tin trong các trang Web mà đề tài giải quyết, khối thông tin quan tâm chủ yếu là các khối văn bản mang tin tức thời sự. Vì vậy, chúng tôi nghiên cứu và phát triển một module trong VN-KIM IE, để phát hiện tự động và chuyển vị trí các khối văn bản tin tức này cho các module theo sau tham khảo và xử lý trong quá trình rút trích thông tin. Hình 4.1.1 cho thấy một trang báo điện tử với các khối văn bản tin tức được đánh dấu bằng các khung chữ nhật bao quanh. Vị trí của các đoạn văn bản này trong tập tin HTML tương ứng được trình bày ở Hình 4.1.2.

Hình 4.1.1 Một trang Web với các khối văn bản tin tức

Hình 4.1.2 Vị trí các khối văn bản tin tức trong tập tin HTML

Các cách tiếp cận vấn đề rút trích dữ liệu trên Web có thể phân thành năm loại như sau:

1. Ngôn ngữ gói (Wrapper):

Cách tiếp cận này được đặc trưng bằng các ngôn ngữ hướng người dùng để giúp xây dựng các gói dễ dàng. Trước đây, các gói chỉ có thể lập trình bởi các

chuyên gia sử dụng các ngôn ngữ phổ dụng như Java. Mặc dù đạt được độ chính xác cao, cách tiếp cận này phụ thuộc nhiều vào một dạng dữ liệu Web định trước.

Do đó, nó không tự động hoàn toàn. Một số công cụ theo cách tiếp cận này là Lapis ([72]), Web-OQL ([4]), Tsimmis ([51), Minerva ([74]).

2. Xử lý ngôn ngữ tự nhiên:

Các công cụ theo hướng tiếp cận này thường sử dụng các kỹ thuật như lọc và gán nhãn từ loại, để xây dựng các quan hệ giữa các phần tử trong câu, từ đó dẫn ra các luật rút trích. Các luật này dựa trên các ràng buộc về cú pháp và ngữ nghĩa để giúp xác định dữ liệu cần rút trích trong tài liệu. Tuy nhiên, xử lý ngôn ngữ tự nhiên còn là một vấn đề khó và phụ thuộc nhiều vào một ngôn ngữ cụ thể.

Các công cụ tiêu biểu là WHISK ([122]), RAPIER, SRV ([74]).

3. Quy nạp gói:

Đây là một cải tiến của việc dùng các ngôn ngữ gói. Thay vì mã hoá các gói, người sử dụng chỉ cung cấp các trang Web huấn luyện, và sau đó các công cụ qui nạp gói sẽ sinh ra các gói tương ứng. Tuy nhiên, do dạng của các trang Web thường thay đổi, các gói được qui nạp từ các tập huấn luyện cũ trở nên không thích hợp, và đòi hỏi nhiều thời gian và công sức để cập nhật. Các công cụ theo hướng tiếp cận này gồm Wien ([73]), SoftMealy ([74]), Stalker ([91]).

4. Mô hình hoá cấu trúc dữ liệu:

Khác với phương pháp qui nạp gói, cách tiếp cận này yêu cầu người sử dụng cung cấp một cấu trúc mục tiêu cho các đối tượng quan tâm và cố gắng định vị các phần của một trang Web tương ứng với cấu trúc này. Cách này cũng phụ thuộc vào dạng định trước của dữ liệu cần rút trích, nên không tự động hoàn toàn. NoDoSE ([1]) và DEByE ([74]) là các công cụ tiêu biểu theo hướng này.

5. Nhận dạng khung mẫu:

Cách tiếp cận này dựa trên giả thuyết là mỗi trang Web có hai phần là khung mẫu để trình bày thông tin chủ yếu và chính bản thân thông tin đó. Khung mẫu của một trang Web có thể được nhận ra bằmg cách so trùng trang Web đó với một trang khác có cùng khung mẫu, làm lộ ra nơi chứa thông tin.

RoadRunner ([31]) theo cách tiếp cận này, nhưng đòi hỏi người sử dụng cung cấp một trang Web có cùng khung mẫu với trang Web cần rút trích.

Việc khảo sát các công trình liên quan ở trên cho thấy chưa có một phương pháp nào hoàn toàn tự động rút trích tức thời các khối văn bản tin tức đang đọc. Vì vậy, chúng tôi đề xuất một phương pháp hoàn toàn tự động để thực hiện việc này cho một trang Web A qua ba bước sau:

1. Tự động tìm kiếm một nhóm các trang Web B có cùng khung mẫu với A.

2. Chuyển tất cả các trang Web sang cấu trúc cây.

3. Lần lượt so trùng cây của A với cây của mỗi trang trong nhóm trang Web B. Nếu có một cặp có cấu trúc đủ tương tự nhau, thì suy diễn ra khung mẫu chung của chúng.

Hình 4.1.3 Hai trang Web có cùng khung mẫu

Về bước thứ nhất, con người có thể dễ dàng nhận ra các trang Web có cùng khung mẫu. Hình 4.1.3 là hai trang Web như vậy. Để máy tính làm việc này, chúng tôi đề xuất một số Heuristic dựa trên các địa chỉ URL của các trang Web có dạng:

http://baseURL/d1/.../dn/filename trong đó:

1. baseURL là địa chỉ IP của Web Server hoặc tên miền nơi tài nguyên được bố trí.

2. d1, ..., dn là các thư mục trung gian.

3. filename tên tập tin của trang Web.

Giả sử địa chỉ của trang Web A cần rút trích là addrA. Để tìm một nhóm các trang Web có thể có cùng khung mẫu với A, tất cả các địa chỉ siêu liên kết trong A được xem xét.

Một địa chỉ siêu liên kết addrB của một trang Web B được giữ lại khi và chỉ khi nó thỏa mãn các điều kiện sau:

1. addrAaddrB không giống nhau.

2. addrAaddrB có cùng baseURL.

3. addrAaddrB có cùng độ sâu thư mục.

4. Độ tương tự của chuỗi các thư mục trung gian trong addrAaddrB đủ lớn.

Tính hợp lý của điều kiện thứ nhất là, nếu addrAaddrB giống nhau, thì nhiều khả năng AB là cùng một trang, và như vậy việc so trùng chúng không phát hiện ra được khung mẫu. Điều kiện thứ hai là để tăng cao khả năng AB thuộc cùng một Website.

Điều kiện thứ ba là để cho AB ở cùng một cấp trong Website chung đó, và do đó có nhiều khả năng cùng khung mẫu. Về điều kiện thứ tư, chúng tôi sử dụng giải thuật so trùng dãy trong [137], nhưng xem mỗi chuỗi kí tự biểu diễn một thư mục trung gian là một phần tử trong một dãy.

Tiếp theo để chuyển một trang Web viết bằng HTML sang một cấu trúc cây, chúng tôi sử dụng một phần mềm mã nguồn mở phân tích HTML (HTML Parser). Giải thuật so trùng cây của chúng tôi là mở rộng của giải thuật trong [137] với các lệnh rút trích các nút tin tức trong một trang Web. Độ phức tạp của giải thuật là O(N1, N2) trong đó N1 và N2 số nút tương ứng của hai cây. Các thí nghiệm của chúng tôi cho thấy thời gian xử lý là khả thi trong thực tế.

Các nút so trùng với nhau của hai trang Web xem như là khung mẫu cần tìm, còn các nút còn lại của từng trang xem như mang tin tức của trang đó. Ý tưởng ở đây là AB có cùng khung mẫu, nhưng các khối thông tin của chúng có nội dung khác nhau nên không so trùng được với nhau. Giải thuật đã được thử nghiệm trên 243 trang của 27 Website tin tức khác nhau. Bảng 4.1.2 cho thấy độ chính xác và độ đầy đủ trung bình tương ứng là 91% và 99%.

Bảng 4.1.2 Kết quả thử nghiệm giải thuật nhận dạng khối văn bản tin tức Website tin tức Precision Recall Số trang Web

BBC 97% 93% 12

CNN 77% 94% 6

New York Times 96% 99% 9

Reuters 87% 100% 10

ABC News 85% 100% 8

Sporting News 91% 100% 6

Time Online Edition 91% 100% 5

MSNBC News 85% 100% 6

Voa News 74% 100% 6

Sài Gòn News 68% 100% 12

Viet Nam News 100% 100% 8

Saigon Times 93% 100% 4

Google News 100% 100% 7

Báo Người Lao Động 87% 99% 10

VNExpress 83% 100% 12

Tuổi trẻ 100% 100% 12

VietnamNet 100% 100% 10

Sài Gòn 94% 100% 12

Nhân dân 89% 84% 9

VNMedia.vn 88% 100% 7

Báo Điện Biên Phủ 98% 100% 8

Tiền Phong 97% 100% 9

Thanh niên 93% 99% 12

Báo Hà Nội Mới 100% 100% 10

Báo Cần Thơ 98% 100% 12

Báo Bình Định 91% 100% 10

Báo Bà Rịa Vũng Tàu 95% 100% 11

Trung bình/Tổng cộng 91% 99% 243

Một phần của tài liệu Nghiên cứu phát triển các kỹ thuật xây dựng và khai thác thông tin web có ngữ nghĩa (Trang 66 - 74)

Tải bản đầy đủ (PDF)

(208 trang)