Khởi tạo và huấn luyện

Một phần của tài liệu WEB MINING với giải thuật SOM và ứng dụng cho máy tìm kiếm VINAHOO (Trang 41)

Có hai thuật toán khởi tạo (ngẫu nhiên và tuần tự), hai thuật toán huấn luyện (liên tục và nhóm) trong Toolbox. Mặc định Toolbox sử dụng thuật toán khởi tạo tuần tự và thuật toán huấn luyện theo nhóm. Cách đơn giản nhất để khởi tạo và huấn luyện một SOM chính là sử dụng hàm som_makẹ

sM= som_make(sD)

Quá trình huấn luyện bao gồm hai pha: huấn luyện thô với khoảng cách giữa các láng giềng lớn và tỷ lệ học (learning rate) lớn. Nếu có những yêu cầu

Formatted: Dutch (Netherlands)

khắt khe hơn đối với những tham số huấn luyện, một quá trình khởi tạo tƣơng ứng và các hàm huấn luyện chẳng hạn nhƣ som_batchtrain sẽ đƣợc sử dụng. 2.4.5 Biểu diễn và phân tích

Có rất nhiều phƣơng pháp để biểu diễn, trực quan hoá SOM. Trong Toolbox, cách đơn giản nhất là sử dụng hàm som_show. Nó có thể sử dụng để tạo ra ma trận U và các mức thành phần của SOM.

som_show(sM);

Ma trận U biểu diễn khoảng cách giữa các đơn vị láng giềng trên bản đồ, do đó nó chỉ ra cấu trúc các cụm trên bản đồ: các giá trị lớn trên bản đồ chỉ ra các vị trí biên của các cụm, tập hợp các giá trị nhỏ tƣơng ứng tạo thành các cụm. Mỗi một mức thành phần chỉ ra các giá trị của một biến trong từng đơn vị trên bản đồ. Ở tầng trên cùng của qua trình trực quan hoá này là các thông tin bổ trọ nhƣ nhãn, quỹ đạo, độ xám.

Với hàm som_vis, chúng ta có thể biểu diễn trực quan hoá tốt hơn. Hàm xây dựng dựa trên ý tƣởng rằng, việc trực quan hoá một tập dữ liệu cũng đơn giản nhƣ một tập các đối tƣợng mà mỗi đối tƣợng có duy nhất một vị trí, màu sắc và hình dạng. Thêm vào đó, mối liên quan giữa các đối tƣợng, chẳng hạn các láng giềng cạnh nhau ccó thể sử dụng các đƣờng kẻ để thể hiện. Với som_vis, ngƣời dùng có thể tạo ra các giá trị tuỳ ý cho mối thuộc tính. Ví dụ: x,y,z là 3 thuộc tính ứng với toạ độ, kích cỡ đối tƣợng và màu sắc là 5 biến có thể đồng thời đƣợc biểu diễn nhờ các lựa chọn nhƣ sau:

- Vị trí của đối tƣợng có thể là 2 hoặc 3 chiềụ

- Màu sắc của đối tƣợng có thể lựa chọn trực tiếp trong bảng màụ - Hình dạng của đối tƣợng có thể biểu diễn nhờ bất kỳ ký hiệu nào trong Matlab chẳng hạn ('.', ',','+'…)

- Đƣờng biên phân cách các đối tƣợng có thể có màu sắc và độ rộng khác nhaụ

- Hiển thị các nhãn.

Để phân tích đánh giá định lƣợng về SOM, hiện nay chỉ có một số ít công cụ. Hàm som_quality cung cấp 2 đánh giá trên hai phƣơng diện: trung bình lỗi

Formatted: Dutch (Netherlands)

lƣợng tử hoá và lỗi hình thái trên bản đồ. Hiện có rất nhiều nghiên cứu trong lĩnh vực này và chắc chắn rằng không lâu nữa sẽ có nhiều công cụ phân tích hơn đƣợc bổ sung vào Toolbox.

Formatted: Dutch (Netherlands)

Chương 3. Ứng dụng phương pháp WEBSOM trong bài toán phân cụm trang Web

3.1 Thử nghiệm thi hành WEBSOM phân cụm trang Web

Trong chƣơng 2, chúng ta đã tìm hiểu mô hình kiến trúc và nguyên lý thực thi của phƣơng pháp WEBSOM trong phân cụm trang Web. Tiếp theo đây, chúng ta sẽ thực hiện việc mô phỏng hoạt động của WEBSOM trên một tập dữ liệu thực sự, chính là một bảng dữ liệu về nội dung các trang Web thu thập từ nguồn Website http://www.vnexpress.net, lƣu trữ trong cơ sở dữ liệu của máy tìm kiếm Vinahoọ Trƣớc hết, chúng ta sẽ tìm hiểu cách thức Vinahoo lƣu trữ dữ liệu trang Web mà nó thu thập đƣợc nhƣ thế nàọ

3.1.1 Cấu trúc cơ sở dữ liệu trong máy tìm kiếm Vinahoo

Nhiệm vụ cơ bản của các máy tìm kiếm là tải nội dung các trang Web trên Internet sau đó lƣu vào các cơ sở dữ liệu cục bộ để phục vụ các truy vấn của ngƣời dùng. Do đó cách thức biểu diễn trang web cũng nhƣ cách tổ chức lƣu trữ dữ liệu đóng vai trò rất quan trọng trong việc quyết định chất lƣợng của một máy tìm kiếm.

Vinahoo lƣu trữ các thông tin về các trang web sử dụng phƣơng pháp lƣu trữ pha trộn giữa các bảng cơ sở dữ liệu MySQL và các file nhị phân. Mục đích của việc lƣu thông tin trong các file nhị phân là giúp giảm bớt gánh nặng về kích thƣớc cho cơ sở dữ liệu MySQL (ví dụ mỗi bảng trong cơ sở dữ liệu MySQL chỉ có kích thƣớc lớn nhất là 4GB) đồng thời nó cũng giúp nâng cao tốc độ tìm kiếm các trang web [10]. Nội dung lƣu trong các file nhị phân đƣợc sử dụng chủ yếu cho quá trình tìm kiếm, các file này đƣợc lƣu trong thƣ mục

/usr/local/aspseek/var/aspseek12/.

3.1.2 Cấu trúc một số bảng chính trong cơ sở dữ liệu MySQL của Vinahoo Vinahoo

Vinahoo sử dụng các bảng trong cơ sở dữ liệu MySQL để lƣu trữ các thông tin về các URL, site, từ khóa cùng nội dung chỉ số xuôi của các trang web đƣợc

Formatted: Dutch (Netherlands) Formatted: Dutch (Netherlands)

Formatted: Dutch (Netherlands)

tải (nội dung từ url sang từ khóa). Các bảng dữ liệu này cũng đƣợc sử dụng để xác định xem một địa chỉ URL đã tồn tại trong cơ sở dữ liệu hay chƣa để tránh index lặp lại các trang web.

Bảng urlword: bảng này chứa thông tin tổng quan về tất cả các URL đã hoặc chƣa đƣợc đánh chỉ số bởi máy tìm kiếm Vinahoo, thỏa mãn điều kiện index do ngƣời dùng chỉ định. Các thông tin chi tiết hơn sẽ đƣợc lƣu trữ trong các bảng urlwordsNN.

Tên trường Miêu tả

url_id Số định danh của URL site_id Số định danh của site

deleted =1 nếu máy chủ trả về lỗi 404 hay do file “robots.txt” không cho phép đánh chỉ số trang Web này

url Nội dung của chính URL

next_index_time Thời điểm tiếp theo cần index, tính theo giây

status Trạng thái HTTP trả về bởi máy chủ hoặc 0 nếu trang này chƣa đƣợc đánh chỉ số

crc chuỗi đại diện MD5 của tài liệu

last_modified Thời gian thay đổi nội dung gần đây nhất, đƣợc trả về từ server.

etag tiêu đề “Etag” đƣợc trả về bởi máy chủ last_index_time thời điểm tiến hành đánh chỉ số cuối cùng

referre Số định danh của URL tham chiếu đầu tiên đến trang Web này

hops độ sâu của URL trong cây siêu liên kết

redir =URLID mới nếu trang Web này bị chuyển hƣớng nếu không sẽ bằng 0

origin =URLID của trang Web ban đầu nếu trang Web này là một bản sao, nếu không có giá trị bằng 0.

Formatted: Dutch (Netherlands)

Bảng UrlwordNN (NN là các số từ 00 – 15): Các bảng này chứa các thông tin chi tiết về nội dung các Url đã đƣợc đánh chỉ số trong cơ sở dữ liệu (có mặt trong bảng urlword phía trên). Việc một url đƣợc ghi vào bảng nào trong 16 bảng này phụ thuộc vào giá trị url_id mod 16. Sở dĩ nội dung các url đƣợc trên nhiều bảng nhƣ vậy là để tránh quá tải cho các bảng cơ sở dữ liệu khi số lƣợng các trang web đƣợc tải là rất lớn.

Tên trường Miêu tả

url_id Số định danh của URL

Deleted Đƣợc đặt bằng 1 nếu máy chủ trả về lỗi, hoặc do file “robots.txt” không cho phép đánh chỉ số trang Web nàỵ

wordcount Số lƣợng các từ khác nhau trong nội dung đã đƣợc index của trang totalcount Tổng tất cả các từ trong nội dung đã đƣợc đánh chỉ số của trang Content-type Tiêu đề “Content-Type” đƣợc trả về bởi máy chủ

Charset Bộ chữ cái đƣợc sử dụng trong nội dung tài liệu, thông tin này đƣợc lấy từ thẻ META

Title 128 ký tự đầu tiên trong tiêu đề của trang Web

Txt 255 ký tự đầu tiên, không tính các thẻ HTML, trong nội dung của trang Web.

Docsize Kích thƣớc của trang Web.

keywords 255 ký tự đầu tiên từ các từ khóa của trang Web. description 100 ký tự đầu tiên trong phần mô tả trang Web Words Nội dung đã đƣợc nén của các URL

Hrefs Danh sách đã sắp xếp các URL liên kết ra (outgoing) từ trang này

Bảng wordurl: chứa thông tin về mỗi từ khóa (không phải từ dừng) xuất hiện trong các trang Web đã đƣợc index. Giá trị trƣờng urls của bảng này (chứa các địa chỉ url mà từ này có xuất hiện) sẽ đƣợc lƣu trong các file nhị phân xxw nếu kích thƣớc của nó lớn hơn 1000 bytẹ Điều này sẽ giúp giảm tải cho các bảng trong cơ sở dữ liệu SQL đồng thời tăng tốc độ quá trình tìm kiếm.

Formatted: Dutch (Netherlands)

word bản thân các từ khóa, không phải từ dừng Word_id Số định danh của từ( khóa chính)

urls Thông tin về các site và các url mà từ khóa này xuất hiện.Trƣờng này sẽ rỗng nếu nhƣ kích thƣớc của nó lớn hơn 1000 byte, trong trƣờng hợp này thông tin sẽ đƣợc lƣu trữ trong các file nhị phân xxw urlcount Số lƣợng các url có chứa từ khóa này

totalcount Tổng số lần xuất hiện của từ khóa này trong tất cả các tài liệụ

Bảng wordurl1: chứa thông tin các từ khóa trong cơ sở dữ liệu thời gian thực, cấu trúc giống hệt bảng wordurl ở trên nhƣng giá trị trƣờng urls luôn khác rỗng, thông tin luôn đƣợc lƣu trong bảng bất kể kích thƣớc.

Tên trường Miêu tả

word Nội dung các từ khóa (không phải từ dừng) word_id Số định danh của từ ( khóa chính)

urls Thông tin về các site và các url mà từ khóa này xuất hiện.Trƣờng này luôn luôn khác rỗng, bất kể kích thƣớc của nó.

urlcount Số lƣợng các url có chứa từ khóa này

totalcount Tổng số lần xuất hiện của từ này trong tất cả các tài liệu đã index.

Bảng Stat: chứa thông tin thống kê về các câu truy vấn của ngƣời dùng. Tên trƣờng Miêu tả

ađr Địa chỉ IP của máy tính có câu truy vấn tới máy tìm kiếm Vinahoo proxy Địa chỉ IP của máy chủ proxy

query Nội dung câu truy vấn

ul Giới hạn về URL đƣợc sử dụng để áp đặt lên câu truy vấn sp Không gian Web đƣợc áp đặt lên câu truy vấn

site SiteID dùng để hạn chế không gian tìm kiếm sites Số lƣợng các site tìm thấy thỏa mãn câu truy vấn

urls Số lƣợng các Url tìm thấy thỏa mãn câu truy vấn referer URLID của các trang Web có các yêu cầu truy vấn

Formatted: Dutch (Netherlands)

3.1.3 Cấu trúc một số file nhị phân trong cơ sở dữ liệu của Vinahoo Vinahoo sử dụng các file nhị phân để lƣu: nội dung index ngƣợc của các url phục vụ cho quá trình tìm kiếm url theo từ khóa (thƣ mục xxw), cùng nội dung liên kết giữa các trang web để phục vụ cho quá trình tính hạng các trang web (thƣ mục citation). Lý do để sử dụng các file nhị phân là để giảm bớt gánh nặng cho hệ quản trị cơ sở dữ liệu do nội dung các thông tin này là rất lớn (lên tới hàng GB), đồng thời vẫn đảm bảo đƣợc tốc độ tìm kiếm. Các file nhị phân đƣợc lƣu trong thƣ mục /usr/local/aspseek/var/aspseek12/. Các thành phần trong thƣ mục này gồm:

-100 thƣ mục 00w -> 99w: các thƣ mục chứa nội dung đã đƣợc index ngƣợc của các trang web, phục vụ cho việc ánh xạ từ các từ khóa sang các địa chỉ URL.

-Thƣ mục citations: chứa các file nhị phân phục vụ cho quá trình tính hạng (ranking) của các trang web.

-Thƣ mục deltas: chứa các file nhị phân trung gian trong quá trình index, sau khi quá trình index kết thúc nội dung các file này sẽ bị xóa bỏ.

Ở đây tôi xin trình bày cấu trúc của các file trong các thƣ mục xxw và thƣ mục delta, do tôi sẽ thực hiện đọc dữ liệu từ các file nhị phân này để xây dựng tập dữ liệu dƣới dạng mã ASCII, là đầu vào cho thử nghiệm của tôị

3.1.3.1Cấu trúc các file nhị phân trong thư mục xxw:

Các file nhị phân trong thƣ mục xxw (xx: 00-99) có nhiệm vụ lƣu nội dung index ngƣợc của các trang web đã đƣợc đánh chỉ số. Nội dung các file này chính là giá trị của trƣờng urls trong bảng wordurl trong trƣờng hợp kích thƣớc của trƣờng lớn hơn 1000 bytes. Mục đích của nó là phục vụ cho quá trình tìm kiếm các trang web theo từ khóa của ngƣời dùng. Các file này đƣợc cấu trúc theo cách thức có thể dễ dàng tìm ra các url_id có chứa từ khóa word_id, đồng thời ta cũng có thể dễ dàng tìm đƣợc số lƣợng cùng vị trí xuất hiện của các word_id đó trong từng url_id.

Formatted: Dutch (Netherlands)

3.1.3.2Cấu trúc các file nhị phân trong thư mục Deltas.

Thƣ mục deltas chứa các file nhị phân là kết quả trung gian trong quá trình index. Sau khi module crawler tải các trang web về, nội dung của chúng ngoài việc đƣợc lƣu trong các bảng trong cơ sở dữ liệu MySQL còn đƣợc lƣu tạm trong các file nhị phân này nhằm phục vụ cho quá trình index ngƣợc sau nàỵ Sau khi quá trình index kết thúc, nội dung trong các file này bị xóa bỏ. Các file trong thƣ mục này gồm:

- 100 file delta d00-d99 chứa nội dung các từ khóa xuất hiện trong các url đƣợc tải trong quá trình crawler cùng vị trí xuất hiện của chúng.

- File h (href) chứa các url outgoing từ các url đã đƣợc index trong lần index hiện tại

- File r (redirect) chứa các url mà có chuyển hƣớng tới các url khác - File lm (lastmodify) chứa thời gian đƣợc sửa đổi gần đây nhất của các url.

Ta chỉ quan tâm tới các file delta, là những file chứa thông tin cần thiết. Các file này đƣợc tạo ra trong quá trình crawler để chứa các từ cùng vị trí xuất hiện của chúng trong các url đƣợc index. Việc lƣu các từ khóa vào các file delta nào phụ thuộc vào giá trị word_id mod 100 để tiện cho quá trình index ngƣợc sau nàỵ Nhƣ vậy nội dung của một url có thể cùng đƣợc ghi vào các file delta khác nhaụ

Bảng 3.1: Cấu trúc các file nhị phân delta d00 – d99.

Offset Độ rộng Mô tả

0 4 SiteID của site có url mà từ khóa xuất hiện 4 4 UrlID của url mà từ khóa xuất hiện

8 2 Số lƣợng các từ khác nhau có mặt trong url đó 10 4 WordId của từ khóa đầu tiên

14 2 Số lần xuất hiện của từ khóa đó trong url 16 2 Vị trí đầu tiên mà từ xuất hiện trong url

Formatted: Dutch (Netherlands)

16+(n-

1)*2 2

Vị trí xuất hiện thứ n của từ trong url, n là số lần xuất hiện của từ trong url

Lặp lại với các từ khác trong url, bắt đầu bằng wordID Lặp lại với các url khác, bắt đầu bằng siteID

Với cấu trúc file nhƣ trên, chúng ta có thể thành lập các véctơ biểu diễn trang Web (ứng với các UrlID) trong đó các thành phần của véctơ là các WordID của từ khoá và giá trị tại mỗi thành phần chính là số lần xuất hiện của từ khoá trong trang Web. Đây chính là quá trình định dạng dữ liệu (xem 2.4.1) để có đƣợc file dữ liệu theo đúng định dạng của SOM Toolbox.

3.1.4 Tiến hành thử nghiệm

Để minh họa giải thuật SOM, tôi đã lập một vài tham số để máy tìm kiếm Vinahoo thực hiện crawler 150 trang Web tại nguồn Website http://www.vnexpress.net , trong đó 3 chủ để đƣợc lựa chọn để crawler là:

Van_hoa: http://vnexpress.net/Vietnam/Van-hoa/ Suc_khoe: http://vnexpress.net/Vietnam/Suc-khoe Phap_luat: http://vnexpress.net/Vietnam/Phap-luat/

Sau đó, các véctơ biểu diễn các trang Web trên đƣợc lƣu trữ trong file webLog.datạ Chúng ta sẽ sử dụng công cụ SOM Toolbox, gồm các hàm đƣợc viết bằng Matlab để phân cụm tập dữ liệu này theo các bƣớc sau:

1. Đọc dữ liệu

2. Xử lý dữ liệu trƣớc khi đƣa vào huấn luyện 3. Khởi tạo mẫu và huấn luyện theo thuật toán SOM 4. Mô phỏng kết quả

Chi tiết quá trình thử nghiệm diễn ra nhƣ sau: % BUOC 1: DOC DU LIEU TU FILE DATA sD = som_read_datắwebLog.datá);

data read ok

Formatted: Dutch (Netherlands) Formatted: Dutch (Netherlands) Formatted: Dutch (Netherlands) Formatted: Dutch (Netherlands)

Formatted: Dutch (Netherlands)

% NHAN PHIM BAT KY DE TIEP TUC pause();

% BUOC 2 CHUAN HOA DU LIEU TRUOC KHI HUAN LUYEN sD = som_normalize(sD,'var');

% NHAN PHIM BAT KY DE TIEP TUC pause();

% BUOC 3 TIEN HANH HUAN LUYEN DU LIEU sM = som_make(sD);

Determining map sizẹ.. map size [11, 6] Initialization...

Training using batch algorithm... Rough training phasẹ..

Training: 0/ 0 s Training: 0/ 0 s Finetuning phasẹ.. Training: 0/ 0 s

Một phần của tài liệu WEB MINING với giải thuật SOM và ứng dụng cho máy tìm kiếm VINAHOO (Trang 41)