Giới thiệu
Với sựbùng nổcủa thông tin ngày nay thì yêu cầu đặt ra là làm thếnào đểtiếp cận
được với thông tin một cách hiệu quả, nhanh chóng và tiện lợi nhất. Ngày nay, với sự
tiến bộcủa công nghệ, ta có thểtiếp cận thông tin bằng rất nhiều cách khác nhau: từ
sách báo, tạp chí cho đến đài truyền hình, đài phát thanh và cảmạng Internet nữa.
Internet ngày nay không còn là khái niệm quá đỗi xa lạvà xa xỉ đối với hầu hết chúng
ta nhưchục năm vềtrước nữa. Ngược lại, nó nhưmột món ăn tinh thần gần nhưkhông
thểthiếu trong đời sống của đại bộphận cưdân. Nó đóng một vai trò là một kênh
truyền thông thông tin rất quan trọng.
Ngày xưa, ta thường hay đọc quảng cáo trên sách báo, tạp chí. Gần hơn nữa ta xem
quảng cáo trên truyền hình hoặc nghe trên sóng phát thanh. Và ngày nay, với Internet
băng thông rộng, các quảng cáo đang dần thay đổi, người ta đang có xu hướng chuyển
sang xem quảng cáo trực tuyến.
Với sựphát triển mạnh mẽcủa mình, Internet đang là một kênh thông tin đểquảng cáo
rất hiệu quả. Doanh thu từquảng cáo trực tuyến thếgiới năm 2008 khoảng 21 tỷUSD.
40% người dùng Việt Nam sửdụng Internet. Chính vì lẽ đó mà bên cạnh các kênh
quảng cáo truyền thống, các quảng cáo ngày nay đang dần chuyển một phần sang kênh
thông tin trực tuyến.
Nhưng, các quảng cáo trực tuyến tại Việt Nam hiện nay đang ở đâu? Quanh quẩn vẫn
chỉlà các quảng cáo được phân phối trên các trang web dưới dạng hình ảnh, banner.
Các quảng cáo dạng này hoàn toàn “tĩnh”, nghĩa là cho dù bạn vào trang web đó vào
lúc nào đi nữa, bạn có thích chúng hay không, thì bạn sẽluôn thấy chúng (nếu chưa bị
gỡxuống), cho dù nội dung của trang web có thay đổi ra sao đi nữa.
Quảng cáo dạng này rất không hiệu quả. Nhà quảng cáo chỉnên quảng cáo sản phẩm
của mình trên những nơi có nội dung phù hợp với sản phẩm hơn là quảng cáo một cách
đại trà. Ví dụnhưnếu muốn quảng cáo vềxe máy thì nên đăng các quảng cáo của mình
trên những trang web liên quan đến mua bán ô tô hoặc xe cộ. Điều này giúp các nhà
quảng cáo hướng đúng đến phân khúc đối tượng người dùng của mình hơn, tránh
quảng cáo tràn lan, không hiệu quả. Thật lãng phí tiền bạc nếu đăng quảng cáo xe máy
trên trang web đang nói vềkỹthuật lập trình(!). Nếu quảng cáo được đặt hợp lý thì
hiệu quảquảng cáo sẽcao hơn trong khi chi phí cũng sẽgiảm đáng kể. Bên cạnh đó,
người dùng cũng cảm thấy thích quảng cáo hơn vì chúng liên quan đến nội dung mà họ
đang tìm kiếm.
Đây chính là phương pháp quảng cáo “động” theo nội dung ngữcảnh, cũng là xu
hướng quảng cáo mới trên thếgiới.
Từnhu cầu thực tếtrên, luận văn tiến hành thực hiện xây dựng thửnghiệm một hệ
thống máy quảng cáo AdEngine cho phép phân phối “động” các quảng cáo trực tuyến
trên mạng Internet. Các trang web nhận đăng quảng cáo của AdEnginesẽcó các quảng
cáo được tự động thay đổi cho phù hợp với nội dung hiện tại.
Thực hiện đềtài này, luận văn đã mổxẻvà đưa ra hướng giải quyết cho một sốvấn đề
như: đọc và bóc tách tự động nội dung chính của trang web bất kỳ; rút trích tự động từ
khóa tiếng Việt từtài liệu cho trước, v.v
Phần tiếp theo của luận văn được trình bày theo cấu trúc sau:
Chương 1:Luận văn sẽtrình bày tổng quan các khái niệm sơlược vềquảng cáo trực
tuyến cũng nhưquảng cáo cảm ngữcảnh theo nội dung. Tiếp đến là sơnét vềhệthống
AdEngine, đồng thời xác định mục tiêu cũng nhưgiới hạn của đềtài.
Chương 2:Luận văn sẽtrình bày vềvấn đềnhiễu và cách khửnhiễu trong trang web.
Từ đó đưa ra các cách tiếp cận đểtự động xác định nội dung chínhcủa một trang web
bất kỳ.
Chương 3:Luận văn sẽtrình bày vềvấn đềrút trích từkhóa trong nội dung cho trước
với cách tiếp cận dựa vào thống kê. Hệthống sẽdựa vào kết quảnày đểlựa chọn hiển
thịcác quảng cáo có từkhóa phù hợp với nội dung.
Chương 4: Ứng dụng xây dựng thửnghiệm hệthống quảng cáo cảm ngữcảnh
AdEngine trên mạng lưới các trang web. Các mô hình hoạt động chi tiết cũng nhưkết
quả đạt được.
Chương 5:Tổng kết và hướng phát triển. Đúc kết lại những gì luận văn đã làm được
cũng như đưa ra các định hướng cần phát triển trong tương lai.
28 trang |
Chia sẻ: tuandn | Lượt xem: 2419 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Luận văn Xây dựng công cụ quảng cáo theo ngữ cảnh tiếng Việt, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
21
Phương pháp tự động xác định phần nội dung chính của một
trang web bất kỳ
1.6 Tổng quan
Để hiểu được trang Web đang nói về vấn đề gì, trước hết phải xác định được nội
dung chính của trang Web. Chú ý rằng trang web ở đây được hiểu là trang web bất kỳ,
nghĩa là cấu trúc của trang web không được biết trước. Hơn nữa, trang web phải thật sự
có nội dung chính (nghĩa là nếu chúng ta nhìn vào sẽ biết đâu là chủ đề của trang web)
thì việc xác định này mới thật sự có ý nghĩa.
Tại sao cần phải bóc tách nội dung chính?
Khối lượng thông tin lưu trữ trên Internet ngày càng tăng chóng mặt theo thời gian. Từ
đây đã làm nảy sinh các nhu cầu nghiên cứu, xử lý trên khối lượng dữ liệu thông tin
này sao cho hiệu quả và nhanh chóng nhất. Một số ứng dụng như Search Engine, RSS,
Feedback, Tóm tắt văn bản, Tìm kiếm song ngữ… rất cần rút trích được các thông tin
chính xác, gọn gẽ, có ý nghĩa từ kho dữ liệu trên.
Khó khăn của bài toán là không phải toàn bộ nội dung của trang web đều cần thiết.
Chúng hay bị “nhiễu” bởi rất nhiều các thông tin khác nhau. Nếu chỉ đơn thuần loại các
chuỗi script HTML thì nội dung lọc được sẽ rất nhiều lỗi rác không cần thiết. Ví dụ:
phần thông tin quảng cáo, tin mới cập nhật, nội dung tin ngắn, menu... những nội dung
như thế này thường cần phải bỏ qua trong quá trình bóc tách nội dung chính của trang
web. Cụ thể hơn, nội dung của các các trang web được tổ chức theo dạng dữ liệu
HTML với cấu trúc theo dạng tag, node… Những tag này chỉ có ý nghĩa với trình
duyệt để hiển thị tài liệu, văn bản theo một bố cục và trình diễn cho trước, và hoàn toàn
không có ngữ nghĩa nào đối với người duyệt web.
22
Bên cạnh đó, do tính phong phú của Internet nên nội dung trang web thường chứa
nhiều thông tin khác nhau. Bên cạnh các nội dung chính lại thường chứa thêm nhiều
nội dung bên lề, không liên quan. Ví dụ như các trang web thường chứa các thanh thực
đơn (menu) ngang hoặc dọc, các danh sách đường dẫn (link) dùng để định hướng cho
người sử dụng có thể dễ dàng truy xuất tới nội dung mà mình cần. Các quảng cáo dạng
banner, các đoạn phim Flash, các hiệu ứng âm thanh, hình ảnh, các định dạng
stylesheet (css) , mã kịch bản javascript, cũng như các đoạn văn bản (text) không liên
quan khác đã làm cho nội dung web thật sự là một kho dữ liệu khá phức tạp.
Hình 0-1: Xác định và bóc tách nội dung chính của trang web
Vấn đề: Quá nhiều nhiễu
trong trang web.
Mục tiêu: Khử nhiễu để
lọc ra nội dung chính.
23
Ngoài ra, trên cùng một trang web lại cũng có thể chứa nhiều chủ đề khác nhau. (ví dụ
như là rất khó để xác định nội dung chính của trang chủ Yahoo.com!). Do đó, bóc tách
khối nội dung chính chỉ có ý nghĩa khi trang web có chứa nội dung thật sự.
Một khó khăn nữa là nội dung HTML của các trang web có cú pháp rất “dễ dãi”. Bạn
có thể có tag mở, nhưng không có tag đóng, các mã HTML có thể bị khai báo sai cú
pháp, chồng chéo lên nhau, vẫn được trình duyệt ưu ái hiển thị bình thường mà không
bắt lỗi.
Tất cả các vấn đề trên đã làm cho nội dung web bị “nhiễu” khá nhiều, đặt ra một thách
thức không nhỏ trong việc định dạng nội dung chính của nó.
1.7 Một số nghiên cứu gần đây
Để xác định được khối nội dung chính của một trang web bất kỳ, không biết trước
cấu trúc, hiện nay đã có nhiều cách tiếp cận khác nhau:
1.7.1 Tiếp cận theo hướng loại bỏ các tag HTML
Đây là cách tiếp cận đơn giản nhất, và dĩ nhiên hiệu quả cũng thấp nhất. Sử dụng
biểu thức chính quy (regular expression) sau để loại bỏ các tag HTML:
Regular Expression = “ ]*>" ”.
Do như đã trình bày ở trên, nội dung web không chỉ là các tag HTML mà còn chứa các
nội dung rác khác. Vì thế cách này chỉ có thể áp dụng được cho các đoạn HTML nhỏ
và riêng lẻ, không thể áp dụng cho toàn bộ trang web.
24
Hình 0-2: Tách nội dung web bằng loại bỏ tag HTML
1.7.2 Tiếp cận theo hướng rút trích các Text node
Phương pháp này cũng tương tự phương pháp loại bỏ các tag HTML nhưng tiếp
cận theo hướng khác. Bằng cách thực hiện phân tích mã HTML để tạo thành cây biểu
diễn nội dung trang web Document tree (DOM)1, trong đó các node của cây đại diện
cho các thành phần khác nhau trong trang web. Khi đó, phần văn bản chính sẽ được lấy
ra bằng việc nối nội dung các node được đánh dấu với tag là “TEXT”.
Tiếp cận theo phương pháp này có thể áp dụng cho toàn bộ trang web và cho kết quả
chính xác hơn so với phương pháp loại bỏ các tag HTML. Nhưng vẫn không thể khắc
1 Document Object Model (DOM): mô hình đối tượng tài liệu, có dạng một cây cấu trúc dữ liệu, được dùng để
truy xuất các tài liệu dạng HTML và XML.
RSS Thứ bảy, 18/4/2009, 15:24 GMT+7
Email Bản In Trang nhất Xã hội Thế giới
Kinh doanh Văn hóa Thể Thao Pháp luật
Đời sống Khoa học Vi tính Ô tô Rao vặt
Cười BẠN ĐỌC VIẾT /> VnExpress -
Chứng khoán thăng hoa một cách khó hiểu -
Chung khoan thang hoa mot cach kho hieu
var PAGE_SITE=0; var
PAGE_FOLDER=139; var
PAGE_ID=1000399507; var
DOMESTIC_IP=1; setTypingMode(1);
sLoDID=sLoDID.concat('1000399507').con
cat(','); checkCookie(); ShowTopBanner();
Hiện tượng bùng nổ của thị trường chứng
khoán thời gian qua thật khó tưởng. Theo
cách nhìn nhận của cá nhân tôi thì nền kinh
25
phục nhược điểm là không thể lọc nội dung rác để lấy phần nội dung chính mà chỉ đơn
thuần là lấy toàn bộ văn bản text của trang web.
1.7.3 Tiếp cận theo hướng so sánh khung mẫu
Phương pháp rút trích thông tin bằng cách so trùng hai trang web được xây
dựng trên nền tảng nhận dạng mẫu được tác giả Trang Nhật Quang thực hiện trong việc
rút trích nội dung nhằm cung cấp tin tức trên trang web hành chính. Phương pháp này
cho phép so khớp trang web cần rút trích với một trang web mẫu để xác định khung
trình bày chung cho cả hai trang web cần rút trích, từ đó đi đến rút trích ra nội dung
nằm trong phần được xác định chứa nội dung chính trên trang mẫu.
(a) (b) (c)
Hình 0-3: Mô hình bóc tách nội dung chính bằng so sánh khung mẫu
(a) Trang web cần rút nội dung chính
(b) Trang web khung mẫu (được xác định trước)
(c) Nội dung chính sau khi so khớp và rút được
Phương pháp này không đòi hỏi người sử dụng phải biết về ngôn ngữ xây dựng
hoặc phải chỉ ra khu vực nội dung cần bóc tách khi cách trình bày thay đổi do trang
26
web mẫu có thể lấy trực tiếp từ trang chủ và có cùng cách trình bày với trang cần
rút trích. Tuy nhiên, đối với mỗi tên miền khác nhau, cần phải xác định được một
trang web làm mẫu cho những trang khác. Đây cũng là một hạn chế trong quá trình
tự động hóa xác định nội dung chính của web.
1.7.4 Tiếp cận theo hướng phân tích mã HTML và xử lý ngôn ngữ tự nhiên
Giải pháp thực hiện này được tác giả Ngô Quốc Hưng phát triển trong luận án
“Tìm kiếm tự động văn bản song ngữ Anh-Việt từ Internet” [21]. Hướng tiếp cận này
dựa trên phương pháp bóc tách nội dung nhờ vào phân tích mã HTML theo các bộ mã
nguồn HTMLParser của dự án Majestic-12 để tạo thành cây DOM biểu diễn nội dung
trang web. Từ đó áp dụng các công cụ và kỹ thuật ngôn ngữ để quyết định phần nội
dung chính.
Phương pháp này dựa trên tiền đề là trang web đã được phân tích các tag HTML để
xây dựng nên cây Document Tree. Từ cây này chúng ta đi xác định node nào ở trên cây
chứa nội dung chính của trang WEB. Phương pháp cho điểm các node dựa vào kết quả
xử lý ngôn ngữ tự nhiên trên nội dung mà nó chứa bên trong đó.
Một số quy tắc cho điểm được áp dụng:
+ Chỉ cho điểm cho những NODE có tag là TEXT. Vì chỉ có những node này mới là
node chứa nội dung thực sự. Các node khác tổng hợp từ node này.
+ Cho điểm NODE TEXT dựa vào số câu của nội dung chứa bên trong node đó.
Càng nhiều câu thì node có điểm càng cao.
+ Node được cho điểm phải chứa tối thiểu một đoạn văn. (Tuy nhiên việc xác định
như thế nào là một đoạn văn vẫn chỉ là một heuristic)
+ Điểm của các node cha sẽ bằng điểm của các node con cộng lại.
27
Hình 0-4: Node chứa nội dung chính trên cây văn bản
Xác định node nội dung: Để xác định node nội dung chính mà không chứa các nội
dung không cần thiết chính là đi xác định node sâu nhất trên cây có điểm cao nhất.
Bằng việc xác định node nội dung như vậy, hệ thống có thể tự động xác định nội dung
trang web mà không cần biết trước khung mẫu cũng như nguồn gốc của trang web đó.
Hướng tiếp cận này cho kết quả rất khả quan, tuy nhiên cách này có thể bị bỏ sót nội
dung nếu nội dung chính được nằm phân tán trên các node độc lập khác nhau trong cây
Document Tree.
28
1.7.5 Tiếp cận theo hướng phân đoạn trang web
Hướng tiếp cận này tiến hành phân đoạn trang web thành các khối (block) riêng
biệt theo cách tiếp cận trực quan (vision-based approach), nghĩa là mắt người cảm nhận
thấy ra sao thì sẽ phân đoạn như vậy. Bằng cách sử dụng giải thuật VIPS (Vision-
based Page Segmentation) [5] được phát triển bởi phòng thí nghiệm của Microsoft. Ý
tưởng chính là dựa trên độ liền mạch của các node trong cấu trúc cây DOM với một số
nhận xét heuristic để thực hiện phân đoạn tự động trang web theo khu vực một cách
trực quan.
Hình 0-5: Thuật toán VIPS, phân đoạn trang web dựa trên cấu trúc cây DOM
Thuật toán VIPS sơ lược gồm 3 bước chính:
o Bước 1: Tách các khối chính (Block Extraction)
+ Tiến hành phân tách các node của cây DOM ra thành các khối lớn bằng
cách: lần lượt chia tách các node chứa đựng (container node - là node có khả
năng chứa các node khác, ví dụ như node có tag là , ,…) cho đến
khi không còn các container node nào. Từ đó xây dựng được cây chỉ bao
gồm các container node trên, gọi là cây Visual Block 1 (VB1), biểu diễn các
khối chính của trang web.
29
+ Từ cây VB1 này, ta tiến hành xem xét xem các node nào trong cây nên
bị chia tách tiếp hay không bằng một số luật Heuristic như sau:
Dựa vào tag: những tag ví dụ như , … thường dùng để chia
tách các chủ đề khác nhau, do đó nếu node là những tag này thì
tiến hành chia tách tiếp.
Dựa vào màu sắc (color): giả sử như nếu màu nền của node cha
khác với một trong các node con của nó thì tiến hành chia tách
tiếp vì nếu màu sắc khác nhau thì thường thể hiện nội dung của
các chủ đề khác nhau.
Dựa vào văn bản (text): nếu node là text node thì không chia tách
tiếp.
Dựa vào kích thước (size): Nếu độ sai biệt về kích thước của node
cha và các node con lớn hơn một ngưỡng cho trước thì tiến hành
chia tách node đó tiếp.
+ Tới đây, ta thu được cây mới, tạm gọi là cây VB2.
o Bước 2: Xác định các đường phân cách (Seperator Detection)
+ Các block trong cây VB2 được đưa vào một pool để xác định ranh giới
phân tách (seperator). Các đường phân tách được định nghĩa như đường
ngang hoặc dọc trong trang web mà không chứa block nào trong pool.
+ Từ đó xác định tiếp trọng số của các seperator. Các trọng số này sẽ
được xác định dựa vào các tiêu chí Heuristic sau:
Khoảng cách: trọng số sẽ càng cao nếu khoảng cách, khoảng trống
xung quanh Seperator càng nhiều.
30
Tag: Nếu Seperator nằm cùng vị trí với các tag dạng phân cách (ví dụ
như …) thì trọng số sẽ càng cao.
Font: Nếu font chữ, kích thước chữ (font,size) của các khối xung
quanh Seperator càng khác nhau thì trọng số Seperator đó sẽ càng
cao.
Color: Nếu màu nền (background color) xung quanh Seperator càng
khác nhau thì trọng số của Seperator càng cao.
+ Từ đây, ta xác định được các Seperator trên trang web cùng với trọng
số của chúng.
o Bước 3: Tổng hợp cấu trúc nội dung (Content Structure Construction)
+ Khi các Seperator đã được xác định, ta tiến hành bỏ đi các Seperator có
trọng lượng thấp bằng cách gom (merge) các block nằm hai phía của
Seperator này lại với nhau.
+ Quá trình gom block này sẽ được thực hiện cho đến khi gặp được
Seperator có trọng lượng lớn nhất. Tiếp tục xác định độ đo liền mạch
(DoC) của block vừa gom được.
+ Sau đó mỗi block sẽ được kiểm tra xem độ đo DoC của nó có lớn hơn
ngưỡng cho trước hay không? Nếu thõa yêu cầu ngưỡng thì dừng, nếu
chưa thì tiếp tục quay lại Bước 1 để tiếp tục tách block.
Sau khi chạy thuật giải VIPS, trang Web sẽ được phân đoạn thành các khối riêng biệt.
Ta tiếp tục tiến hành xác định khối nào là khối chứa nội dung chính của trang Web
bằng cách xét độ quan trọng từng khối trong trang Web [6].
31
Hình 0-6: Ước lượng độ quan trọng của từng khối phân đoạn
Độ quan trọng của mỗi khối có thể được xác định bằng cách sử dụng một số độ đo
heuristic để xác định dựa vào các đặc trưng của khối: như tần suất xuất hiện các liên
kết (link) trong khối, chiều dài của đoạn văn bản trong khối, màu nền, màu chữ của các
đoạn văn bản, kích thước của khối. Bên cạnh đó, có thể tiếp cận xây dựng một mô hình
học có giám sát bằng mạng Neuron với đầu vào là các đặc trưng trên để xác định khối
nội dung chính [6].
Đây là cách tiếp cận mạnh và hiệu quả nhất, tuy nhiên rất phức tạp và khó khăn trong
cài đặt trên thực tế nếu đầu vào chỉ là những mã văn bản HTML mà không có sự hỗ trợ
đặc biệt của trình duyệt.
32
1.8 Mô hình đề xuất của luận văn
Luận văn sẽ tiếp cận vấn đề này theo hướng phân đoạn trang web bằng mô hình lược
đồ (histogram).
Hướng tiếp cận này sẽ dựa trên phân tích cấu trúc cây Document Tree (DOM) của
trang web. Sử dụng bộ mã nguồn HTMLParser của dự án mã nguồn mở
HtmlAgilityPack [22] để tạo thành cây Document Tree. Sau khi phân tích được cấu
trúc cây DOM của trang web, dựa trên cấu trúc này chúng ta sẽ thực hiện biểu diễn lại
nội dung trang web như là một lược đồ histogram bằng cách rút trích ra các Content
node. Tiếp đến, chúng ta tiến hành mịn hóa Histogram để loại bỏ các Content node có
độ quan trọng thấp và chống bỏ sót các Content node có độ quan trọng cao. Sau cùng,
dựa vào nhận xét heuristic rằng “vùng nội dung chính của trang web sẽ là vùng tập
trung mật độ văn bản cao nhất”, chúng ta tiến hành gom nhóm trên histogram này để
lọc ra được nhóm có giá trị mật độ ngưỡng cao nhất. Đây được xem là nội dung chính
của trang web.
Hình 0-7: Mô hình bóc tách nội dung chính trang web
Biểu diễn bằng lược đồ:
+ Rút trích cây DOM
+ Tính trọng số của Text node
Tiền xử lý:
+ Lọc trung bình
+ Khử bớt nhiễu
Phân đoạn trang web:
+ Gom cụm bằng K-means
+ Xác định trọng số cụm
Html
Nội dung chính
33
1.8.1 Biểu diễn nội dung web dưới dạng lược đồ Histogram
Trang web của chúng ta, dưới dạng mã HTML, thực chất được các trình duyệt
hiểu như là một cấu trúc dạng cây, bao gồm các node cha và con có quan hệ với nhau
theo một trình bày nhất định nào đó, được gọi là cây DOM (Document Object Model).
Sau khi phân tích được các tag HTML trong trang web để xây dựng nên cây DOM,
chúng ta tiến hành duyệt cây DOM để thực hiện các xử lý cần thiết. Đầu tiên, tiến hành
xóa bỏ các node không liên quan, không thể nhìn thấy bởi người dùng trên trình duyệt
như các node có tag là script, style, remark,.v.v… Sau đó bóc tách ra các node là Text
node, vì chỉ có những node này mới là node chứa nội dung văn bản thật sự. Sau đó tổ
chức lại các node này dưới dạng mảng các Text node, cùng với tỷ trọng (weight) của
chúng. Tỷ trọng của node ở đây được hiểu như là độ đo sự quan trọng của node đó
trong trang web, và trong khuôn khổ luận văn này nó được hiểu heuristic như là kích
thước của node đó, cụ thể là số ký tự của node đó. Chúng ta có thể tùy ngữ cảnh mà cải
thiện độ chính xác của giải thuật bằng cách mô tả chính xác hơn độ đo này bằng cách
kết hợp thêm các yếu tố khác, ví dụ như là vị trí của node, định dạng của node, độ liền
mạch với các node xung quanh,… Độ đo này càng được thể hiện rõ thì độ chính xác
của giải thuật càng cao.
34
Các bước thực hiện được mô tả như trong giải thuật sau:
Bảng 0-1: Giải thuật biểu diễn nội dung web dưới dạng lược đồ histogram
Để làm rõ hơn giải thuật trên, ta cần hiểu thêm một số định nghĩa về các loại node
trong cây DOM. Trong khuôn khổ luận văn này, chúng ta chia các node nầy thành 4
loại chính: InvisibleNode, InlineNode, TextNode, VirtualTextNode.
+ InvisibleNode:
Chính là các node không thể nhìn thấy được bởi người dùng, nó chỉ được hiểu bởi
trình duyệt để tô vẽ thêm cho trang web (ví dụ các node có tag là ,
, ,…). Nó cũng có thể là các node mà chúng ta không cần
Input
DOM Å mã nguồn HTML
Begin
Xóa bỏ các InvisibleNode.
Với mỗi node trong cây DOM:
Nếu (node là VirtualTextNode) thì:
TEXTNodeArray[i] Å Weight (node)
Nếu không thì
TEXTNodeArray[i] Å 0
Return TEXTNodeArray
End
35
quan tâm nhiều khi tiến hành bóc tách nội dung (như các node có nội dung rỗng,
các node xuống hàng, line break…).
+ InlineNode:
Là node không gây ảnh hưởng gì nhiều đến nội dung của văn bản. Chúng chỉ ảnh
hưởng đến định dạng của các chuỗi văn bản mà không gây ra sự xuống hàng hoặc
khoảng phân cách nào đáng kể (Ví dụ như các node có tag là , , ,
, , , , …).
+ TextNode:
Là node có tag là TEXT, chỉ đơn giản chứa văn bản thuần túy, không chứa mã
hoặc tag HTML (Ví dụ như “tôi đi học ở KHTN”là một text node).
+ VirtualTextNode:
Là dạng mở rộng của TextNode, nhưng nội dung node có thể chứa các InlineNode.
VirtualTextNode được định nghĩa một cách đệ quy như sau:
Việc xác định một node là VirtualTextNode rất quan trọng vì nếu xác định không
đúng sẽ làm mất mát các node có nội dung ngắn, làm ảnh hưởng đến sự liền mạch
của kết quả bóc tách được.
Một node được gọi là VirtualTextNode nếu:
- Nếu node có các node con đều là InlineNode hoặc TextNode thì là
VirtualTextNode
- Nếu node có các node con đều là InlineNode hoặc TextNode hoặc
VirtualTextNode thì là VirtualTextNode.
36
Ghi chú: Do có cùng ý nghĩa nên để ngắn gọn, từ đây chúng ta sẽ gọi chung
VirtualTextNode và TextNode là ContentNode.
Hình 0-8: Minh họa một trích đoạn nội dung web và cây DOM của nó với các loại
node khác nhau
Từ giải thuật này, chúng ta sẽ xây dựng được một mảng các ContentNode chứa nội
dung văn bản từ trang web. Từ mảng này, ta sẽ biểu diễn được lược đồ histogram theo
tỷ trọng của node.
Virtual
Text Node
Invisible
Node
Text Node
37
Lấy ví dụ với một trang web tin tức của vnexpress.net đăng ngày 18/8/2009 tại
Trang web này tương tự như
vô vàn các trang tin khác trên Internet: có tựa đề, banner, hình ảnh, menu, và quảng cáo
chiếm hầu hết khoảng trống, còn nội dung chính của nó thì chỉ được giới hạn ngay ở
phần giữa của trang. Ở phía cuối trang cũng có các quảng cáo, các liên kết, các nội
dung thông tin bản quyền và các thông tin dùng để quản trị khác…
Hình 0-9: Trang web vnexpress.net dùng để minh họa việc xác định nội dung chính
Khi chúng ta tiến hành phân tích trang web này bằng thuật toán trên, ta sẽ xây dựng
được mảng các content node, và thu được lược đồ histogram sau:
38
VnExpress.net Histogram
0
50
100
150
200
250
300
350
400
450
500
1 23 45 67 89 111 133 155 177 199 221 243 265 287 309 331 353 375 397 419
Node's Number
N
od
e'
s
W
ei
gh
t
Hình 0-10: Lược đồ của trang web
song/2009/07/3BA119E9/
Ở lược đồ histogram trên: Trục X chính là thứ tự của các node trong mảng (cũng chính
là thứ tự của node trên cây DOM). Còn trục Y chính là tỷ trọng của node đó (cụ thể ở
đây là chiều dài của node).
Phân tích kỹ lược đồ trên, chúng ta nhận thấy rằng vùng có chứa tỷ trọng cao chính là
vùng chứa nội dung chính của trang web (vùng chứa các node nằm từ vị trí thứ 23 đến
67 trong hình 2-10 tương ứng với phần nội dung chính trong trang web ở hình 2-9, là
phần văn bản chính ở bên trái). Thử nghiệm trên một số trang web khác, ta cũng có
nhận xét tương tự như vậy.
Vì thế, dựa trên ý tưởng này, ta sẽ tiến hành bóc tách nội dung chính của trang web
bằng cách trích xuất nội dung của các node từ 23 đến 67, là vùng tập trung mật độ cao
nhất (xem hình 2-10). Tự mình kiểm chứng lại, ta thấy đó thật sự đúng là nội dung
chính cần bóc tách của trang web này (các vùng quảng cáo, các menu, các liên kết
banner,… đã bị loại bỏ).
39
Do đó, dựa vào đặc điểm này, ta sẽ thực hiện xác định nội dung chính c