1. Trang chủ
  2. » Luận Văn - Báo Cáo

nghiên cứu mẫu thiết kế hướng đối tượng áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web

72 334 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 72
Dung lượng 1,04 MB

Nội dung

N gôn ngữ UML Unified Modeling Language [17] được đề xuất sử dụng như một ngôn ngữ chuNn để mô hình hóa các thành tố phần mềm trong quá trình phân tích thiết kế hướng đối tượng.. Để bổ

Trang 1

MỤC LỤC

Chương 1 Tổng quan 8

1.1 Dẫn nhập 8

1.2 Mục tiêu đề tài: 9

1.3 Phạm vi đề tài 9

1.4 Nội dung luận văn 10

Chương 2 Mẫu thiết kế hướng đối tượng 11

2.1 Khái niệm mẫu thiết kế 11

2.2 Lịch sử và vai trò của mẫu thiết kế 11

2.3 Các loại mẫu được sử dụng trong phát triển phần mềm 12

2.4 Các mẫu thiết kế hướng đối tượng GoF 14

2.4.1 Các mẫu tạo lập (Creational patterns) 15

2.4.2 Các mẫu cấu trúc (Structural patterns) 15

2.4.3 Các mẫu ứng xử (Behavioural patterns) 15

2.4.4 Mẫu thiết kế hướng đối tượng dạng phức hợp 15

2.5 Các bước để lựa chọn mẫu thiết kế 16

2.6 Một số vấn đề được giải quyết bằng mẫu thiết kế 17

Chương 3 Tổng quan về rút trích thông tin 19

3.1 Giới thiệu chung 19

3.2 Giới hạn hướng nghiên cứu của đề tài 21

3.3 Giới thiệu về Rút trích thông tin 22

3.3.1 Khái niệm 22

3.3.2 So sánh rút trích thông tin và tìm kiếm thông tin 22

3.3.3 Hệ thống rút trích thông tin từ các trang web 23

3.4 Bài toán cần giải quyết 25

3.5 Các nghiên cứu liên quan đến bài toán đặt ra 28

Trang 2

Chương 4 Mẫu thiết kế xây dựng ứng dụng hỗ trợ rút trích thông tin từ web 30

4.1 Giới thiệu ứng dụng 30

4.2 Kiến trúc ứng dụng hỗ trợ rút trích thông tin từ web Nn theo chủ đề 30

4.2.1 Quá trình sử dụng ứng dụng rút trích thông tin từ web Nn 30

4.2.2 Kiến trúc hệ thống 32

4.3 Các mẫu thiết kế được dùng để xây dựng ứng dụng 33

4.3.1 Mẫu thiết kế MVC 33

4.3.2 Mẫu Data Access Pattern 35

4.3.3 Mẫu Dynamic Factory 36

4.3.4 Mẫu Abstract Factory 39

4.3.5 Mẫu Strategy 40

Chương 5 Cài đặt và kiểm thử 43

5.1 Quá trình xây dựng các thuộc tính hỗ trợ rút trích thông tin: 43

5.2 Quá trình xây dựng công cụ hỗ trợ rút trích thông tin: 44

5.2.1 Giao diện ứng dụng: 44

5.2.2 Tổ chức lưu trữ thông tin các chủ đề và trang web Nn 47

5.2.3 Tổ chức lưu trữ thông tin cấu hình 49

5.3 Cài đặt các thành phần có sử dụng mẫu thiết kế hướng đối tượng 50

5.3.1 Áp dụng mẫu thiết kế Dynamic Factory để điều hướng xử lý các yêu cầu 50 5.3.2 Áp dụng mẫu Abstract Factory cho thành phần rút trích thông tin từ web Nn nội dung động 52

5.3.3 Áp dụng mẫu thiết kế Strategy đóng gói thuật toán 57

Chương 6 Kết luận và hướng phát triển 60

6.1 Kết luận: 60

6.1.1 Kết quả đạt được 61

6.1.2 Hạn chế: 62

6.2 Hướng phát triển 62

Tài liệu tham khảo 63

Trang 3

Phụ lục A Giới thiệu về web Nn 66

A 1 Khái niệm 66

A 2 Giới thiệu về web Nn nội dung động 67

Phụ lục B Cài đặt minh họa mẫu thiết kế mẫu Dynamic Factory 69

Phụ lục C Áp dụng thống kê thu thập thuộc tính chung chủ đề 71

Trang 4

DAN H MỤC CÁC TỪ VIẾT TẮT &

THUẬT N GỮ

Information Extraction: Rút trích thông tin

Information retrieval : Tìm kiếm thông tin

Information Integration : Tổng hợp thông tin

Object Oriented Design patterns: Mẫu thiết kế hướng đối tượng

Composite Patterns: Mẫu thiết kế phức hợp

Wrapper: Công cụ rút trích thông tin từ web

Deep web: Trang web Nn

Meta search engine: Máy tìm kiếm liên hợp

Web mining: Khai phá web

Content mining: Khai phá nội dung

Text Mining: Khai phá văn bản

Structure Mining: Khai phá cấu trúc

Usage Mining: Khai phá sử dụng

Trang 5

DAN H MỤC CÁC BẢN G, HÌN H

Hình 3-1 : Một số form tìm kiếm theo chủ đề việc làm [10] 26

Hình 3-2: Minh họa Visual Block Tree, và canh lề các mục dữ liệu 28

Hình 3-3: Mẫu đánh nhãn form 29

Hình 4-1 : Biểu đồ hoạt động của người sử dụng 31

Hình 4-2 : Kiến trúc hệ thống hỗ trợ rút trích thông tin từ web Nn theo chủ đề 32

Hình 4-3: Mô hình MVC 34

Hình 4-4: Mẫu Data Access Object 35

Hình 4-5 : Mẫu Factory Method 36

Hình 4-6 : Mẫu Dynamic Factory - cải tiến của mẫu Factory Method 37

Hình 4-7: Mẫu Abstract Factory 40

Hình 4-8: Mẫu Strategy 42

Hình 5-1: Giao diện của ứng dụng web dành cho người sử dụng 45

Hình 5-2: Giao diện chính của công cụ quản lý 45

Hình 5-3: Giao diện quản lý các thuộc tính chung 46

Hình 5-4: Giao diện quản lý các trang web 46

Hình 5-5 : CSDL lưu thông tin chủ đề và trang web Nn 49

Hình 5-6: Sơ đồ lớp thành phần điều hướng xử lý yêu cầu 50

Hình 5-7: Cài đặt không dùng mẫu Abstract Factory 52

Hình 5-8: Mẫu Abstract Factory cho thành phần rút trích thông tin từ web Nn 53

Hình 5-9: Sơ đổ lớp áp dụng mẫu thiết kế Strategy 57

Hình A-1: Quá trình truy cập form 67

Hình A-2: Form minh họa 67

Hình C-1: Một số trang tìm kiếm việc làm 71

Trang 6

Bảng 2-1: Phân loại mẫu thiết kế 14

Bảng 4-1 : So sánh hệ thống xây dựng và máy tìm kiếm liên hợp 27

Bảng 5-1: Minh họa các thuộc tính chung theo chủ đề Việc làm 44

Bảng C-1: Bảng thuộc tính thông dụng chủ đề việc làm 73

Bảng C-2: Bảng tổng kết thuộc tính chung chủ đề Việc làm 73

Trang 7

Hiện nay, trong quá trình phát triển ứng dụng, các phương pháp phân tích

thiết kế hướng đối tượng [3] đã phát triển rất mạnh mẽ và góp phần đáng kể vào

việc cải tiến chất lượng của phần mềm nhờ vào khả năng xây dựng các lớp đối tượng có tính tái sử dụng cao, dễ bảo trì và dễ mở rộng N gôn ngữ UML (Unified

Modeling Language) [17] được đề xuất sử dụng như một ngôn ngữ chuNn để mô

hình hóa các thành tố phần mềm trong quá trình phân tích thiết kế hướng đối tượng

Tuy nhiên, các phương pháp hướng đối tượng tập trung chủ yếu vào các hoạt động tổng thể trong tiến trình phát triển phần mềm hướng đối tượng N hững phương pháp này thường không giải quyết các vấn đề chi tiết nảy sinh trong quá trình thiết

kế phần mềm Để bổ sung cho phương pháp hướng đối tượng, các mẫu thiết kế

hướng đối tượng (mẫu thiết kế GoF, Gamma và cộng sự [5]) là một tiếp cận độc

đáo, được đề xuất để giải quyết các vấn đề nảy sinh trong quá trình thiết kế phần mềm hướng đối tượng Khi áp dụng các mẫu thiết kế này sẽ giúp nâng cao chất lượng phần mềm ở các yếu tố: hiệu suất ứng dụng, độ ổn định và tính tái sử dụng

Đề tài chúng tôi mong muốn đóng góp một phần vào lĩnh vực nghiên cứu này

Trang 8

Điều đặc biệt trong những năm gần đây là các chuyên gia công nghệ phần mềm cũng như các nhà nghiên cứu ngoài việc nghiên cứu những mẫu thiết kế cho phát triển phần mềm nói chung còn đưa ra những mẫu thiết kế phù hợp cho những

lĩnh vực cụ thể như các mẫu thiết kế cho Web [1], các mẫu thiết kế cho phần mềm hướng dịch vụ [14] [23], các mẫu thiết kế trong xây dựng cấu trúc dữ liệu [15]…

Điều này đã thúc đNy các mẫu thiết kế hướng đối tượng ngày càng được đa dạng Trong đề tài, tôi nghiên cứu các mẫu thiết kế hướng đối tượng áp dụng cho nhóm phần mềm rút trích thông tin Sau đó tôi áp dụng các mẫu thiết kế đã có và cải tiến cho phù hợp với các tính chất đặc thù của nhóm phần mềm này

1.2 Mục tiêu đề tài:

N ghiên cứu các mẫu thiết kế hướng đối tượng, chọn lọc và đề xuất chỉnh sửa một số mẫu thiết kế hướng đối tượng để áp dụng vào việc xây dựng ứng dụng hỗ trợ rút trích thông tin từ web

1.3 Phạm vi đề tài

Giới thiệu các loại mẫu thiết kế, đặc biệt là các mẫu thiết kế hướng đối tượng trong lĩnh vực phát triển phần mềm Trình bày cách lựa chọn mẫu thiết kế sao cho phù hợp để áp dụng vào hệ thống phần mềm cần xây dựng và một số vấn đề được giải quyết bằng mẫu thiết kế

Áp dụng mẫu thiết kế hướng đối tượng vào việc xây dựng ứng dụng hỗ trợ rút trích thông tin được giới hạn vào việc chọn lọc, chỉnh sửa các mẫu thiết kế để rút trích thông tin từ các trang web Nn với nội dung động Đây là các trang web có một lượng lớn các thông tin Nn bên dưới các giao diện tìm kiếm và không thể truy cập thông qua các công cụ tìm kiếm tổng quát (xem phụ lục A) Từ cơ sở những mẫu thiết kế đó, tiến hành xây dựng bộ khung hỗ trợ việc rút trích thông tin từ các trang web Nn nội dung động theo từng chủ đề riêng biệt

Trang 9

1.4 &ội dung luận văn

N ội dung của luận văn được tổ chức thành 6 chương:

Chương 1 giới thiệu ngữ cảnh và lý do thực hiện đề tài; trình bày mục tiêu, phạm vi đề tài và nội dung chính của từng chương trong luận văn

Chương 2 giới thiệu các loại mẫu thiết kế, các mẫu thiết kế hướng đối tượng trong lĩnh vực phát triển phần mềm Cách lựa chọn mẫu thiết kế sao cho phù hợp để

áp dụng vào hệ thống cần xây dựng và một số vấn đề được giải quyết bằng mẫu thiết kế

Chương 3 giới thiệu chung về tình hình nghiên cứu và giới hạn hướng nghiên cứu của đề tài Phân biệt giữa hướng nghiên cứu của đề tài và các hướng nghiên cứu khác Bài toán đặt ra và các nghiên cứu liên quan cũng được trình bày trong chương này

Chương 4 giới thiệu về ứng dụng hỗ trợ rút trích thông tin từ các trang web

Nn theo các chủ đề riêng biệt và kiến trúc hệ thống Chương này cũng trình bày các khái niệm và lý do lựa chọn các mẫu thiết kế được áp dụng vào hệ thống

Chương 5 xây dựng ứng dụng bằng ngôn ngữ lập trình Java và giải thích vì sao sử dụng các mẫu thiết kế đã giới thiệu ở chương 4

Chương 6 là chương cuối cùng của luận văn Chương này tổng kết, đánh giá

về các công việc đã làm và xác định hướng phát triển của đề tài

Trang 10

Chương 2 Mẫu thiết kế hướng

2.1 Khái niệm mẫu thiết kế

Mẫu thiết kế [5] mô tả giải pháp được chứng minh cho một vấn đề lặp lại

nhiều lần Một mẫu thiết kế gồm 3 phần chính: ngữ cảnh, vấn đề và giải pháp

• N gữ cảnh: mô tả các tiền điều kiện dẫn đến việc phát sinh vấn đề Tiền điều kiện là các điều kiện, tình huống cần có xác định việc áp dụng mẫu Các điều kiện kết quả là các kết quả có được sau khi áp dụng mẫu

• Vấn đề: mô tả một vấn đề lặp lại nhiều lần Trong các mẫu thiết kế, mô tả vấn đề được bổ sung thêm các ảnh hưởng, các khía cạnh mà vấn đề cần được xem xét giải quyết nó Ví dụ: các yêu cầu mà giải pháp phải thỏa, các ràng buộc cần xem xét, các tính chất mong muốn mà giải pháp nên có

• Giải pháp: đưa ra cách giải quyết vấn đề lặp lại và chú ý đến các ảnh hưởng, tác động đến nó

2.2 Lịch sử và vai trò của mẫu thiết kế

Khái niệm mẫu thiết kế được đưa ra bởi kiến trúc sư Christopher Alexander khi ông viết cuốn sách trình bày về mẫu thiết kế kiến trúc nhà vào những năm 1970

Ý tưởng này đã được ứng dụng vào lĩnh vực phát triển phần mềm vào đầu những năm 1980 Ở thời điểm đó, các ngôn ngữ lập trình hướng đối tượng như Smalltalk, C++ chưa được sử dụng rộng rãi Công nghệ lập trình phổ biến là lập trình cấu trúc trong khi lập trình hướng đối tượng chưa được quan tâm Tuy nhiên, khi ý tưởng xây dựng những thư viện lớp (framework) ra đời và được hiện thực thì lĩnh vực

Trang 11

nghiên cứu các mẫu thiết kế ra đời từ đó Một trong những thư viện lớp được thiết

kế đầu tiên là MVC (Model – View – Controller) [BO] cho ngôn ngữ Smalltalk

Đầu những năm 1990, Erich Gamma và các cộng sự (được gọi là GoF) [5]

nghiên cứu và đề xuất 23 mẫu thiết kế hướng đối tượng mà ngày nay đã được vận dụng rất hữu ích trong lĩnh vực phát triển phần mềm Thậm chí những mẫu thiết kế này đã được cài đặt sẵn trong các thư viện lớp hướng đối tượng của một số ngôn ngữ lập trình hiện đại để hỗ trợ cho các lập trình viên khi cần Từ giai đoạn đó cho đến hiện tại, số lượng mẫu thiết kế ngày càng nhiều và được ứng dụng ở các mức độ khác nhau trong thiết kế phần mềm

Mẫu thiết kế đóng một vai trò quan trọng trong quá trình phát triển của ngành công nghiệp phần mềm Mẫu thiết kế giúp giải quyết những trở ngại, những vấn đề khó khăn lặp lại thường xuyên mà những người thiết kế phần mềm gặp phải

N hững chuyên viên phần mềm chưa có nhiều kinh nghiệm, thậm chí có nhiều kinh nghiệm nhưng gặp một vấn đề mới thì việc giải quyết các vấn đề khó khăn sẽ tốn nhiều thời gian và chi phí Do đó, mẫu thiết kế có thể xem là cầu nối, là tài liệu để truyền đạt từ những người có kinh nghiệm lâu năm hay từ những nhà khoa học cho những người còn ít kinh nghiệm làm việc hay mới tiếp cận một công nghệ lập trình mới

2.3 Các loại mẫu được sử dụng trong phát triển phần mềm

N gày nay mẫu đã được nghiên cứu và ứng dụng cho nhiều lĩnh vực khác nhau như kiến trúc, giáo dục, phát triển phần mềm Trong mỗi lĩnh vực, mẫu còn có thể được phân lớp sâu hơn theo miền ứng dụng (như mẫu phân tích, mẫu thiết kế phần mềm… ), theo mức độ trừu tượng (như mẫu thiết kế là loại mẫu sử dụng trong thiết kế)… Trong mục này, tôi điểm qua một số loại mẫu đã được nghiên cứu và

ứng dụng trong lĩnh vực phát triển phần mềm [8]

• Mẫu thiết kế: đưa ra giải pháp cho các vấn đề lặp lại trong thiết kế phần

mềm hướng đối tượng Các mẫu này liên quan đến việc thiết kế các lớp, các đối tượng, các quan hệ của nó trong việc hiện thực chương trình Các mẫu ở

Trang 12

mức thấp hơn so với mẫu thiết kế gọi là các thành ngữ lập trình

(programming idiom)

• Mẫu phân tích: có giải pháp là mô hình các tiến trình nghiệp vụ trong pha

phân tích của việc phát triển phần mềm Không giống như mẫu thiết kế, mẫu phân tích không phản ánh sự hiện thực phần mềm thực sự; chúng chuyển tải các cấu trúc quan niệm của những quá trình nghiệp vụ

• Mẫu kiến trúc phần mềm: đưa ra giải pháp cho các vấn đề thuộc kiến trúc

của một hệ thống phần mềm hoặc một hệ thống con Trong đó, mỗi kiến trúc phù hợp cho một nhóm vấn đề nào đó Đồng thời mẫu làm rõ hơn quan niệm của nhà thiết kế hệ thống về tổ chức hệ thống và các hệ thống con

• Mẫu tiến trình: là loại mẫu trong đó đề cập đến các vấn đề lặp lại, nảy sinh

trong tiến trình phát triển phần mềm Giải pháp của mẫu tiến trình là tiến trình – một tập hành động có thứ tự nhằm giải quyết vấn đề

• Mẫu tiến trình tổ chức: bao gồm một giải pháp cho vấn đề lặp lại thuộc về

cấu trúc và tổ chức trong phát triển phần mềm Giải pháp của nó mô tả các

kỹ thuật quản lý và các cấu trúc thuộc tổ chức Mẫu tổ chức thường đi chung với mẫu tiến trình

• Đối mẫu: là loại mẫu trong đó chỉ ra giải pháp “tồi” đã được chứng minh là

không hiệu quả, hoặc gây thiệt hại cho tổ chức Đối mẫu cũng đề nghị các kỹ thuật, các cách để cải tiến tình trạng này

Các loại mẫu nêu trên có thể được tổng quát thành hai loại mẫu: mẫu kết quả

và mẫu tiến trình Mẫu kết quả trong đó mô tả giải pháp hướng đến kết quả là sản phNm Các mẫu thiết kế có giải pháp là các đối tượng, các lớp được đề nghị sử dụng

để giải quyết vấn đề Do đó, mẫu thiết kế thuộc loại mẫu kết quả Tương tự, các mẫu phân tích, tổ chức thuộc loại mẫu kết quả Mẫu tiến trình mô tả làm thế nào để đạt được kết quả mong muốn, giải pháp của mẫu là tiến trình

Trang 13

2.4 Các mẫu thiết kế hướng đối tượng GoF

Trong phần này, tôi trình bày một cách sơ lược về các mẫu thiết kế hướng đối tượng GoF Tôi cũng giới thiệu cách lựa chọn các mẫu thiết kế để có thể áp dụng vào hệ thống đang xây dựng và một số vấn đề dùng mẫu thiết kế để giải quyết

Qua hai thập niên phát triển, số lượng các mẫu thiết kế được đề xuất ngày càng nhiều Các mẫu GoF được xem là các mẫu nền tảng cho các nhà khoa học làm

cơ sở để đề xuất ra những mẫu thiết kế hữu ích cho ngành công nghiệp phát triển phần mềm

N hóm tác giả GoF phân loại các mẫu thiết kế dựa trên 2 tiêu chí như Bảng

2-1 Tiêu chí thứ nhất dựa theo mục đích của việc sử dụng mẫu, có 3 nhóm: Các mẫu tạo lập (Creational patterns), các mẫu cấu trúc (Structural patterns) và các mẫu ứng

xử (Behavioural patterns) Tiêu chí thứ hai dựa theo phạm vi mà áp dụng của mẫu: Các mẫu thể hiện mối quan hệ giữa các lớp đối tượng với nhau (Class patterns) và các mẫu thể hiện mối quan hệ giữa các đối tượng (Object patterns)

Prototype Singleton

Adapter Bridge Composite Decorator Facade Proxy

Chain of Responsibility Command

Iterator Mediator Memento Flyweight Observer State Strategy Visitor

Bảng 2-1: Phân loại mẫu thiết kế [5]

Trang 14

2.4.1 Các mẫu tạo lập (Creational patterns)

Các mẫu thiết kế thuộc nhóm này nhằm tổng quát hóa quá trình thực thi của một tiến trình công việc nào đó Chúng giúp một hệ thống độc lập với việc tạo, thực hiện và biểu diễn các đối tượng của nó Các mẫu tạo lập dạng lớp (class creational patterns) sử dụng tính kế thừa để yêu cầu lớp khác thực hiện công việc theo từng tiêu chuNn hay tình huống cụ thể Trong khi các mẫu tạo lập dạng đối tượng (object creational patterns) sẽ ủy nhiệm công việc đến các đối tượng khác N hóm này bao gồm các mẫu: Factory Method, Abstract Factory, Builder, Prototype, Singleton

2.4.2 Các mẫu cấu trúc (Structural patterns)

Các mẫu thiết kế thuộc nhóm này quan tâm đến việc các lớp và đối tượng được tổ chức như thế nào trong một cấu trúc lớn bao gồm nhiều lớp đối tượng Các mẫu cấu trúc dạng lớp (class structural patterns) sử dụng tính kế thừa để kết hợp các giao tiếp (interfaces) hoặc các lớp hiện thực (implementations) Trong khi các mẫu cấu trúc dạng đối tượng mô tả cách thức để kết hợp các đối tượng để hiện thực những chức năng mới N hóm này bao gồm các mẫu: Adapter, Bridge, Composite, Decorator, Façade và Proxy

2.4.3 Các mẫu ứng xử (Behavioural patterns)

Các mẫu thiết kế thuộc nhóm này quan tâm đến các giải thuật và những yêu cầu trách nhiệm giữa các đối tượng với nhau Chúng thể hiện sự giao tiếp giữa các đối tượng trong hệ thống và quá trình này được điều khiển như thế nào trong một chương trình phức tạp Các mẫu ứng xử dạng lớp sử dụng tính kế thừa để lựa chọn

và xử lý các cách ứng xử giữa các lớp Trong khi các mẫu ứng xử dạng đối tượng sử dụng cách kết hợp các đối tượng để xử lý N hóm này bao gồm các mẫu: Interpreter, Template Method, Chain of Responsibility, Command, Iteratror, Mediator, Memento, Flyweight, Observer, State, Strategy, Visitor

2.4.4 Mẫu thiết kế hướng đối tượng dạng phức hợp

Theo Dirk Riehle, mẫu thiết kế phức hợp [16] là một mẫu thiết kế có ý nghĩa

như các mẫu thiết kế thông thường khác và là sự kết hợp của các mẫu thiết kế

nguyên tử (atomic patterns) hay các mẫu thiết kế phức hợp khác Trong đó mẫu

Trang 15

thiết kế nguyên tử là những mẫu thiết kế không thể được mô tả bằng sự kết hợp của

các mẫu thiết kế khác

Trong mẫu thiết kế phức hợp, các mẫu thành phần tích hợp với nhau để tạo thành một mẫu dựa trên sự đóng góp tính chất của từng mẫu Thực tế, chúng ta thường hay nhầm lẫn giữa mẫu thiết kế kết hợp và mẫu phức hợp Chúng ta cần biết

là các mẫu kết hợp sử dụng cùng lúc nhiều mẫu để giải quyết một vấn đề cụ thể nào

đó nhưng không thể sử dụng lại để giải quyết vấn đề tương tự trong một tình huống khác

2.5 Các bước để lựa chọn mẫu thiết kế

• Để lựa chọn mẫu thích hợp phải xác định được cần thiết kế gì, các vấn đề phát sinh trong khi thiết kế, các vấn đề đó thuộc loại nào và tham khảo ứng với loại vấn đề đó có thể dùng mẫu nào để giải quyết

• Tham khảo lần lượt từng mẫu được chọn, xem mục đích sử dụng, đối chiếu với các vấn đề thiết kế gặp phải Điều này giúp hiểu rõ hơn về các mẫu và tác dụng thực của mẫu lên vấn đề cần giải quyết

• Tìm hiểu sự tương tác giữa các mẫu thiết kế để xác định được các nhóm mẫu phù hợp với bài toán của mình

• Các mẫu được phân loại theo mục đích sử dụng: Creational (kiến tạo), Behavioral (hành vi), Structural (cấu trúc) Sự phối hợp và tính lồng ghép làm cho nhiều mẫu có đặc tính và cấu trúc khá giống nhau Do đó cần phải tìm hiểu cNn thận mục đích của mẫu để phát hiện ra điểm giống nhau và khác nhau nhằm áp dụng một cách hiệu quả nhất, tránh cài đặt sai lầm về ngữ nghĩa khi thiết kế

• Tìm kiếm, khảo sát các nguyên nhân có thể dẫn tới việc thiết kế lại để cô lập hóa, nhằm tránh các thay đổi không cần thiết

• Xác định các thành phần (module, lớp đối tượng…) có thể thay đổi trong tương lai Từ đó quyết định xem phải làm gì để có thể thay đổi hệ thống mà không cần phải thiết kế lại

Trang 16

2.6 Một số vấn đề được giải quyết bằng mẫu thiết kế

Sau đây tôi trình bày một số vấn đề thường gặp và hướng giải quyết các vấn đề đó bằng mẫu thiết kế:

• Tạo một đối tượng bằng một lớp rõ ràng Xác định tên lớp khi tạo đối

tượng sẽ có một cài đặt cụ thể thay cho một lớp ảo Điều này làm cho việc thay đổi ứng dụng trong tương lai trở nên phức tạp Để tránh nguy cơ này, ta

có thể tạo đối tượng gián tiếp

Hướng giải quyết: sử dụng mẫu Abstract Factory, Factory Method, Prototype

• Phụ thuộc vào phần cứng và hệ điều hành Một chương trình được thiết kế

trên Windows sẽ không chạy hiệu quả trên Linux vì các hàm APIs và platform là khác biệt nhau Do đó cần phải thiết kế sao cho chương trình có thể linh động chuyển đổi không phụ thuộc vào bất kỳ hệ điều hành, phần cứng nào…

Hướng giải quyết: sử dụng mẫu Abstract Factory, Bridge

• Phụ thuộc vào việc thể hiện hay cài đặt của đối tượng Client biết chi tiết

về đối tượng mà nó gọi đến, thường có xu hướng thay đổi nếu đối tượng thay đổi Vì thế cần che giấu những thông tin không cần thiết của đối tượng

đó với Client

Hướng giải quyết: sử dụng mẫu Abstract Factory, Bridge, Memento, Proxy

• Phụ thuộc vào thuật toán Cách giải quyết một bài toán nào đó tại thời

điểm này có thể chưa tốt và cần phải được mở rộng thay thế hoặc tối ưu hóa Việc phụ thuộc vào cách giải quyết một vấn đề cụ thể thường làm thay đổi các đối tượng có liên quan, thậm chí gây ra sự thay đổi dây chuyền… Do đó các thuật toán càng độc lập thì càng hạn chế sự ràng buộc

Hướng giải quyết: sử dụng mẫu Builder, Iterator, Strategy, Template Method, Visitor

• Phụ thuộc quá chặt giữa các đối tượng Do lớp đối tượng A và B liên kết

(phụ thuộc) với nhau quá chặt (chẳng hạn như thiết lập quan hệ song

Trang 17

phương) nên rất khó có thể thay đổi lớp A nếu không hiểu rõ về lớp B (hoặc thậm chí còn phải thay đổi lớp B)

Hướng giải quyết: sử dụng mẫu Abstract Factory, Bridge, Chain of Responsibility, Command, Facade, Mediator, Observer

• Mở rộng chức năng bằng cách kế thừa Thay đổi đối tượng bằng cách kế

thừa không phải là dễ dàng Mỗi lớp kế thừa đều có một hoặc nhiều cài đặt

cố định, do đó để kế thừa cần phải có sự hiểu biết sâu về lớp cơ sở Và kế thừa có thể dẫn đến sự bùng nổ lớp, vì có nhiều lớp kế thừa chỉ bởi một hành động đơn giản

Kết hợp đối tượng là một cách thay thế cho việc kế thừa hành vi Chức năng mới có thể được thêm vào ứng dụng bằng cách kết hợp các đối tượng đã có hơn là định nghĩa một lớp kế thừa từ lớp đã có Tuy nhiên nếu kết hợp quá nhiều đối tượng có thể khiến cho thiết kế phức tạp

Hướng giải quyết: sử dụng Bridge, Chain of responsibility, Composite, Decorator, Strategy

• Không thể thay đổi lớp Trong một vài trường hợp chúng ta cần phải thay

đổi chức năng của một lớp đối tượng sao cho phù hợp với hoàn cảnh thực tế của hệ thống hoặc tích hợp các lớp đối tượng khác vào hệ thống, nhưng chúng ta không có mã nguồn của những đối tượng đó… Điều này yêu cầu chúng ta phải thiết kế lại hệ thống

Hướng giải quyết: sử dụng mẫu Adapter, Decorator, Visitor

Trang 18

Chương 3 Tổng quan về rút trích

thông tin

Chương 3 giới thiệu chung về tình hình nghiên cứu và giới hạn hướng nghiên cứu của đề tài Phân biệt giữa hướng nghiên cứu của đề tài và các hướng nghiên cứu khác Bài toán đặt ra và các nghiên cứu liên quan cũng được trình bày trong chương này

3.1 Giới thiệu chung

Công nghệ thông tin đã tác động mạnh mẽ đến sự phát triển của tất cả các ngành nghề trong đời sống xã hội và đặc biệt là sự ra đời của Internet Đây thực sự

là cuộc cách mạng vĩ đại vì một trong số các ứng dụng nổi bật của Internet là Word Wide Web đã mang lại cho chúng ta một kho kiến thức mà không một thư viện, một

bộ bách khoa toàn thư hay một hệ thống thư viện nào có thể so sánh được Tuy nhiên, để người dùng có thể dễ dàng và nhanh chóng tìm thấy được thông tin cần thiết, Khai phá web đóng một vai trò rất to lớn Khai phá web (web mining) bao gồm khám phá và phân tích dữ liệu, tài tiệu, đa phương tiện từ Word Wide Web

Khai phá Web (web mining) [BO] là việc trích chọn ra các thành phần được

quan tâm hay được đánh giá là có ích cùng các thông tin tiềm năng từ các tài nguyên hoặc các hoạt động liên quan tới World Wide Web

Khai phá Web = Khai phá dữ liệu + Xử lý ngôn ngữ tự nhiên + World Wide Web

Khai phá web được chia thành 3 lĩnh vực nghiên cứu chính [19] là khai phá

nội dung Web (Web content mining), khai phá cấu trúc Web (Web structure mining) và khai phá sử dụng Web (Web usage mining)

• Khai phá nội dung Web:

Khai phá nội dung Web là quá trình xử lý để lấy ra các tri thức từ nội dung các trang văn bản hoặc mô tả của chúng Khai phá nội dung web tập trung vào việc khám phá một cách tự động nguồn thông tin có giá trị trực tuyến và có thể tiếp cận theo 2 hướng khác nhau là khai thác văn bản web và tối ưu kết quả trả về từ công cụ

Trang 19

tìm kiếm Khai phá dữ liệu đa phương tiện là một phần của khai phá nội dung Web Đây hứa hẹn việc khai thác được các thông tin và tri thức ở mức cao từ nguồn đa phương tiện trực tuyến rộng lớn

o Khai phá văn bản Web: là việc sử dụng kỹ thuật khai phá dữ liệu đối với các tập văn bản để tìm ra tri thức có ý nghĩa tiềm Nn trong nó Dữ liệu của nó có thể là dữ liệu có cấu trúc hoặc không cấu trúc Vấn đề này liên quan chủ yếu tới việc khai phá bản thân nội dung các văn bản, và đây là nội dung cơ bản nhất cần quan tâm trong khai phá Web

o Tối ưu kết quả trả về từ các công cụ tìm kiếm (tổng hợp kết quả): trong các công cụ tìm kiếm Web, sau khi đã tìm ra được các trang Web thỏa mãn yêu cầu người dùng, còn một công việc không kém phần quan trọng đó là phải sắp xếp, chọn lọc kết quả theo mức độ phù hợp yêu cầu người dùng N goài việc sắp xếp kết quả theo hạng quan trọng của trang, cần tiến hành phân cụm tập các trang Web trả về và tạo nhãn cụm để cung cấp đến người dùng Quá trình này thường sử dụng các thông tin như tiêu đề trang, URL, content-type, các liên kết trong trang Web… để tiến hành phân cụm và đưa ra tập con các kết quả tốt nhất cho người dùng

• Khai phá cấu trúc Web

N hờ các kết nối giữa các văn bản siêu liên kết, World Wide Web chứa đựng nhiều thông tin hơn so với tập các văn bản nội dung trang Web Ví dụ: số lượng liên kết trỏ tới một trang Web được coi như một chỉ số về mức độ quan trọng của trang Web đó đồng thời các liên kết đi ra từ một trang Web chỉ dẫn rằng các trang đích có nội dung liên quan tới các chủ đề đang được đề cập trong trang hiện tại

Mục tiêu của Khai phá cấu trúc Web là để phát hiện thông tin cấu trúc về Web N ếu Khai phá nội dung Web chủ yếu tập trung vào cấu trúc bên trong tài liệu thì khai phá cấu trúc Web cố gắng để phát hiện cấu trúc liên kết của các siêu liên kết

ở mức trong của tài liệu Dựa trên mô hình hình học của các siêu liên kết, khai phá cấu trúc Web sẽ phân loại các trang Web, tạo ra thông tin như độ tương tự và mối

Trang 20

quan hệ giữa các Website khác nhau N ếu trang Web được liên kết trực tiếp với trang Web khác thì ta sẽ muốn phát hiện ra mối quan hệ giữa các trang Web này

• Khai phá sử dụng Web:

Khai phá sử dụng Web hay Khai phá hồ sơ Web (Web log mining) là việc xử

lý để lấy ra các thông tin hữu ích trong các hồ sơ truy cập Web Thông thường các Máy chủ Web thường ghi lại và tích lũy các dữ liệu về các tương tác của người dùng khi nhận được một yêu cầu truy cập Việc phân tích các hồ sơ truy cập Web của các trang web khác nhau sẽ dự đoán các tương tác của người dùng khi họ tương tác với Web, giúp tìm hiểu cấu trúc của Web Từ đó cải thiện thiết kế của các hệ thống liên quan N hư Khai phá cấu trúc Web, mô hình ứng xử của người dùng trên Internet và mô hình sử dụng Web cần được quan tâm đề cập

o Khai phá các xu hướng cá nhân: Mục đích là để chuyên biệt hóa các website cho các lớp đối tượng người dùng Các thông tin được hiển thị, độ sâu của cấu trúc site và định dạng của các tài nguyên, tất cả đều có thể chuyên biệt hóa một cách tự động cho mỗi người dùng theo thời gian dựa trên các mẫu truy cập của họ

3.2 Giới hạn hướng nghiên cứu của đề tài

Khai phá nội dung Web là một trong những nội dung cơ bản nhất cần nghiên cứu trong quá trình khai phá web Khi khai phá nội dung Web, một số bài toán được quan tâm trong khai phá nội dung Web là tìm kiếm thông tin, rút trích thông tin, phân loại thông tin, tóm tắt thông tin…

Trang 21

Trong phạm vi đề tài, tôi tập trung vào hướng nghiên cứu rút trích thông tin Đặc biệt chúng tôi tập trung vào việc rút trích thông tin từ các trang web Nn với nội dung động bên dưới các form theo từng chủ đề riêng biệt

Hiện nay mặc dù đã có nhiều thành tựu về lĩnh vực rút trích thông tin từ web

và rút trích thông tin từ các trang web Nn nhưng để nhà phát triển xây dựng và phát triển một ứng dụng rút trích thông tin từ các trang web Nn vẫn là một quá trình phức tạp Đề tài của chúng tôi mong muốn đóng góp vào hướng nghiên cứu này

3.3 Giới thiệu về Rút trích thông tin

3.3.1 Khái niệm

Rút trích thông tin (IE – Information Extraction) [18] là quá trình lấy thông

tin từ các nguồn ở những định dạng không đồng nhất và chuyển thành một dạng đồng nhất Dữ liệu sau khi rút trích được sử dụng, trình bày trực tiếp cho người dùng, lưu vào cơ sở dữ liệu để xử lý sau đó hay sử dụng cho những hệ thống tìm kiếm thông tin như một dữ liệu đã qua bước tiền xử lý

3.3.2 So sánh rút trích thông tin và tìm kiếm thông tin

Tìm kiếm thông tin (IR – Information Retreival) [19] là phương pháp tìm

kiếm thông tin, tìm kiếm văn bản để lấy ra những văn bản phù hợp với những tiêu chí đặt ra ban đầu IE và IR có điểm chung là đem đến cho người dùng những thông tin cần thiết nhưng IE và IR hoàn toàn khác nhau:

• Hệ thống IR tập trung vào việc tìm kiếm những văn bản liên quan và đem đến cho người dùng

• Hệ thống IE là phân tích văn bản và chỉ mang đến cho người dùng những mẫu tin phù hợp mà người dùng quan tâm

Ví dụ: lấy bối cảnh trong nhà sách, một hệ thống IE sẽ tìm kiếm tất cả các tên và địa chỉ công ty có trong tất cả những tài liệu trong nhà sách Thông tin này sẽ được định dạng rõ ràng theo một cấu trúc nào đó và trình bày cho người dùng Trong khi đó, hệ thống IR sẽ tìm kiếm ra những cuốn sách có liên quan đến một

Trang 22

công ty nào đó Thông tin công ty đưa vào tức là yêu cầu của người dùng và kết quả thu được từ hệ thống IR là tập hợp những cuốn sách thỏa mãn yêu cầu đó

Tùy vào từng ngữ cảnh, từng bài toán mà độ phức tạp của hệ thống sẽ khác nhau nhưng cũng có trường hợp IE kết hợp với IR trong một hệ thống nào đó

3.3.3 Hệ thống rút trích thông tin từ các trang web

3.3.3.2 Phân loại hệ thống rút trích thông tin từ web

N gày nay, có rất nhiều hệ thống rút trích thông tin từ web được các nhà phát triển nghiên cứu và xây dựng Các tiêu chí để phân loại một hệ thống rút trích thông tin từ web như sau:

Dựa vào mức độ can thiệp của con người trong quá trình rút trích thông tin, các hệ thống rút trích thông tin có thể được chia ra làm 4 loại: thủ công, có

giám sát, bán giám sát và không giám sát Trong đó, các hệ thống hoàn toàn tự động, không có sự can thiệp của con người đang được các nhà nghiên cứu quan tâm nhất

Dựa vào tầng dữ liệu được rút trích: một trang web sẽ có nhiều trang

HTML, một trang HTML sẽ có nhiều record và một record sẽ có nhiều thuộc tính

Do đó, dựa vào kết quả thông tin rút trích được ở tầng nào, các hệ thống rút trích được chia ra làm 4 loại: tầng thuộc tính (attribute), tầng record, tầng trang HTML

Trang 23

(page) và tầng trang web (site) Hiện tại các hệ thống xử lý ở tầng thuộc tính và record chiếm đa số Và cho đến nay, vẫn chưa thấy xuất hiện các hệ thống rút trích thông tin ở tầng site

Dựa vào các phương pháp rút trích thông tin, các hệ thống rút trích thông

tin cũng được chia thành 3 dạng:

• Các hệ thống dựa trên các phương pháp thủ công: sử dụng các phương pháp gán nhãn, các cách lấy thông tin trực tiếp từ cơ sở dữ liệu hoặc từ các dịch vụ web (web service)

• Các hệ thống dựa trên các phương pháp heuristic: các phương pháp thống kê, tập luật, sử dụng các mẫu thông tin, dựa vào cấu trúc cây,… được sử dụng để rút trích thông tin

• Các hệ thống dựa trên các phương pháp học: sử dụng các phương pháp mô hình Markov, ngữ nghĩa, học trên cấu trúc cây,… để giúp cho các hệ thống hiểu và rút trích thông tin chính xác hơn

3.3.3.3 Khảo sát một số ứng dụng rút trích thông tin từ web

• Web-Harvest là công cụ mã nguồn mở để rút trích dữ liệu Web Công cụ cung cấp một phương pháp để thu thập các trang Web mong muốn và rút trích dữ liệu hữu ích từ chúng Đó là sử dụng các kỹ thuật thao tác trên text/xml như XSLT, XQuery và biểu thức quy tắc

Do các sử dụng một số logic nên cần thiết để mô tả quá trình làm thế nào để lấy dữ liệu mong muốn từ nội dung hỗn hợp Tất cả các thủ tục rút trích trong Web-Harvest là người dùng định nghĩa thông qua các tệp tin cấu hình XML Mỗi tập tin cấu hình mô tả các trình tự xử lý thực hiện một số nhiệm vụ để được mục tiêu cuối cùng

• RoadRunner [22] hoạt động dựa trên thuật toán học không giám sát Mục

đích của công cụ là rút trích được các dữ liệu từ những trang web có lượng lớn dữ liệu và cấu trúc ít thay đổi RoadRunner hoạt động bằng cách so sánh cấu trúc HTML của các trang mẫu cùng loại và tạo ra một lược đồ cho các

dữ liệu chứa trong các trang từ những thẻ HTML

Trang 24

• Dynamo nhấn mạnh việc rút trích dữ liệu qua các trang web ở những trang HTML N hững công cụ hiện nay khi rút trích hoàn tất thường gặp nhiều khó khăn để quản lý việc tạo ra các RSS feeds nhưng lại gặp một số hạn chế như nguồn cấp dữ liệu cũ có thể không được quan tâm và thường bị xóa từ các máy chủ và máy chủ truyền thống không thể thực hiện các truy vấn trực tiếp

N gược lại, với Dynamo sẽ:

o Tự động phát sinh RSS từ những dữ liệu của trang HTML

o Lưu trữ các nguồn cung cấp dữ liệu theo thứ tự thời gian

o Truy vấn và tổng hợp thành các dịch vụ web

N hận xét: Các công cụ rút trích thông tin từ web này phần lớn chỉ có thể áp dụng cho các trang web nổi Vậy đối với các trang web Nn, chúng ta có thể sử dụng lại các công cụ này hay phải xây dựng một hệ thống mới N ếu các công cụ này có thể tái sử dụng thì đối với các nhà phát triển, việc tái sử dụng sẽ được tiến hành như thế nào?

3.4 Bài toán cần giải quyết

Rút trích thông tin từ các trang web dựa trên chủ đề là một trong những hướng nghiên cứu nhận được nhiều quan tâm Vấn đề trở nên quan trọng khi các trang web đang ngày một gia tăng và nhu cầu sử dụng thông tin của người dùng được nâng cao N hững công cụ phân tích các luồng và các chủ đề thông tin trở nên cần thiết khi giúp người dùng có một cái nhìn tổng quát và định hướng thông tin tốt hơn N hững nhân viên làm việc với các tập dữ liệu văn bản lớn như các nhà làm luật, các nhà báo, những nhà thống kê … có thêm công cụ để duyệt qua các mảng thông tin dễ dàng hơn theo các chủ đề

Đối với những trang web Nn với nội dung động, thông thường người dùng phải

sử dụng các trang tìm kiếm thông tin của trang web đó Điều này làm cho người dùng phải tốn rất nhiều thời gian và chi phí để có thể có được thông tin mình muốn đặc biệt là các thông tin từ các trang web Nn

Trang 25

Hình 3-1 : Một số form tìm kiếm theo chủ đề việc làm [10]

Ví dụ tìm kiếm việc làm, người dùng có thể truy cập vào các một trang về việc làm, sử dụng các giao diện truy vấn để có thể có được thông tin cần thiết Sau đó người dùng lại truy cập vào các trang về việc làm khác và tiếp tục sử dụng giao diện truy vấn để lấy thông tin Hình 3-1 mô tả 3 giao diện mà người dùng phải truy cập

để lấy được thông tin cần thiết…Công việc này đòi hỏi rất nhiều thời gian và công sức của người dùng Do đó cần thiết phải có một công cụ hỗ trợ người dùng có được các thông tin mà không cần phải truy cập thông qua giao diện truy vấn của từng trang

Đối với các nhà phát triển: Mong muốn có được nguồn thông tin từ các trang web Nn để sử dụng hoặc làm dữ liệu đầu vào cho hệ thống khác

Hiện nay có nhiều công cụ đã được các nhà nghiên cứu phát triển Tuy nhiên các công cụ này thường được dùng với 1 chủ đề cụ thể kèm một số ít trang web Nn

và một thuật toán cố định như về chuyến bay [2], về việc làm [10] [12]… Điều này

làm cho các nhà phát triển rất khó khăn khi mở rộng hay thay đổi các thành phần trong hệ thống Các nhà phát triển mong muốn có được một hệ thống có thể dễ dàng

bổ sung hay thay đổi các chủ đề, các trang web, các thuật toán… cũng như dễ dàng cho công tác bảo trì và mở rộng từ các thành phần trong hệ thống

Vậy giữa hệ thống cần xây dựng có mối quan hệ thế nào với máy tìm kiếm liên

hợp (meta search engine)? Để tránh sự nhầm lẫn, tôi tiến hành so sánh giữa hệ

thống cần xây dựng và máy tìm kiếm liên hợp ở bảng 4-1

Trang 26

So sánh Máy tìm kiếm liên hợp Hệ thống xây dựng

Giống nhau

- Gửi yêu cầu đến các đối tượng web và xử lý kết quả trả về

- Gửi yêu cầu đến các đối tượng web và xử lý kết quả trả về

- Là thành phần trung gian nên không có lưu dữ liệu trang web

- Là thành phần trung gian nên không có lưu dữ liệu trang web

- Tìm kiếm thông tin - Rút trích thông tin

- Đối tượng gửi yêu cầu là các trang tìm kiếm

- Đối tượng gửi yêu cầu là các trang web Nn

- Số lượng đối tượng cần gửi yêu cầu là ít

- Số lượng các trang web Nn cần gửi yêu cầu là nhiều

- Gửi từ khóa tìm kiếm - Gửi các thuộc tính ứng với

- Tập trung vào các thuật toán xử lí kết quả từ các máy tìm kiếm khác như tổng hợp

và xếp hạng

- Tập trung vào cách thức xây dựng các thuộc tính form, gửi các yêu cầu đến các trang web Nn và rút trích kết quả trả về

Bảng 3-1 : So sánh hệ thống xây dựng và máy tìm kiếm liên hợp

Trang 27

3.5 Các nghiên cứu liên quan đến bài toán đặt ra

Khi tiến hành rút trích thông tin từ các trang web Nn, các nhà phát triển đã nghiên cứu và áp dụng rất nhiều công cụ như Minerva , TSIMMIS, and Web-OQL (phương pháp thủ công) ,WIEN ,Soft Mealy và Stalker (Phương pháp bán tự động) Depta (tự động)…Trong phần này chúng tôi trình bày 2 công cụ HiWE dùng để thu thập các trang web Nn với nội dung động và ViDE dùng để rút trích kết quả trả về với giao diện trực quan

• ViDE (Vision-based Data Extractor) [24]

Đây là công cụ rút trích dữ liệu có cấu trúc từ kết quả trả về của những trang web sâu một cách trực quan ViDE bao gồm 2 thành phần Vision-based Data Record extractor (ViDE) and Vision-based Data Item extractor (ViDIE) (Hiện tại Vide chưa tích hợp công cụ WISE) Bằng cách sử dụng giao diện trực quan , ViDE hạn chế được sự phức tạp khi phân tích mã nguồn trang web

Cách thực hiện của ViDe gồm các bước cơ bản sau: Đầu tiên công cụ nhận 1 trang web từ cơ sở dữ liệu web, phân tích và chuyển sang dạng khối Visual Block tree Sau đó ViDE rút trích dòng dữ liệu từ khối Visual Block tree (hình 3-2 bên trái), vì thứ tự của các mục dữ liệu là cố định nên có thể xem mỗi dòng dữ liệu gồm nhiều mục dữ liệu Do đó, có thể tận dụng đặc điểm này để canh lề các mục dữ liệu (hình 3-2a, 3-2b, 3-2c, 3-2d bên phải) Cuối cùng rút trích thông tin đó về cơ sở dữ liệu

Hình 3-2: Minh họa Visual Block Tree, và canh lề các mục dữ liệu

Trang 28

HiWE (Hidden Web Exposer) [20]: là một công cụ dùng để thu thập web

kể cả các trang web Nn Công cụ này bao gồm các thành phần của một công cụ thu thập web và có bổ sung chức năng tự động xử lý, phân tích và gửi truy vấn đến form (Hình 3-3 mô tả việc xây dựng bộ tập nhãn và giá trị từ hộp chọn lựa, textbox

và radio) Tuy nhiên công cụ này cũng cần có sự tham gia của chuyên gia, bằng cách cung cấp danh sách các thuộc tính như Company name để công cụ tự động điền các thông tin và tiến hành thu thập kết quả trả về

Hình 3-3: Mẫu đánh nhãn form

Trang 29

Chương 4 Mẫu thiết kế xây dựng ứng dụng hỗ trợ rút trích thông tin từ web

Chương 4 trình bày về ứng dụng hỗ trợ rút trích thông tin từ các trang web

Nn theo các chủ đề riêng biệt và kiến trúc hệ thống Chương này cũng trình bày các khái niệm và lý do lựa chọn các mẫu thiết kế được áp dụng vào hệ thống

4.1 Giới thiệu ứng dụng

Ứng dụng được xây dựng là một ứng dụng hỗ trợ công việc rút trích thông tin

từ các trang web Nn với nội dung động theo từng chủ đề riêng biệt Các thông tin sau khi rút trích có thể được hiển thị cho người dùng một cách phù hợp Mục đích chính đề tài là các mẫu thiết kế để xây dựng bộ khung cho ứng dụng này

Các chức năng chính của ứng dụng:

• Rút trích thông tin từ các trang web Nn theo chủ đề

• Hỗ trợ nhà phát triển quản lý các thông tin về chủ đề, trang web một cách dễ dàng

Minh họa ứng dụng:

• Tôi minh họa rút trích thông tin ở 3 chủ đề chính là: Job, Paper, Mobiphone

• Áp dụng 2 thuật toán rút trích thông tin: dựa trên XPath (cấu hình bằng tay)

và dựa trên dự giống nhau về cấu trúc trang (heuristic) Mỗi thuật toán áp dụng chung cho các trang web thuộc chủ đề

• Hỗ trợ 2 component cơ bản của thuộc tính là text và select khi phát sinh giao diện các thuộc tính tự động khi nguời dùng chọn chủ đề cần rút trích

4.2 Kiến trúc ứng dụng hỗ trợ rút trích thông tin từ web jn theo chủ đề

4.2.1 Quá trình sử dụng ứng dụng rút trích thông tin từ web jn

Đối với người sử dụng: N gười sử dụng có thể yêu cầu rút trích thông tin

theo chủ đề chọn lựa Hình 4-1 là biểu đồ hoạt động khi người sử dụng dùng hệ thống Trước hết, người sử dụng phải xác định chủ đề cần rút trích thông tin và các yêu cầu thông qua các thuộc tính chung thuộc chủ đề đó Hệ thống sẽ xây dựng các

Trang 30

câu truy vấn sao cho phù hợp với từng trang web Nn, cụ thể ở đây là các trang tìm kiếm ứng với từng chủ đề và gửi yêu cầu Thành phần thu thập trang web chịu trách nhiệm nhận kết quả trả về và áp dụng thuật toán để rút trích thông tin Tất cả các kết quả được hiển thị cho người dùng một cách phù hợp

Đối với nhà phát triển: nhà phát triển có thể

• Quản lý chủ đề và các giá trị thuộc tính chung của chủ đề

• Hỗ trợ phân tích trang web Nn, quản lý các trang web Nn thuộc chủ đề và giá trị các thuộc tính của trang web Nn đó

• Hỗ trợ nhà phát triển map thuộc tính và giá trị của chủ đề với tên biến và giá trị của trang web

Hình 4-1 : Biểu đồ hoạt động của người sử dụng

Trang 31

Thành phần cài đặt các thuật toán rút trích thông tin từ web

xử lý dữ liệu

Hình 4-2 : Kiến trúc hệ thống hỗ trợ rút trích thông tin từ web jn theo chủ đề

Mô tả các thành phần:

Ứng dụng được thiết kế theo mô hình MVC (được trình bày ở mục 4.3.1), bao gồm 3 thành phần chính là Model, View và Controller Hình 4-5 biểu diễn các thành phần con bên trong 3 thành phần chính và các mẫu thiết kế được áp dụng cho các thành phần đó Mô tả chi tiết các thành phần con như sau:

• Thông tin cấu hình: được lưu trữ trong tệp tin XML Thông tin cấu hình

này lưu trữ yêu cầu và lớp xử lý yêu cầu đó

• Thành phần điều hướng xử lý các yêu cầu: là một controller tiếp nhận tất

cả các yêu cầu Kết hợp với thông tin cấu hình cho phép điều hướng đến các lớp xử lý yêu cầu Trong thành phần này, có thể áp dụng mẫu thiết kế Factory method của GoF để khởi tạo các đối tượng Đây là mẫu cơ sở để cải tiến thành mẫu Dynamic Factory mà chúng tôi áp dụng để có thể khởi tạo đối tượng động

Trang 32

• Thành phần thu thập nội dung từ trang web jn theo chủ đề: nhiệm vụ

của thành phần này là xây dựng câu truy vấn đến các trang web Nn phù hợp, gửi yêu cầu đến các trang web đó và nhận kết quả trả về Trong thành phần này, chúng tôi áp dụng mẫu thiết kế Abstract Factory để tạo một nhóm các

“sản phNm” cho chủ đề

• Thành phần cài đặt các thuật toán rút trích thông tin: Chúng tôi áp dụng

mẫu thiết kế Strategy để đóng gói các thuật toán và cho phép client lựa chọn một trong những thuật toán đó để sử dụng

• Thành phần quản lý thông tin các trang web jn và chủ đề: hỗ trợ nhà

phát triển bổ sung các trang web Nn thuộc chủ đề và các thuộc tính của trang web Nn đó dễ dàng hơn N goài ra còn hỗ trợ nhà phát triển map thuộc tính và giá trị của chủ đề với tên biến và giá trị của trang web

• Thành phần xử lý dữ liệu: chúng tôi áp dụng mẫu thiết kế Data Access

Object Patterns để tách tầng model thành tầng xử lý nghiệp vụ và tầng truy cập dữ liệu để dễ sử dụng hơn

Trước khi trình bày phần cài đặt hệ thống trong chương 5, trong phần này tôi trình bày tổng quan về những mẫu thiết kế được dùng để xây dựng các thành phần trong ứng dụng và có những lý giải vì sao tôi lại lựa chọn những mẫu thiết kế đó

4.3 Các mẫu thiết kế được dùng để xây dựng ứng dụng

4.3.1 Mẫu thiết kế MVC

Kiến trúc của ứng dụng được thiết kế tuân theo mô hình MVC [21], ứng

dụng được tổ chức thành 3 thành phần:

Trang 33

Hình 4-3: Mô hình MVC

Hình 4-3 là mô hình MVC, chi tiết các thành phần như sau

• Mô hình trong (Model): là đối tượng biểu diễn thông tin nghiệp vụ bên trong ứng dụng đang xây dựng Đối tượng này bao bọc các thành phần dữ liệu và các phương thức liên quan đến ứng xử của nó Khi phát triển các lớp đối tượng này, người lập trình chỉ quan tâm cài đặt các xử lý hay tiến trình tác nghiệp của ứng dụng mà không cần quan tâm đến việc chúng được hiển thị

ra các thiết bị xuất hay lấy vào từ thiết bị nhập như thế nào

• Hiển thị bên ngoài (View): là thành phần liên quan đến giao diện người dùng N gười sử dụng “thấy” được đối tượng nghiệp vụ bên trong ứng dụng nhờ phần hiển thị (tức là View) của nó Đối tượng có thể được hiển thị dưới dạng một trang HTML, một hộp chọn (listbox), hay một danh sách chọn dạng cây (tree view)…

• Bộ điều khiển (Controller): đảm nhiệm việc cập nhật bộ phận hiển thị (View) khi cần thiết Bộ điều khiển này nhận dữ liệu nhập từ người dùng, truy xuất các thông tin cần thiết từ mô hình trong (Model), và cập nhật thích hợp phần hiển thị (View)

Trong mô hình MVC, sự tách biệt giữa phần trình bày (View và Controller) khỏi phần biểu diễn trong (Model) chính là yếu tố quan trọng góp phần nâng cao chất lượng thiết kế phần mềm Yếu tố này tách biệt được mã nguồn liên quan đến nghiệp vụ ứng dụng và mã nguồn giao diện người dùng, tạo cơ chế để tránh được

mã hóa cứng và trùng lặp mã nguồn, sự sửa đổi về mô hình trong không ảnh hưởng

Trang 34

dây chuyền đưa đến việc sửa đổi nhiều phần giao diện người dùng bên ngoài Ứng dụng có thể phát triển và mở rộng: với cùng một mô hình trong có thể có nhiều hình thức giao tiếp bên ngoài với người sử dụng (trình duyệt Web, giao tiếp dòng lệnh, hiển thị đồ họa…)

4.3.2 Mẫu Data Access Pattern

Với mong muốn đơn giản hóa việc xây dựng các xử lý trong thành phần Model, và để lập trình các xử lý nghiệp vụ không phụ thuộc vào loại cơ sở dữ liệu nào, các xử lý ở tầng trên sẽ chỉ truy cập thông quan các xử lý nghiệp vụ Tôi tách tầng Model thành 2 thành phần là Xử lý nghiệp vụ và Truy cập dữ liệu Do đó, tôi

áp dụng mẫu thiết kế Data Access Pattern để giải quyết vấn đề này Cấu trúc mẫu như sau

Hình 4-4: Mẫu Data Access Object

Mẫu thiết kế Data Access Object được biểu diễn ở hình 4-4 bao gồm các thành phần chính sau:

• BussinessObject các đối tượng nghiệp vụ, tập trung xử lý các nghiệp vụ của

hệ thống

• Data Access Object (DAO) là thành phần chính của data access layer, dùng

để truy nhập cơ sở dữ liệu Đối với mỗi một Value Object, ta sẽ có một DAO

và ngược lại DAO có thể dùng Value Object để trả dữ liệu cho Business Object, hoặc cũng có thể dựa vào dữ liệu trong Value Object để tiến hành cập nhật dữ liệu cho DataSource

Trang 35

• Value Object là một đối tượng dùng để lưu trữ thông tin thể hiện của tương ứng một record trong bảng dữ liệu Với mỗi một bảng dữ liệu ta nên có một lớp DTO

4.3.3 Mẫu Dynamic Factory

Áp dụng quy tắc “trừu tượng đặt trong code và chi tiết đặt trong metadata”

và mẫu Factory Method, tôi sử dụng mẫu Dynamic Factory [13] để giải quyết vấn

đề tạo/thay đổi một đối tượng khi đang chạy chương trình bằng cách sử dụng thông tin được lưu trữ trong metadata

Trước khi trình bày mẫu thiết kế Dynamic Factory, tôi trình bày tổng quát về mẫu Factory Method

4.3.3.1 Mẫu Factory Method

Factory Method [5] là một mẫu thiết kế hướng đối tượng nhằm giải quyết

vấn đề tạo một đối tượng mà không cần thiết chỉ ra một cách chính xác lớp nào sẽ được khởi tạo Factory method giải quyết vấn đề này bằng cách định nghĩa một phương thức cho việc tạo đối tượng, và các lớp con thừa kế có thể cài đặt lại để chỉ

rõ đối tượng nào sẽ được tạo

Áp dụng: mẫu Factory Method thường được áp dụng khi

• Một lớp không tham gia vào lớp tạo đối tượng

• Một lớp mong muốn lớp con xác định đối tượng mà nó tạo ra

• Lớp giao trách nhiệm cho một trong các lớp con giải quyết và bạn muốn lớp đó cài đặt lại

Cấu trúc mẫu:

Hình 4-5 : Mẫu Factory Method

Trang 36

Các thành phần trong hình 4-8 được mô tả chi tiết như sau:

• Product: Định nghĩa giao diện/lớp đối tượng mà factory method tạo ra

• ConcreteProduct: Cài đặt giao diện/Kế thừa lớp Product

• Creator:

o Khai báo factory method, trả về đối tượng thuộc kiểu Product

o Có thể gọi factory method để tạo đối tượng Product

o ConcreteCreator: cài đặt lại factory method, trả về đối tượng thuộc kiểu ConcreteProduct

Thuận lợi và hạn chế:

• Thuận lợi là đối tượng trả về của factory method là con trỏ đến Product, do

đó mà hàm sản xuất có thể trả về bất kỳ đối tượng nào Điều này loại bỏ việc phải tạo lập một cách trực tiếp một ConcreteProduct trong code, vốn làm hạn chế sự linh động khi sửa đổi chương trình (tight-coupling)

• Hạn chế là mỗi khi cần tạo một đối tượng mới ta phải kế thừa lại lớp Creator

và cài đặt phương thức tạo lập

4.3.3.2 Mẫu Dynamic Factory - cải tiến của mẫu Factory Method

Ý nghĩa: N hằm giải quyết vấn đề tạo/thay đổi một đối tượng khi đang chạy

chương trình bằng cách sử dụng thông tin được lưu trữ trong metadata

Cấu trúc mẫu:

Hình 4-6 : Mẫu Dynamic Factory - cải tiến của mẫu Factory Method

Ngày đăng: 09/10/2014, 21:22

HÌNH ẢNH LIÊN QUAN

Bảng 2-1: Phân loại mẫu thiết kế [5] - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Bảng 2 1: Phân loại mẫu thiết kế [5] (Trang 13)
Hình 3-1 : Một số form tìm kiếm theo chủ đề việc làm [10] - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 3 1 : Một số form tìm kiếm theo chủ đề việc làm [10] (Trang 25)
Hình 3-2: Minh họa Visual Block Tree, và canh lề các mục dữ liệu - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 3 2: Minh họa Visual Block Tree, và canh lề các mục dữ liệu (Trang 27)
Hình 3-3: Mẫu đánh nhãn form - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 3 3: Mẫu đánh nhãn form (Trang 28)
Hình 4-1 : Biểu đồ hoạt động của người sử dụng - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 4 1 : Biểu đồ hoạt động của người sử dụng (Trang 30)
Hình 4-2 : Kiến trúc hệ thống hỗ trợ rút trích thông tin từ web jn theo chủ đề - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 4 2 : Kiến trúc hệ thống hỗ trợ rút trích thông tin từ web jn theo chủ đề (Trang 31)
Hình 4-3: Mô hình MVC - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 4 3: Mô hình MVC (Trang 33)
Hình 4-4: Mẫu Data Access Object - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 4 4: Mẫu Data Access Object (Trang 34)
Hình 4-5 : Mẫu Factory Method - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 4 5 : Mẫu Factory Method (Trang 35)
Hình 4-6 : Mẫu Dynamic Factory - cải tiến của mẫu Factory Method - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 4 6 : Mẫu Dynamic Factory - cải tiến của mẫu Factory Method (Trang 36)
Hình 4-7: Mẫu Abstract Factory - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 4 7: Mẫu Abstract Factory (Trang 39)
Hình 4-8: Mẫu Strategy - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 4 8: Mẫu Strategy (Trang 41)
Bảng 5-1: Minh họa các thuộc tính chung theo chủ đề Việc làm - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Bảng 5 1: Minh họa các thuộc tính chung theo chủ đề Việc làm (Trang 43)
Hình 5-1: Giao diện của ứng dụng web dành cho người sử dụng - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 5 1: Giao diện của ứng dụng web dành cho người sử dụng (Trang 44)
Hình 5-2: Giao diện chính của công cụ quản lý - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 5 2: Giao diện chính của công cụ quản lý (Trang 44)
Hình 5-3: Giao diện quản lý các thuộc tính chung - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 5 3: Giao diện quản lý các thuộc tính chung (Trang 45)
Hình 5-4: Giao diện quản lý các trang web  Đối với người dùng: - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 5 4: Giao diện quản lý các trang web Đối với người dùng: (Trang 45)
Hình 5-5 : CSDL lưu thông tin chủ đề và trang web jn  5.2.3  Tổ chức lưu trữ thông tin cấu hình - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 5 5 : CSDL lưu thông tin chủ đề và trang web jn 5.2.3 Tổ chức lưu trữ thông tin cấu hình (Trang 48)
Hình 5-6: Sơ đồ lớp thành phần điều hướng xử lý yêu cầu - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 5 6: Sơ đồ lớp thành phần điều hướng xử lý yêu cầu (Trang 49)
Sơ đồ lớp khi áp dụng như sau: - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Sơ đồ l ớp khi áp dụng như sau: (Trang 49)
Hình 5-8: Mẫu Abstract Factory cho thành phần rút trích thông tin từ web jn - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 5 8: Mẫu Abstract Factory cho thành phần rút trích thông tin từ web jn (Trang 52)
Hình 5-9: Sơ đổ lớp áp dụng mẫu thiết kế Strategy - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
Hình 5 9: Sơ đổ lớp áp dụng mẫu thiết kế Strategy (Trang 56)
Hình A-1: Quá trình truy cập form - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
nh A-1: Quá trình truy cập form (Trang 66)
Hình A-1 mô tả quá trình truy cập nội dung  các trang web Nn bên dưới các  form.  N guời  dùng  cần  truy  cập  form,  điền  các  thông tin  hợp  lệ,  gửi  đến  server  và  nhận kết quả trả về - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
nh A-1 mô tả quá trình truy cập nội dung các trang web Nn bên dưới các form. N guời dùng cần truy cập form, điền các thông tin hợp lệ, gửi đến server và nhận kết quả trả về (Trang 66)
Hình C-1: Một số trang tìm kiếm việc làm - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
nh C-1: Một số trang tìm kiếm việc làm (Trang 70)
Bảng C-2: Bảng tổng kết thuộc tính chung chủ đề Việc làm - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
ng C-2: Bảng tổng kết thuộc tính chung chủ đề Việc làm (Trang 72)
Bảng C-1: Bảng thuộc tính thông dụng chủ đề việc làm  B4: Kết quả cuối cùng: - nghiên cứu mẫu thiết kế hướng đối tượng  áp dụng xây dựng ứng dụng hỗ trợ rút trích thông tin từ web
ng C-1: Bảng thuộc tính thông dụng chủ đề việc làm B4: Kết quả cuối cùng: (Trang 72)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w