6. Cấu trúc của luận vă n
2.1.7.3. Xây dựng tập huấn luyện của crawler dựa trên Hadoop của
a. MapReduce
MapReduce(16) là một mơ hình lập trình song song chuyên dùng cho xử lý dữ
liệu. Hadoop cĩ nhiều phiên bản cài đặt MapReduce trên nhiều ngơn ngữ khác nhau như: Java, Ruby, Python và C++. MapReduce được thiết kế để làm việc trên nhiều máy được bố trí thành cluster. Khi đĩ cơng việc sẽ được chia thành nhiều phần nhỏ
thực hiện đồng thời trên các máy và cuối cùng kết quảđược tổng hợp lại.
Dữ liệu được biểu diễn dưới dạng khĩa-giá trị «K,V». Trong đĩ kiểu của K
và V hồn tồn tự do. Hàm Map lọc ra các cặp «K,V» thỏa mãn điều kiện rồi nhĩm các cặp cĩ cùng K, khi đĩ đầu ra của hàm Map cĩ dạng các cặp «K{ }V », trong đĩ
{ }V là tập hợp các giá trị V cĩ cùng khĩa K. Mapđã thu nhỏ khơng gian dữ liệu và sắp xếp một cách tương đối tập dữ liệu. Hàm Reduce nhận đầu ra của Map và tiến hành lọc để lấy ra dữ liệu cần thiết.
Hình 2.8: Mơ hình thuật tốn MapReduce.
(16) MapReduce: cĩ tên này là do bất kỳ cơng việc nào thực hiện song song trên Hadoop đều viết thành hai hàm
Đầu tiên, bộ dữ liệu sẽđược cắt nhỏ (split) thành các phần bằng nhau rồi chia cho các máy con. Từng máy con sẽ thực hiện quá trình MapReduce của riêng mình và trả về
kết quả cho một máy quản lý chung là danh sách các giá trị thỏa mãn (Hình 3.7) [26]. Thuật tốn MapReduce cĩ thểđược mơ tả như sau:
Map (K1,V1) → list(K2,V2) Reduce (K2,list( )V2 ) → list( )V2
b. Ví dụ về MapReduce
Để thấy rõ hơn, Tom White [27] đã xem xét bài tốn khai thác bộ dữ liệu thơng tin thời tiết. Các cảm biến nhiệt độđặt ở nhiều địa điểm và thu thập thơng tin mỗi giờ
một lần và ghi vào file dữ liệu được lưu trữ thành từng dịng và sắp xếp theo ngày cùng vị trí từng trạm đo. Bộ dữ liệu này thu thập trong 100 năm từ năm 1901 đến 2001 trên tồn bộ lãnh thổ nước Mỹ. Với hàng chục nghìn trạm quan trắc, kích thước của bộ
dữ liệu trở nên rất lớn. Giả sử yêu cầu của bài tốn là tìm ra nhiệt độ lớn nhất theo từng năm.
MapReduce giải quyết bằng cách cắt nhỏ dữ liệu thành các phần bằng nhau theo dung lượng rồi chia cho các máy. Việc cắt nhỏ thành các phần bằng nhau để đảm bảo các máy nhận khối lượng cơng việc như nhau và hồn tất cùng lúc. Điều này khiến cho tồn bộ quá trình thực hiện hồn tất nhanh chĩng mà khơng phải đợi các máy khác (nếu tiến hành cứ duyệt lần lượt từng bản ghi của từng năm và lấy ra kết quả). Tuy nhiên, việc cắt dữ liệu theo kích thước dẫn tới trong một "mảnh" khơng hồn tồn là dữ liệu trong cùng một năm. Giả sử dữ liệu đầu vào cho một máy cĩ dạng:
00611991950050220….999N9+0001+9999… 00414131950050220….999N9+0022+9999… 00611991950050220….999N9-0011+9999… 00124321949050220….999N9+0031+9999… 05123341949050220….999N9+0028+9999…
Mỗi dịng biểu diễn một bản ghi, các ký tự in đậm biểu diễn thời gian và nhiệt
độ tương ứng. Map lọc các bản ghi để lấy ra dữ liệu dưới dạng «K,V», ởđây K biểu diễn năm, cịn V biểu diễn nhiệt độ như sau: <1950, 1> ; <1950, 22> ; <1950, -11> <1949, 31> và <1949, 28>.
Map tiếp tục sắp xếp và nhĩm các cặp theo K. Dữ liệu dạng này sẽ được chuyển tới cho hàm Reduce: <1949, [31, 28]> và <1950, [1, 22, -11]>.
Tới đây, trong mỗi máy dữ liệu từng năm được biểu diễn dưới dạng một danh sách nhiệt độ. Hàm Reduce lặp lần lượt từng bản ghi, duyệt danh sách của bản ghi đĩ và lấy nhiệt độ cao nhất của từng năm: <1949, 31> và <1950, 22>.
Kết quả nhiệt độ cao nhất được trả về cho máy chủđể tổng hợp một lần nữa và lấy ra kết quả cuối cùng.
c. Xây dựng tập huấn luyện cho crawler
Cĩ nhiều lựa chọn cho việc thu thập dữ liệu huấn luyện. Crawler cĩ thể học on-line, tức là vừa crawling vừa học nhưng xây dựng một hế thống như vậy tương
đối phức tạp. Để đơn giản hơn là ta huấn luyện crawler off-line, tức là thu thập dữ
liệu đầy đủ, xây dựng tập học rồi huấn luyện crawler, sau đĩ mới áp dụng vào để
crawling (trong khi crawling thì khơng học nữa). Cơng việc xây dựng tập học gồm hai giai đoạn:
Giai đoạn 1. Thu thập dữ liệu ở một số trang hạt giống (seed).
Giai đoạn 2. Dựa trên dữ liệu ở giai đoạn 1, tính tốn giá trị Q cho các từ trong anchor text và text của tồn bộ trang web chứa link đĩ.
Việc cĩ được dữ liệu ở giai đoạn 1, cho phép chúng ta biết được hàm chuyển trạng thái π và hàm trả thưởng R đã trình bày ở phần học tăng cường. Với việc biết được hàm chuyển trạng thái π và hàm trả thưởng R, cho phép ta tính tốn
được giá trị Q cho từng link. Tiếp theo, với mỗi link lấy ra các từ trong anchor text. Như vậy, ta thu được một tập học cĩ dạng bộ đơi (tập hợp từ, giá trị Q) và hồn thành bước 2 đã trình bày ở phần trên.
Trong quá trình thu thập tài liệu, các trang web đều chứa link trỏ tới trang web khác. Những link này được gọi là tập out-link của một trang web. Nhưng trong quá trình xây dựng tập huấn luyện cho crawler và các giải thuật đánh giá độ quan trọng của một trang web đã trình bày ở trên lại cần tập in-link là tập các link trỏ tới một trang web cụ thể (Hình 2.9).
Hình 2.9: Minh họa về Out-link và In-link.
Giải pháp xây dựng tập In-link: Hàm Map, nhận dữ liệu dạng
{Out link}
,
URL − trong đĩ URL là địa chỉ của một trang web, cịn {Out−link} là tập các trang web được trỏ tới từ URL. Rõ ràng mỗi Out-link cĩ một In-link chính là URL. Từ đĩ, hàm Map tách ra thành các cặp: toURL, In−link , trong đĩ, toURL
chính là một Out-link và In-link là URL ban đầu. Tới đây, mỗi trang web chỉ mới biết được một In-link trong khi đĩ dữ liệu cuối cùng cần cĩ dạng một tập In-link. Do vậy, hàm Map nhĩm tất cả các cặp cĩ cùng khĩa toURL lại với nhau và chuyển cho hàm Reduce: toURL, {In−link} . Hàm Reduce nhận dữ liệu từ nhiều hàm Map và tiếp tục nhĩm các cặp cĩ cùng khĩa toURL và được bộ dữ liệu cần thiết cĩ dạng:
{In link ,In link ,In link ,...}
,
toURL − 1 − 2 − 3 .
Để xây dựng tập huấn luyện, chúng ta tận dụng CrawlDB và nội dung các link để xây dựng tập học dựa trên thuật tốn Q-learning. Với phương pháp này, ta cĩ thể duyệt ngay và sinh ra các giá trị Q ứng với từng link. Trước hết cần cĩ một số tài liệu gốc để huấn luyện một lớp nhận dạng chủđề cần crawl, ta gọi lớp này là Classfier_0.
Tiếp theo tiến hành chọn một số trang hạt giống (seed) cĩ chứa tài liệu phù hợp và tiến hành tìm kiếm theo chiều rộng một cách kỹ lưỡng. Sau khi kết thúc quá trình Crawl, ta thu được một số loại dữ liệu, trong đĩ đáng chú ý nhất là hai bộ dữ
liệu dạng URL,ParseText và URL,Inlinks , trong đĩ, ParseText là text đơn thuần thu được qua quá trình trích rút. Các dạng file PDF, Microsoft Word
t1 t2 t3 s1 tx ty tz s1
document, PowerPoint,... khi đi qua bộ trích rút đều trở về dạng ParseTextđể dùng cho các khâu xử lý sau này.
Tới đây ta đã cĩ Classifier_0, URL,ParseText và URL,Inlinks . Khởi tạo 0
=
Score cho bộ dữ liệu URL,Score là nơi lưu trữ điểm thưởng đối với từng URL. Sử dụng Classifier_0 để lọc ra các tài liệu đúng chủ đề trong
ParseText ,
URL và cập nhật Score=1 với các URL tương ứng cĩ ParseText
đúng chủ đề trong bộ dữ liệu URL,Score . Sử dụng tập URL,Inlinks để lấy ra các URL trỏ tới URL vừa cập nhật và tính ScoreInlink theo (2.10):
ScoreInlink =ScoreURL*γ (2.10)
Hình 2.10: Minh họa cho việc cập nhật Score cho các Inlink (đường nét đứt).
Lặp lại bước này cho tới khi đạt độ sâu mong muốn. Bản chất của việc này là phân loại URL thành các tầng tính từ tài liệu. Tầng càng gần tài liệu cĩ điểm càng cao, tầng càng xa tài liệu thì cĩ điểm càng thấp, giảm dần theo cấp số mũ của
γ(0≤γ <1).
Kết thúc quá trình tính điểm, ta cĩ tập URL,Score , các URL quá xa với tài liệu sẽ khơng được cập nhật điểm và giữ nguyên Score=0. Tiến hành ghép hai tập
Score ,
URL và URL,ParseText thành tập Score,ParseText rồi phân thành các tập nhỏ theo Score. Ví dụ, tính Score tới URL tầng thứ 3 kể từ tài liệu, ta sẽ cĩ bốn tập sau: 1,ParseText , γ,ParseText , γ2,ParseText và γ3,ParseText . Ta gọi mỗi tập nhỏ này là một Bin . Mỗi Bin này cĩ text đặc trưng cho một tầng và sẽ là tập huấn luyện cho một lớp để tìm ra đặc trưng cho tầng đĩ. Ta cĩ thể
khơng phải huấn luyện Bin 1,ParseText do đã cĩ classifer_0. Hình 2.11 cho ta thấy quá trình xây dựng tập huấn luyện và huấn luyện cho các lớp.
γ γ
γ2
γ2