MỤC LỤC
TÓM TẮT NỘI DUNG 1
LỜI NÓI ĐẦU 5
Bối cảnh chung 5
So sánh giá cả 5
Mục đích đề tài 6
Bố cục khóa luận 6
Chương 1 KHẢO DUYỆT WEB VỚI JAVA 9
1.1 Tìm hiểu về HTTP Request 9
1.2 Tìm hiểu về gói Bot-Package 10
1.3 Sử dụng gói thư viện Swing cho việc phân tích cú pháp HTML 13
Chương 2 KHẢO SÁT CÁC WEBSITE BÁN HÀNG Ở VIỆT NAM 15
2.1 Giới thiệu 15
2.2 Bố trí mục tìm kiếm 17
2.3 Hình thức tìm kiếm 17
2.3.1 Tìm kiếm đơn giản 17
2.3.2 Tìm kiếm chi tiết: 17
2.3.3 Tìm kiếm theo danh mục 18
2.4 Nhận biết mục tìm kiếm 19
2.4.1 Cách khảo sát tìm kiếm 19
2.5 Trình bày của Website khi tìm thấy hoặc không tìm thấy sản phẩm 20
2.5.1 Tổ chức chung 20
2.5.2 Phân cách các sản phẩm 21
2.5.3 Đơn vị mô tả sản phẩm 22
2.6 Kết luận 22
Chương 3 THIẾT KẾ TÁC TỬ TRÍCH RÚT THÔNG TIN 23
3.1 Giới thiệu 23
3.2 Kiến trúc của hệ thống trích rút thông tin 24
3.3 Chương trình học 26
3.3.1 Xác định mẫu biểu tìm kiếm 27
3.3.2 Lấy ra đơn vị miêu tả sản phẩm 28
3.3.3 Xác định giá trị của các thuộc tính sản phẩm 37
3.4 Trình quản lý thuật ngữ 37
3.4.1 Giới thiệu 37
3.4.2 Xây dựng giao diện nhập thuật ngữ 38
3.4.3 Mở rộng thuật ngữ bằng cấu trúc cây 39
3.5 Kết luận 40
Chương 4 PHÁT TRIỂN HỆ THỐNG SO SÁNH 41
GIÁ CẢ TRỰC TUYẾN 41
4.1 Mô hình tổng quát 41
4.2 Thiết kế tác tử 42
4.3 Thiết kế Website 46
4.3.1 Mô tả Website 46
4.3.2 Cấu trúc Website 46
4.3.3 Hoạt động của Website: 47
4.4 Cơ sở dữ liệu 48
4.5 Hướng dẫn cài đặt hệ thống thực nghiệm Website so sánh giá cả 52
4.5.1 Cài đặt trình biên dịch JDK và trình chủ Web Tomcat 52
4.5.2 Biên dịch và chạy ứng dụng 54
4.6 Kết luận 57
KẾT LUẬN 58
DANH MỤC TÀI LIỆU THAM KHẢO 60
61 trang |
Chia sẻ: lethao | Lượt xem: 1995 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Khóa luận Xây dựng hệ thống so sánh thông tin giá cả trực tuyến, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
m thì mới có mục tìm kiếm hiện lên. Trang chủ chỉ nêu lên các thông tin về một vài sản phẩm tiêu biểu của hãng, các thông tin này được nêu đầy đủ: Loại mặt hàng, thông số kĩ thuật, giá cả, bảo hành. Nói chung là việc không hỗ trợ mục tìm kiếm buộc người dùng tìm kiếm thêm một bước nữa và vất vả hơn rất nhiểu khi muốn tìm ra đúng sản phẩm mình cần.
Hình thức tìm kiếm
Tìm kiếm đơn giản
Đó là những trang chỉ có một textbox để người dùng gõ vào đó với nội dung là sản phẩm cần tìm. Đại đa số tất cả các Website đều tổ chức mục tìm kiếm như vậy.
Hình 2-1 Mục tìm kiếm đơn giản (
Một số trang cũng chỉ tìm kiếm đơn thuần khác như:
,
Tìm kiếm chi tiết:
Thông thường tại các Website, bên cạnh mục tìm kiếm đơn giản đều có mục tìm kiếm nâng cao hay còn gọi là tìm kiếm chi tiết. Đây là phần mở rộng hơn so với khả năng tìm kiếm ở phần trên. Tức là phần tìm kiếm ngoài một hộp textbox để người dùng nhập vào còn có một số lựa chọn khác do nhà cung cấp đưa ra.
Hình 2-2 Tìm kiếm chi tiết(
Tương tự:
Tìm kiếm chi tiết giới hạn phạm vi tìm kiếm nên đôi khi kết quả trả về có thể là không thấy so với tìm kiếm đơn giản, vì cùng một chủng loại nhưng phạm vi giá tìm kiếm lại không trùng với giá mà cửa hàng có.
Tìm kiếm nâng cao thật ra đòi hỏi người dùng phải có một sự hiểu biết nhất định và còn phải có cách tìm kiếm hợp lý mới tìm ra sản phẩm theo mong muốn.
Còn có một kiểu nữa tạm xếp vào loại này, đó là tìm kiếm theo phân loại về sản phẩm (Ví dụ: sách, đĩa ca nhạc,...) và gõ vào tên sản phẩm cần tìm.
Trang là một ví dụ về loại này.
Tìm kiếm theo danh mục
Đây là loại tìm kiếm mà chúng ta chỉ có thể lựa chọn khi tìm kiếm. Họ cung cấp cho ta một danh sách tên các sản phẩm và ta phải chọn trong danh sách đó.
Hình 2-3 Tìm kiếm theo danh mục(
Tiêu biểu cho loại này là Đây là Website được đánh giá là rất khoa học cho việc tìm kiếm. Nó hạn chế thời gian tìm của ta bằng cách cung cấp sẵn tên các sản phẩm có trong CSDL. Ứng với mỗi sản phẩm ( ví dụ như Nokia) thì lại có một danh sách bên cạnh giới thiệu về các chủng loại của sản phẩm đó ( ví dụ như 6610,6610i...của Nokia). Nó còn cung cấp cho ta khả năng tìm kiếm theo giá cả lớn nhất và nhỏ nhất giới hạn được.
Tương tự:
Nhận biết mục tìm kiếm
Với mục tìm kiếm đơn thuần, thường thì có các từ sau hay được sử dụng:
“Tìm kiếm”, “TÌM KIẾM”, “search” và các hình ảnh như : nút nhấn, biểu tượng “Go”, “Search” v..v hay kèm theo để làm button với tên gọi thường gặp: “go.gif” , “go_button.gif”, “go4.gif” , “search.gif”.
Với mục tìm kiếm mở rộng, ngoài các từ khóa trên có thêm một dòng hướng dẫn như “ tìm kiếm mở rộng”, “ tìm kiếm chi tiết”, “tìm kiếm nâng cao”, “ tìm theo các thông tin khác”, “ advanced search”v..v.. Đó là một đường link và nó dẫn tới một trang khác. Trang này hướng dẫn tìm kiếm với một số từ khóa hay gặp là :”từ khóa” , “tên nhà sản xuất”, “giá tiền”,”tìm trong mục” v…v
Thực ra tùy thuộc vào đặc thù sản phẩm của từng cửa hàng kinh doanh mà phần này sẽ hỗ trợ thế nào. Các công ty máy tính, hàng điện tử thường tìm kiếm nâng cao với sản phẩm có tên là gì, nhà sản xuất là ai, trong phần nào của máy móc và giá thành có giới hạn là gì?
(Có thể xem xét tại một số trang như :
, , , ta đều thấy như vậy. )
Nhưng với một công ty khác và với mặt hàng khác thì họ lại không chọn theo các tiêu chí như vậy. Ví dụ: thì chỉ cho tìm kiếm chi tiết với cụm từ mà người dung nhập vào và lựa chọn xem cụm từ đó thuộc về tên tác giả hay là tên sách.
Các thông tin quan trọng thường trong các thẻ mà hay được sử dụng trong các Website :
, , ,,
Cách khảo sát tìm kiếm
Nếu mục tìm kiếm có chức năng nhập thì nhập vào với cụm từ vô nghĩa để chắc chắn giá trị trả về là không tìm thấy.
Nhập vào một tên sản phẩm nào đó và giá trị trả về có thể là tìm thấy sản phẩm hoặc là không tìm thấy.
Nếu sản phẩm vẫn không được tìm thấy thì khảo sát lại trang đó và nhập vào một sản phẩm chắc chắn có trong CSDL.
Trình bày của Website khi tìm thấy hoặc không tìm thấy sản phẩm
Tổ chức chung
Cấu trúc của trang trả về khi không tìm thấy và tìm thấy sản phẩm có cấu trúc hoàn toàn giống nhau. Thường sẽ có thông báo là “Tìm thấy x sản phẩm” hoặc tương tự, với x có thể là 0 (tức là không có sản phẩm nào). Ví dụ một số Website sử dụng cách này là:
Hình 2-4: Minh họa kết quả trang tìm kiếm trả về
Cách thứ hai mà rất nhiều trang sử dụng là thông báo “Không tìm thấy sản phẩm” hoặc gần giống như thế khi kết quả truy vấn không thành công.
Khi tìm thấy sản phẩm, một trang bao gồm một danh sách các sản phẩm sẽ hiện ra. Có thể đây là nơi cuối cùng thông tin về sản phẩm được thông báo. Nhưng cũng có thể trong mỗi sản phẩm lại có một đường link để bạn vào xem xét chi tiết về sản phẩm đó. Ta có thể tìm thấy các minh họa qua một số Website sau:
khi nhập từ khóa DVD trả về một danh sách các sản phẩm mà mỗi sản phẩm còn có một đường link dẫn tới một trang tiếp theo sẽ giới thiệu kĩ hơn về sản phẩm đó.
thông báo tìm thấy số lượng sản phẩm là bao nhiêu và một danh sách sản phẩm sẽ được liệt kê bên dưới, nó cũng có một đường link dẫn tới trang có thông tin chi tiết hơn về mỗi sản phẩm.
Cách thứ ba, giả sử nếu không tìm thấy sản phẩm trong CSDL thì thông báo xuất hiện tương tự như: “Không tìm thấy trong CSDL với từ khóa x” với x là cụm từ mà người dùng nhập vào. Khi tìm kiếm có kết quả thì thông báo “Tìm thấy trong CSDL với từ khóa : x” và một loạt các danh sách sản phẩm sẽ được in ra. Có thể xem cụ thể ở các trang :
Cách thứ tư mà một số Website sử dụng đó là: khi truy vấn không cho kết quả thì trả về một trang trắng không có thông báo gì; còn khi có kết quả thì trả về một trang thì chỉ in ra danh sách các sản phẩm tìm thấy và thông tin về sản phẩm.
Ví dụ :
Nói chung dù có kết cấu các trang kết quả như thế nào thì ta thấy với mỗi Website thì các trang truy vấn dù có tìm thấy sản phẩm hay không đều cấu trúc phần header và footer giống nhau. Nội dung phần thân mới thể hiện sự khác biệt. Từ đó có thể thấy rằng nếu ta tìm kiếm tự động mà cắt bỏ được 2 phần nói trên thì thời gian tìm kiếm sẽ ngắn hơn rất nhiều.
Bây giờ, ta tập trung khảo sát vào các trang trả về có tìm thấy sản phẩm:
Phân cách các sản phẩm
Khi xem xét các trang trả về kết quả tìm thấy sản phẩm như:
với từ khóa “s506”
với từ khóa“maxtor”
với từ khóa "CPU"
với từ khóa CPU PentiumIV v..v..v
ta thấy thông tin các sản phẩm được phân phối theo chiều ngang.
Tức là các sản phẩm được lưu trong một bảng, bảng đó phân chia theo hàng ngang, mỗi một sản phẩm sẽ chiếm một phần. Phần này có thể là một dòng, hoặc là một bảng con gồm nhiều dòng. Như vậy để trích rút thông tin về một sản phẩm ta phải biết được khi nào thì phần giới thiệu về sản phẩm đó kết thúc hay ô nào là của sản phẩm nào.
Hình 2-5 Miêu tả danh sách sản phẩm trả về khi tìm kiếm
Đơn vị mô tả sản phẩm
Thuộc tính trả về của các sản phẩm thường rất phong phú và tùy thuộc vào Website đó phục vụ công việc kinh doanh gì. Nhìn chung thì chúng ta có thể tìm thấy thông tin đủ cần thiết về một sản phẩm ngay ở trang đầu tiên trả về khi tìm kiếm.
Ví dụ như khi tìm kiếm một sản phẩm là ổ cứng máy tính trên trang :
Thông tin trả về cho mỗi sản phẩm theo dạng như sau:
Hình 2-6 Đơn vị mô tả sản phẩm
Giá cả:
Giá cả là phần phức tạp. Bởi vì có rất nhiều trang không thông báo giá cả (đã nói ở trên). Một số trang khác thì dùng đơn vị:VND(Ví dụ: ) USD hay $ ( hầu hết các trang đều dùng). Các từ để chỉ giá cũng rất phong phú: giá bán, giá, price..Thường thì ta có thể tìm kiếm theo từ “giá”, “ giá bán”, "VNĐ", "đồng", "VND" hay "$".
Ví dụ:
Hình thức thông báo giá: Tên sản phẩm + số tiền + $.
Hình thức thông báo giá cả: Số tiền + VNĐ +số % VAT .
Hình thức thông báo giá: Có mục Giá : + $ + Số tiền.
Kết luận
Qua khảo sát một số Website bán hàng ở Việt Nam ta thấy mặc dù các Website này có thể thể hiện cách tìm kiếm và trả về sản phẩm khi tìm kiếm khác nhau thì chúng vẫn có những điểm chung để tác tử của ta tiến hành duyệt các Website này. Các trang nói riêng và phần tìm kiếm nói chung thường được thiết kế theo một mẫu có sẵn, có thể nhận ra chúng và phân tách chúng.
THIẾT KẾ TÁC TỬ TRÍCH RÚT THÔNG TIN
Giới thiệu
So sánh thông tin giá cả trực tuyến là một ứng dụng cần thiết và quen thuộc đối với các nước phát triển, nhưng với nước ta đây vẫn là một khái niệm còn rất mới mẻ. Trên thế giới đã có không ít các Website so sánh giá cả trực tuyến nhằm phục vụ nhu cầu mua sắm qua mạng rất lớn của người tiêu dùng. Do những ứng dụng này ra đời sớm nên còn rất thủ công và có nhiều hạn chế. Những nhà phát triển đã xây dựng chương trình bằng cách ứng với mỗi Website bán hàng trực tuyến họ lại xây dựng một tác tử riêng để trích rút thông tin giá cả cho Website đó. Rõ ràng, cách tiếp cận của họ không khả chuyển và mỗi khi có một Website mới ra đời thì lại mất công xây dựng một chương trình mới để trích rút thông tin cho Website này. Mục đích của chương này là trình bày cơ chế hoạt động của tác tử tìm kiếm và trích rút thông tin theo phương pháp học máy đề xuất bởi nhóm nghiên cứu của Yang et al. [4, 5, 6]. Đây là thuật toán tìm kiếm và trích rút thông tin giá cả mới có thể áp dụng được trên nhiều Website khác nhau.
Nếu như các hệ thống so sánh trực tuyến trước đây để trích rút được thông tin đòi hỏi người thiết kế phải đưa ra các luật trích rút thông tin, thì nay hệ thống này có khả năng tự động xây dựng lên các luật trích rút thông tin từ các Website. Một tác tử sẽ tự động tạo ra luật trích rút thông tin cho một Website cụ thể và xây dựng lên một Chương trình học cho Website đó. Trong hệ thống của chúng ta, tác tử sẽ nhận địa chỉ URL của Website mua bán trực tuyến để học cách xác định vị trí của các đơn vị miêu tả sản phẩm (khái niệm này sẽ đề cập ở phần sau). Tác tử sẽ chuyển đổi vị trí của đơn vị miêu sản phẩm này thành những luật được dùng để trích rút thông tin sản phẩm.
Hầu hết các Website bán hàng trực tuyến khác nhau đều có định dạng và cấu trúc khác nhau. Nhưng trong cùng một Website thì kết quả hiển thị của truy vấn tìm kiếm là đồng nhất. Mặc dù ta truy vấn các sản phẩm khác nhau trên cùng một Website nhưng kết quả hiện ra vẫn theo một định dạng và cấu trúc giống nhau. Trong trường hợp kết quả tìm kiếm là một danh sách các sản phẩm thì cấu trúc của nó có dạng hình 3-1.
Nếu ta coi một đơn vị miêu tả sản phẩm là một mẫu thể hiện toàn bộ thông tin về một sản phẩm tìm thấy thì như trên hình ta sẽ thấy các mẫu này được lặp đi lặp lại. Số lần lặp chính là số lượng sản phẩm tìm thấy. Đây chính là cơ sở để tác tử mua sắm có khả năng nhận biết được sản phẩm. Bằng cách tìm một mẫu lặp nhiều nhất và phân tích mẫu này thì tác tử sẽ nhận dạng được các thông tin miêu tả sản phẩm và trích rút các thông tin này một cách hiệu quả. Sau đây, chúng ta sẽ cùng tìm hiểu kiến trúc của hệ thống trích rút thông tin.
Hình 31 Tổ chức kết quả sản phẩm của Website
Kiến trúc của hệ thống trích rút thông tin
Hình 3-2 mô tả mô hình tổng quát của hệ thống trích rút thông tin. Hệ thống gồm có hai giao diện chính giúp cho người quản trị có thể tương tác với chương trình. Bây giờ chúng ta sẽ tìm hiểu chi tiêt từng thành phần của hệ thống.
Giao diện nhập URL cho phép người dùng chương trình nhập vào địa chỉ URL của Website bán hàng trực tuyến.
Giao diện nhập thuật ngữ cho phép người dùng chương trình nhập vào các thuật ngữ (từ khoá) mới để nhận biết ra các thông tin về thuộc tính sản phẩm.
Chương trình học là một tác tử có khả năng truy nhập đến các Website bán hàng trực tuyến tự động học cấu trúc của Website, định dạng của sản phẩm và tìm cách trích rút thông tin của các sản phẩm trong Website đó.
Người quản trị
Giao diện nhập URL
Giao diện nhập thuật ngữ
Chương trình học
Trình quản lý thuật ngữ
Cơ sở tri thức
Chương trình cập nhật thông tin vào CSDL
Internet
Hình 3-2: Kiến trúc của hệ thống trích rút thông tin sản phẩm
CSDL
Trình quản lý thuật ngữ có chức năng quản lý những từ khoá và cho phép nhập thêm từ khoá mới thông qua giao diện nhập thuật ngữ.
Cơ sở tri thức là những tri thức mà hệ thống thu được bằng việc kết hợp kết quả của chương trình học và trình quản lý thuật ngữ.
Chương trình cập nhật thông tin vào CSDL dùng để đọc giá trị của thuộc tính miêu tả sản phẩm và cập nhật một cách chính xác.
CSDL chứa các thông tin về sản phẩm và nhà sản xuất. Các thông tin về sản phẩm mà chương trình cập nhật thông tin vào CSDL sẽ được lưu lại một cách chính xác theo từng thuộc tính.
Nhiệm vụ chính của hệ thống là làm sao có thể trích rút được một cách chính xác thông tin của sản phẩm và cập nhật vào CSDL. Để làm được việc này thì hệ thống phải nhận dạng được mẫu biểu tìm kiếm trên Website bán hàng trực tuyến. Sau khi xác định được mẫu biểu tìm kiếm nó phải gửi truy vấn tên sản phẩm cần tìm để nhận được trang kết quả tìm kiếm là một danh sách các sản phẩm. Tiếp theo hệ thống phải có khả năng trích rút được những thông tin liên quan đến sản phẩm (phải loại bỏ các thông tin không liên quan). Cuối cùng hệ thống phải hiểu được các thuộc tính miêu tả sản phẩm như hiểu được đâu là giá, tên, hay nhà sản xuất ra sản phẩm đó và cập nhật những thông tin đó vào CSDL. Công việc này được thực hiện đối với mỗi Website và lưu thành các mẫu (template) để sau này chương trình chỉ việc lấy ra những thông tin về sản phẩm, không quan tâm đến cấu trúc của Website cũng như các trường khác.
Chương trình học
Chương trình học sẽ đi thu thập các thông tin về nơi bán hàng cũng như định dạng miêu tả sản phẩm và cấu trúc của thông tin sản phẩm được hiển thị. Chương trình học chỉ thực hiện một lần đối với mỗi Website bán hàng trực tuyến. Mô hình của giai đoạn học như hình 3-3.
Để xác định được các thông tin về nơi bán thì Chương trình học cần:
Xác định mẫu biểu tìm kiếm (địa chỉ URL của form tìm kiếm).
Lấy ra đơn vị miêu tả sản phẩm.
Xác định giá trị của thuộc tính sản phẩm.
Chương trình học
Tập từ khoá
Địa chỉ URL của nơi bán
Cửa hàng trực tuyến
Từ khóa tìm kiếm
Kết quả truy vấn
Miêu tả về giá cả, nơi bán
Hình 3-3:Minh họa giai đoạn học
Sau đây là các bước của chương trình học.
Xác định mẫu biểu tìm kiếm
Trong một Website thường có nhiều mẫu biểu (form) khác nhau. Để xác định được mẫu biểu tìm kiếm ta có hai cách :
Dựa vào số lượng Textbox
Giả sử trên một trang HTML trả về có nhiều form. Mỗi form đều chứa các cấu trúc và thuộc tính riêng của nó.
Công cụ HTMLPage và HTMLForm xác định cho ta một danh sách các form.
Đối với mỗi form, ta có thể xác định được các thuộc tính cũng như nội dung của form. Trong đó ta chú ý tới thuộc tính textbox (số lượng textbox)
Nếu form nào chỉ có duy nhất một textbox- ta xác định đó là form tìm kiếm nhanh.
Ưu điểm của phương pháp: phương pháp này nhanh, dễ cài đặt.
Nhược điểm: Trong trường hợp nếu trên trang HTML tồn tại một form khác cũng chỉ có một trường textbox (ví dụ: form Search Advance hay Email), kết quả trả về có thể không chính xác.
Dựa vào kết quả trả về
Bắt đầu tại địa chỉ URL của trang chủ của Website bán hàng trực tuyến, lấy ra tất cả các mẫu biểu ở địa chỉ này. Sau đó ta duyệt theo các liên kết (link) xuất phát từ trang chủ và lấy tất cả các mẫu biểu từ các liên kết này (chỉ lấy các mẫu biểu thuộc Website này). Cuối cùng ta sẽ thu được một tập các mẫu biểu.
Sau khi tìm được một tập các mẫu biểu, để xác định mẫu biểu nào là mẫu biểu tìm kiếm ta làm như sau: Gửi lần lượt đến các mẫu biểu này tên của một số sản phẩm thông dụng. Thông thường chỉ có mẫu biểu tìm kiếm mới trả về một danh sách các sản phẩm. Do vậy ta sẽ xác định xem mẫu biểu nào trả về kết quả xuất hiện một chuỗi các mẫu (pattern) lặp đi lặp lại thì mẫu biểu đó là mẫu biểu tìm kiếm.
Lấy ra đơn vị miêu tả sản phẩm
Thông tin sản phẩm được hiển thị ra theo rất nhiều định dạng: Dạng các file applet ( .class), file ảnh ( .jpg), file văn bản ( .html, .xml,…) và file flash. Do vậy bài toán trích rút thông tin sản phẩm là một bài toán lớn và phức tạp. Tuy nhiên phần lớn các site bán hàng trực tuyến sử dụng định dạng HTML để biểu diễn thông tin nên trong phần này chúng ta sẽ cùng tìm hiểu cách trích rút thông tin sản phẩm thể hiện dưới dạng tài liệu siêu văn bản.
Kết quả nhận được từ một Website tìm kiếm sản phẩm không chỉ có danh sách các sản phẩm tìm thấy mà còn rất nhiều thứ khác như các thông tin về nơi bán, thông tin quảng cáo, thông tin về sản phẩm bán chạy nhất, các link liên kết đến các site khác... Hay nói cách khác thông tin nhận được từ kết quả của Website tìm kiếm bao gồm phần header, body và tailer. Trong đó thông tin mà ta cần lấy nằm trong phần body. Đã có một số thuật toán trích rút thông tin sản phẩm bằng cách bỏ đi phần header và tailer sau đó lấy thông tin của các sản phẩm. Để xác định thông tin của từng sản phẩm riêng biệt thuật toán này quy định hai sản phẩm riêng biệt thường cách nhau bằng dòng trắng (). Nhưng thuật toán này cho hiệu quả không cao bởi vì có rất nhiều Website trình bày thông tin từng sản phẩm không dùng dòng trắng và công việc loại bỏ phần header và tailer thường mất nhiều thời gian. Nhằm khắc phục được những hạn chế ở trên chúng ta sẽ tìm hiểu thuật toán trích rút thông tin cải tiến.
Trước hết chúng ta tìm hiểu về PDU(Product Description Unit)- Đơn vị miêu tả sản phẩm. Một PDU miêu tả thông tin về một sản phẩm duy nhất bao gồm một số thuộc tính như tên, hãng sản xuất, giá…
Để trích được thông tin sản phẩm ta sẽ dựa vào cấu trúc của trang kết quả tìm kiếm. Trang kết quả tìm kiếm thông thường sẽ chia ra làm 2 loại sau:
- Loại 1: Các sản phẩm sẽ hiển thị theo dạng bảng 3-1:
L1
L2
…
Ln
P11
P12
…
P1n
P21
P22
…
P2n
…
…
…
….
Pm1
Pm2
…
Pmn
Bảng 3-1:Bảng thông tin hiển thị sản phẩm
Pn: Sản phẩm thứ n
Ln: Nhãn (Label n)
- Loại 2: Các sản phẩm được hiển thị theo dạng danh sách các sản phẩm:
Pn: Sản phẩm thứ n
Header
P1
P2
.
.
.
Pn
Tailer
Thuộc tính 1
Thuộc tính 2
.
.
.
Thuộc tính n
Hình 3-4: Thông tin sản phẩm hiển thị dạng danh sách
Cách trích rút:
- Đối với các Website hiển thị kết quả dạng bảng:
Ta lấy các nhãn L1, L2,…, Ln. Ứng với một sản phẩm Pi ta sẽ có các thuộc tính tương ứng là Pi1 , Pi2, …, Pin. Tập hợp các thuộc tính này chính là một PDU. Kết hợp các nhãn Lj và các thuộc tính Pij của sản phẩm Pi ta sẽ đưa ra được thông tin về sản phẩm đó.
- Đối với kết quả là một danh sách các sản phẩm:
Đây là trường hợp hay gặp nhất ở các Website bán hàng. Hình 3-4 minh họa cách thông tin sản phẩm được hiển thị. Để trích được đúng thông tin sản phẩm ta thực hiện theo các bước sau:
- Bước 1:
Ta sẽ ngắt nội dung Website này thành các dòng logic (logical line) và ghi nội dung trang kết quả tìm kiếm vào 1 file.
Nội dung của Website được ghi vào file có kết quả hiển thị như hình 3-5:
Hình 3-5: Nội dung trang HTML được in ra file sau khi phân tích
- Bước 2:
Thuật toán phân tích mỗi dòng để nhận dạng xem nó là thẻ HTML hay nội dung của Website. Ứng với mỗi một thẻ ta sẽ ánh xạ một con số mang ý nghĩa về dòng đó.
Ta chia ra làm 5 loại thẻ như bảng 3-2 (các con số là do ta chọn)
Phânloại
Số ánh xạ
Ý nghĩa
TEXT
0
Các thông tin không nhận biết được
PRICE
1
Giá của sản phẩm:Thường chứa $,USA,VNĐ,đồng... và các con số
LTAG
2
Thẻ HTML:,,…
TITLE
3
Tên hay định danh xác định sản phẩm
TTAG
8
Thẻ table như ,, ,,,
Bảng 3-2 Ánh xạ các thẻ HTML sang các số tương ứng
Hình dưới là kết quả sau khi ánh xạ các thẻ sang chỉ số của URL:
Có thể nhận thấy các PDU được đánh dấu lặp đi lặp lại liên tiếp:
Hình 3-6: Nội dung Website sau khi thực hiện ánh xạ ra chuỗi các số chỉ mục
-Bước 3:
Sau giai đoạn phân mục (bước 2), toàn bộ trang được ánh xạ bởi một chuỗi các số chỉ mục. Bây giờ thuật toán của chúng ta là tìm một mẫu lặp trong chuỗi đó. Nó trước hết tìm mẫu (pattern) của mỗi đơn vị miêu tả sản phẩm(PDU) và đếm tần số xuất hiện của mỗi mẫu riêng biệt để lấy mẫu có tần số xuất hiện nhiều nhất. Thông thường thì TITLE (nhãn, tiêu đề) bao giờ cũng đứng trước PRICE (giá). Do đó một PDU được xác định bằng cách lấy dòng bắt đầu là TITLE và dòng kết thúc là PRICE. Muốn tìm sản phẩm tiếp theo thì ta sẽ tìm dòng xuất hiện PRICE tiếp theo và quay ngược lại tìm TITLE.
Giải thuật trích rút thông tin miêu tả đơn vị sản phẩm
/***********************************************
Seq ß thứ tự dòng logic của danh mục tìm kiếm;
seqStart ß 1; /* khởi tạo vị trí cho mẫu được tìm kiếm*/
numCandPDUs ß 0; /* số lượng mẫu khác nhau */
while(true){ /* tìm PDU tiếp theo trong khi còn đúng*/
priceIndex ß findIndex(seq, seqStart, PRICE);
titleIndex ß findIndexReverse(seq, priceIndex,TITLE);
currentPDU ß substring(seq, titleIndex, priceIndex);
if(currentPDU==null) then exit();/*không thêm PDU nào*/
if(currentPDU đã tồn tại trong mảng candPDUs)
tăng biến đếm tần suất xuất hiện của PDU đó lên 1;
else {
lưu currendPDU trong mảng candPDUs;
tăng biến đếm số lượng PDU khác nhau lên 1;
} //kết thúc khối lệnh else;
seqStart ß priceIndex+1;/*điểm bắt đầu cho lần tìm kiếm lặp lại tiếp theo*/
} //kết thúc vòng lặp While;
mostFreqPDU ß thành phần trong mảng candPDUs có tần suất
xuất hiện lớn nhất
return (mostFreqPDU);
***************************************************/
Đánh giá thuật toán dựa vào phân tích kết quả thực nghiệm:
Dựa vào kết quả thực nghiệm thống kê trích rút tại một số trang:
URL
Từ khóa
PDUs xuất hiện nhiều nhất
Số PDUs xuất hiện nhiều nhất/ Số PDU tìm được
Motorola
300021
18/18
Nokia
38888022208888000088880001
31/31
siemens
3288881
6/6
Philips
3020200222202020021
11/11
LG
3288881
7/7
Pantech
38888022208888000088880001
4/4
panasonic
0 (Do thiếu thuật ngữ)
samsung
32888820288001
16/40 (Thiếu 2 so với thực tế là 18)
Bảng 3-3 Kết quả thu được từ các kết quả thực nghiệm trên các Website khác nhau
Phân tích kết quả trích rút của tác tử tại trang cho thiếu sản phẩm:
Khi tìm kiếm với từ khóa : samsung tại trang:
Hình 3-7: Vị trí và chuỗi PDU nhận được sau khi ánh xạ
Kết quả:
Hình 3-8: Tổng hợp kết quả phân tích
Từ hình 3-8 ta thấy có 40 PDU được tìm thấy và 16 PDU xuất hiện nhiều nhất là PDU có chuỗi ánh xạ:
32888820288001
Chi tiết các sản phẩm tìm thấy:
Hình 3-9: Tiêu đề và Giá sản phẩm sau khi trích rút thành công
Phân tích:
Khi so sánh các sản phẩm tìm được từ kết quả trả về và Website ta phân tích, ta thấy rằng ta chỉ trích được 16 sản phẩm so với 18 sản phẩm Website có.
Sau khi phân tích lại file chứa các dòng logic ta nhận thấy xuất hiện thẻ giữa các dòng có nội dung là PDU. Mà trực quan hơn là ở trong hình 3-10, bên cạnh nhan đề của sản phẩm ta thấy có 2 ảnh được chèn thêm là ảnh 2 chữ New. Chính vì vậy nó làm khác đi chuỗi PDU ánh xạ sản phẩm này so với chuỗi PDU được tìm thấy nhiều nhất. Do đó tác tử không thể nhận ra và trích rút được 2 mẫu này.
Hình 3-10: 2 sản phẩm không tìm thấy được do bị chèn thêm ảnh 2 chữ New
Đánh giá :
Thuật toán phân tích trích rút được ở phần lớn các trang với kết quả đúng mong đợi.
Một số trang không trích rút được do tập thuật ngữ còn ít (ví dụ giá sản phẩm hiển thị là vnđ nhưng trong tập thuật ngữ của chương trình không có, sau khi bổ sung đã trích rút tốt).
Một số trang trích rút thiếu sản phẩm do có thêm các định dạng thẻ khác (phổ biển là các thẻ ảnh).
Nhận xét:
Thuật toán đã trích rút được ở đa số các trang nhưng đôi khi vẫn bỏ sót một số sản phẩm (thường là những sản phẩm mới) nên trong tương lai cần có những cải tiến trong giải thuật để việc trích rút được linh hoạt, bớt cứng nhắc, như vậy mới có thể đảm bảo trích rút được hết các sản phẩm
Xác định giá trị của các thuộc tính sản phẩm
Sau khi lấy được mẫu đơn vị miêu tả sản phẩm, tác tử phải hiểu được đâu là giá trị của các thuộc tính miêu tả sản phẩm, đâu là các thông tin không liên quan. Bằng cách đọc các thẻ, tác tử có thể hiểu được trong thẻ này có chứa thông tin gì nhưng nó vẫn chưa nhận biết được chính xác đâu là giá trị của thuộc tính. Ở giai đoạn này, tác tử phải phân tích từng thẻ thuộc tính để lấy ra giá trị của thuộc tính đó. Hai thuộc tính quan trọng và dễ xác định giá trị nhất là giá và tên định danh xác định sản phẩm. Thông thường trước thuộc tính giá bao giờ cũng có từ khóa "giá", "giá bán"…hay các ký tự như $, USA, VND. Do vậy để xác định giá trị của giá sản phẩm ta chỉ việc đọc các con số gần các ký tự trên. Nhưng hầu hết các sản phẩm đều có nhiều thuộc tính, mỗi thuộc tính lại có nhiều từ khóa đồng nghĩa do đó để xác định được từng thuộc tính cụ thể và giá trị của các thuộc tính này tác tử còn phải dựa vào tập các từ khóa (thuật ngữ). Để xây dựng được tập các từ khóa ta phải dựa vào Trình quản lý thuật ngữ
Trình quản lý thuật ngữ
Trình quản lý thuật ngữ chứa những từ khoá giúp cho việc xác định một cách chính xác thông tin mô tả sản phẩm.
Giới thiệu
Như chúng ta đã biết một sản phẩm được bán trên nhiều Website vì thế tác tử của chúng ta phải có khả năng nhận biết được các sản phẩm có trùng nhau hay không. Hay nói các khác khi tác tử đi thu thập thông tin về giá cả nó phải biết được sản phẩm đó là sản phẩm nào, nó đã tồn tại trong CSDL chưa. Nếu sản phẩm chưa có trong CSDL thì tác tử sẽ thêm sản phẩm này vào CSDL, còn ngược l
Các file đính kèm theo tài liệu này:
- Xây dựng hệ thống so sánh thông tin giá cả trực tuyến.doc