LỜI CẢM ƠN
²
Em xin gửi lời cảm ơn chân thành tới các thầy cô trong khoa Công Nghệ Thông Tin,
gia đình và bạn bè, đã giúp đỡ em trong suốt q trình học tập cũng như thực hiện khóa
luận. Đặc biệt em xin trân trọng cảm ơn thầy giáo, Tiến sĩ Nguyễn Đại Thọ đã trực tiếp
hướng dẫn em hoàn thành khóa luận này.
Hà nội, ngày 25 tháng 05 năm 2006
Nguyễn Huy Sơn.
TĨM TẮT NỘI DUNG
²
Trên thế giới đã có nhiều Website tập hợp thông tin giá cả của nhiều chủng loại mặt
hàng khác nhau chào bán trên mạng bởi nhiều công ty kinh doanh khác nhau. Ở Việt Nam
khoảng một năm trở lại đây cũng đã bắt đầu xuất hiện một số Website như vậy. Tuy nhiên
hầu hết các Website đó cả ở Việt Nam lẫn trên thế giới đều sử dụng những tác tử khảo
duyệt và trích rút thơng tin có mức độ tự động và tính thơng minh khơng cao. Cụ thể, đối
với mỗi Website bán hàng, người phát triển phải xây dựng một bộ luật trích rút riêng cho
chương trình tác tử. Trong nghiên cứu, người ta đã đề xuất một số kỹ thuật học máy sử
dụng chỉ một tác tử nhưng có thể trích rút thơng tin từ nhiều Website có cách thức tổ chức
khác nhau. Báo cáo này nghiên cứu ứng dụng các kỹ thuật trích rút theo phương pháp học
máy để xây dựng một hệ thống so sánh thơng tin giá cả trực tuyến có tính khả biến cao.
Tính khả biến cao mà ứng dụng hướng tới là khả năng quy tụ thông tin từ một số nguồn
không hạn chế các Website sản phẩm với cùng một chương trình tác tử. Hệ thống của
chúng tơi đã cho những kết quả ban đầu rất đáng khích lệ khi thử nghiệm trên một số
Website tiêu biểu ở Việt Nam.
1
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
Tìm hiểu về HTTP Request...............................................................................................9
Tìm hiểu về gói Bot-Package..........................................................................................10
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
Giới thiệu.........................................................................................................................15
Bố trí mục tìm kiếm.........................................................................................................17
Hình thức tìm kiếm..........................................................................................................17
Tìm kiếm đơn giản.......................................................................................................17
Tìm kiếm chi tiết:.........................................................................................................17
Tìm kiếm theo danh mục.............................................................................................18
Nhận biết mục tìm kiếm...................................................................................................19
Cách khảo sát tìm kiếm................................................................................................19
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
Tổ chức chung.............................................................................................................20
Phân cách các sản phẩm...............................................................................................21
Đơn vị mô tả sản phẩm................................................................................................22
Kết luận............................................................................................................................22
Chương 3 THIẾT KẾ TÁC TỬ TRÍCH RÚT THƠNG TIN................................................23
Giới thiệu.........................................................................................................................23
Kiến trúc của hệ thống trích rút thơng tin........................................................................24
Chương trình học.............................................................................................................26
2
Xác định mẫu biểu tìm kiếm........................................................................................27
Lấy ra đơn vị miêu tả sản phẩm ..................................................................................28
Xác định giá trị của các thuộc tính sản phẩm..............................................................37
Trình quản lý thuật ngữ....................................................................................................37
Giới thiệu....................................................................................................................37
Xây dựng giao diện nhập thuật ngữ.............................................................................38
Mở rộng thuật ngữ bằng cấu trúc cây..........................................................................38
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
Mơ hình tổng qt...........................................................................................................41
Thiết kế tác tử..................................................................................................................42
Thiết kế Website..............................................................................................................46
Mơ tả Website..............................................................................................................46
Cấu trúc Website..........................................................................................................46
Hoạt động của Website:...............................................................................................47
Cơ sở dữ liệu....................................................................................................................48
Hướng dẫn cài đặt hệ thống thực nghiệm Website so sánh giá cả...................................52
Cài đặt trình biên dịch JDK và trình chủ Web Tomcat...............................................52
Biên dịch và chạy ứng dụng.........................................................................................54
Kết luận............................................................................................................................57
KẾT LUẬN..........................................................................................................................58
DANH MỤC TÀI LIỆU THAM KHẢO..............................................................................60
3
Một số thuật ngữ và chữ viết tắt được sử dụng trong đề tài
Tên thuật ngữ
Ý nghĩa
CSDL
Cơ sở dữ liệu
Database
Cơ sở dữ liệu
Link
Liên kết
PDU
Product Description Unit- Đơn vị miêu tả
sản phẩm
URL
Uniform Resource Locator
URI
Uniform Resource Identifier
4
LỜI NÓI ĐẦU
Bối cảnh chung
Từ những năm cuối thể kỉ 20, nền kinh tế thế giới đã có nhiều bước tiến lớn. Nó kéo
theo nhu cầu mua sắm của con người cũng tăng lên đáng kể. Các hình thức tổ chức kinh
doanh như siêu thị, cửa hàng, đại lý,… ngày càng đại chúng, ngày càng phong phú về chất
lượng sản phẩm, đa dạng về hình thức phục vụ. Nhu cầu của con người ngày càng tăng
nhưng quỹ thời gian của mỗi người dành cho mua sắm ngày càng eo hẹp.
Vấn đề đặt ra là người tiêu dùng muốn tìm thấy sản phẩm có chất lượng với giá cả
phải chăng trong khi không tốn nhiều công sức, thời giờ đến thăm từng cửa hàng lục tìm
từng sản phẩm. Đứng dưới góc độ người tiêu dùng thì như vậy, cịn dưới góc độ của người
kinh doanh thì đương nhiên họ muốn quảng bá sản phẩm tới càng nhiều người càng tốt, làm
sao để có thật nhiều khách và bán được thật nhiều hàng.
Cả người tiêu dùng và người kinh doanh đều muốn hướng tới một hình thức kinh
doanh nào đó thỏa mãn cả đôi bên. Trong thời đại bùng nổ của công nghệ thơng tin, hình
thức mua bán trực tuyến đã ra đời, mau chóng tìm được chỗ đứng và khơng ngừng phát
triển. Với hình thức mua bán mới này, người tiêu dùng không cần phải đi đâu xa, chỉ cần
ngồi một chỗ truy cập đến các Website bán hàng để mua sắm theo nhu cầu. Hầu hết các
Website mua bán trực tuyến hiện nay đều cung cấp chức năng tìm kiếm, giúp tiết kiệm rất
nhiều thời gian cho người dùng.
Tuy nhiên, với sự gia tăng chóng mặt của các Website bán hàng hay quảng cáo sản
phẩm, người tiêu dùng không biết nên bắt đầu từ đâu. Cùng một sản phẩm có khi có đến
hàng trăm Website bày bán với giá cả chênh lệch nhau. Tâm lý chung của người tiêu dùng
là muốn mua được sản phẩm có chất lượng với giá cả thấp nhất, nhưng nếu đi đến từng
Website để so sánh thì sẽ mất rất nhiều thời gian.
So sánh giá cả trực tuyến
Nắm bắt nhu cầu của người tiêu dùng, trên thế giới đã có khá nhiều Website so sánh
thơng tin giá cả được xây dựng [12]. Riêng ở Việt Nam, theo khảo sát của chúng tôi nếu
như cách đây một năm cịn chưa có Website nào như vậy thì cho đến nay đã có một xuất
hiện ở địa chỉ [13]. Các Website so sánh giá cả là nơi tập hợp thông tin về nhiều chủng loại
mặt hàng khác nhau thu thập được từ nhiều nguồn trực tuyến khác nhau. Chúng cho phép
người dùng chọn lựa xem mua tại nơi nào là tốt nhất. Hầu hết các Website so sánh giá cả
đều có chức năng tìm kiếm theo tên và thơng tin sản phẩm.
Q trình thu thập thơng tin giá cả được tự động hóa ở những mức độ khác nhau.
Mức độ thấp nhất là dữ liệu được nhập hoàn tồn bằng tay thơng qua quan sát bằng mắt
trên một số Website bán hàng nhất định. Cao hơn một mức, người ta sử dụng những tác tử
khảo duyệt và trích rút thơng tin, nhưng vì các Website khác nhau có cách thức tổ chức
khác nhau nên đối với mỗi Website phải xây dựng một bộ luật trích rút riêng cho chương
5
trình tác tử thơng qua khảo sát trước bằng mắt. Những tác tử này được gọi chung là tác tử
so sánh giá cả (comparison shopping agent). Cơng việc trích rút thông tin đạt được mức độ
tự động cao nhất khi tác tử so sánh giá cả có thể tự động xây dựng các bộ luật trích rút phù
hợp với mỗi Website không cần tới sự can thiệp của người lập trình. Những nghiên cứu
theo hướng này bao gồm các cơng trình [1, 2, 4, 5, 6, 7, 8], trong đó hiệu quả nhất hiện nay
là loại tác tử có khả năng học máy do nhóm tác giả Hàn Quốc Yang et al. đề xuất trong các
tài liệu [4, 5 6].
Tác tử trích rút thơng tin theo phương pháp học máy hoạt động độc lập với thể loại
sản phẩm và hoàn toàn tự động. Chỉ cần biết địa chỉ trang chủ một cửa hàng trực tuyến, nó
sẽ tự động học cách trích rút thơng tin sản phẩm từ Website đó, trong đó có thơng tin quan
trọng nhất là giá cả sản phẩm. Loại tác tử này có một số chức năng nổi trội như sau:
- Tự động học
- Khơng địi hỏi phải hiểu ngôn ngữ tự nhiên
- Dựa trên cơ sở của ngơn ngữ HTML
Q trình tự động học của tác tử giúp cho nó có khả năng phân tích các mơ tả sản
phẩm và nhận biết được các thuộc tính sản phẩm như giá cả hay chủng loại của sản phẩm.
Nó thực hiện điều này mà khơng cần phải qua những khâu xử lý ngôn ngữ tự nhiên rất
phức tạp, và chỉ yêu cầu một ít kiến thức về các thể loại sản phẩm khác nhau mà thơi. Nó
trích rút thông tin từ các cửa hàng trực tuyến thông qua sự kết hợp của các kỹ thuật tìm
kiếm theo kinh nghiệm, tương hợp mẫu và học suy diễn.
Mục đích của khóa luận
Khóa luận hướng tới các mục tiêu như sau:
• Nghiên cứu thuật tốn trích rút thơng tin theo phương pháp học máy.
• Phát triển bằng ngơn ngữ lập trình Java tác tử so sánh giá cả có khả năng trích rút
thơng tin thơng minh theo cơ chế học máy đã nghiên cứu.
• Xây dựng một hệ thống có khả năng giúp người tiêu dùng trong việc khảo sát và
chọn sản phẩm một cách tập trung với chức năng quy tụ thơng tin từ vơ số nguồn
khác nhau.
• Thử nghiệm tác tử với những Website tiêu biểu ở Việt Nam, qua đó đánh giá hiệu
quả của chương trình trích rút thơng tin và từ đó thực hiện những cải tiến cần thiết
về mặt giải thuật và cài đặt.
Kết quả
• Thiết kế được hệ thống hệ thống tương đối hoàn chỉnh các chức năng bao gồm các
công việc: Thiết kế tác tử, Website và cơ sở dữ liệu.
• Tập trung cài đặt và thử nghiệm thành cơng thành phần chính là tác tử trích rút
thơng tin sản phẩm, áp dụng cho những Website bán hàng tại Việt Nam.
6
• Xây dựng được một hệ thống thử nghiệm đơn giản so sánh giá cả từ một số Website
bán hàng khác nhau.
Kết quả đạt được tuy còn ở mức hạn chế nhưng về cơ bản đã thực hiện được mục
đích đặt ra của khóa luận.
Bố cục khóa luận
Chương 1 trình bày các kiến thức cơ sở về Java để thực hiện đề tài. Nhìn chung, đề
tài này thực hiện với hai nội dung chính. Nội dung thứ nhất là xây dựng được một Website
thể hiện được so sánh về giá cả của sản phẩm từ nhiều Website khác nhau. Nội dung thứ
hai là thực hiện trích rút thơng tin sản phẩm từ các Website bằng tác tử thu thập thông tin
giá cả. Cơ chế của tác tử thu thập thông tin giá cả sẽ được đề cập đến ở Chương 3. Hai nội
dung này nối kết với nhau bằng một CSDL. Chức năng của CSDL là lưu trữ thông tin sản
phẩm về tên chủng loại ,giá bán và các thông tin khác.
Website xây dựng được có phần tìm kiếm để người dùng nhập vào từ khóa tìm
kiếm. Với từ khóa này, hệ thống sẽ tự tìm trong CSDL xem có sản phẩm nào là phù hợp
với từ khóa mà người dùng nhập vào hay khơng. Nếu có thì sẽ có một trang kết quả trả về
trong đó nêu lên các đặc tính của sản phẩm, nơi bán và đặc biệt là nêu bật được giá cả bán
ở từng nơi.
Để sự tìm kiếm của người dùng có kết quả như mong đợi thì cần phải có sự thể hiện
từ hai phía. Phía khách hàng phải có cách nhập từ khóa hợp lý. Phía hệ thống cần phải
thường xun cập nhật thơng tin, thêm sản phẩm mới.
Để xây dựng được hệ thống phải khảo sát các Website bán hàng. Nó vừa là sự kiểm
chứng cho lý thuyết được đặt ra có phù hợp với thực tiễn hay không vừa là để phục vụ cho
việc cập nhật các Webiste sau này. Với mong muốn trước tiên là ứng dụng đề tài này cho
các Webiste ở Việt Nam nên chương 2 của báo cáo này sẽ trình bày phần khảo sát về các
Website kinh doanh ở Việt Nam.
Chương 3 trình bày việc thiết kế tác tử trích rút thơng tin.
Chương 4 của báo cáo này sẽ trình bày chi tiết cách triển khai trên thực tế. Phần thứ
nhất là tìm hiểu và làm rõ từ các vấn đề kỹ thuật cơ sở (như sử dụng ngôn ngữ Java, sử
dụng các lớp Java xây dựng sẵn) để thiết kế tác tử so sánh giá cả (Tự động tìm form tìm
kiếm, trích rút thơng tin sản phẩm). Phần thứ hai sẽ trình bày ý tưởng xây dựng một
Website so sánh giả cả và cơ sở dữ liệu để hoàn thành lên một ứng dụng hoành chỉnh
Sau cùng là tích hợp các kỹ thuật để cài đặt và triển khai một hế thống so sánh giá cả
đơn giản.
Vì đây là một lĩnh vực cịn khá mới mẻ ở Việt Nam và cũng là một bài tốn khó đòi
hỏi sự nghiên cứu kỹ càng, sự thực nghiệm và học hỏi nghiêm túc. Trước mắt, chương trình
mới chỉ giới hạn tìm kiếm trên các Webiste ở Việt Nam. Thơng tin về sản phẩm tìm kiếm
cũng có sự hạn chế đến mức cơ bản. Nhưng chắc chắn đề tài sẽ khơng dừng lại ở đó mà
7
cịn tiếp tục hồn thiện hơn, nhiều tính năng hơn. Phần kết luận sẽ đề ra phương hương phát
triển của đề tài này.
Tóm lại, qua 5 chương:
Chương 1: Khảo duyệt Web với Java
Chương 2: Khảo sát các Website bán hàng ở Việt Nam
Chương 3: Thiết kế tác tử trích rút thơng tin
Chương 4: Phát triển hệ thống so sánh thông tin giá cả trực tuyến
KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN
Người đọc sẽ có một cách tiếp cận từ tổng thể đến cụ thể về một công nghệ mới:
Xây dựng tác tử so sánh giá cả và ứng dụng vào Website phục vụ tìm kiếm
8
Chương 1 KHẢO DUYỆT WEB VỚI JAVA
Đề tài sử dụng ngơn ngữ lập trình Java vì Java hỗ trợ rất mạnh về lập trình ứng dụng
mạng với các lớp thư viện socket giúp đơn giản hóa q trình kết nối và chuyển dữ liệu trên
mạng. Với Java ta có thể lập trình trên rất nhiều giao thức TCP/IP, UDP, FTP, Telnet và
HTTP.
Tìm hiểu về HTTP Request
Một thơng điệp do phía Client gửi tới Server được gọi là HTTP Request. Dòng đầu
tiên của HTTP Request gồm có 3 phần:
• Tên phương thức yêu cầu (GET, HEAD, POST,...)
• Đường dẫn cục bộ của tài nguyên (URI)
• Phiên bản giao thức đang sử dụng (HTTP/1.0, HTTP/1.1)
Ví dụ:
GET /reports/sales/index.html HTTP/1.1
GET là tên của phương thức sử dụng để yêu cầu tài nguyên,
/reports/sales/index.html là tài nguyên URI và HTTP/1.1 là phiên bản giao thức
HTTP đang sử dụng.
Hai phương thức phổ biến của HTTP Request là:
• HTTP GET : yêu cầu một tài nguyên và chỉ gửi được một số lượng dữ liệu giới hạn
tới web server. Những dữ liệu phức tạp sẽ được chuyển tiếp. Thông thường phương
thức này được sử dụng cho dữ liệu là trang HTML. Một yêu cầu GET sử dụng cho
một tài ngun có thực nếu có một vài hay khơng tham số nào được truyền. Nếu có
tham số địi hỏi, một chuỗi truy vấn được gắn thêm vào địa chỉ URI.
Ví dụ :
GET /servlet/helloWorld?name=john&age=22 HTTP/1.1
Trong đó, name=john&age=22 là một truy vấn. Nó bao gồm tên và giá trị tương
ứng được phân cách bằng kí tự: &
• HTTP POST: gửi dữ liệu tới web server và cho phép web server gửi dữ liệu trở lại.
Phương thức này chuyển dữ liệu tới tài nguyên thực được định danh bởi URI. Khối
dữ liệu được gửi trong phần thân của thông điệp.
Các trang HTML sử dụng POST để Submit các form dữ liệu.
Khác với GET, các tham số được đặt trong phần thân của thơng điệp, nó khơng
được hiển thị như là một phần của yêu cầu URI.
9
Tìm hiểu về gói Bot-Package
Gói thư viện Bot là tập hợp các lớp Java được xây dựng nhằm hỗ trợ phát triển
Spider, Bot... Ta sẽ sử dụng gói thư viện này để xây dựng một lớp cho phép xác định một
form tìm kiếm trên 1 trang HTML và truyền từ khóa qua form đó để lấy về một URL. Sau
đây là một số phương thức của các lớp mà ta sẽ sử dụng trong đề tài:
Lớp HTTP
Cung cấp các công cụ điều khiển:
• Cookies
• The referrer tag
• HTTP User Authentication
• Automatic Redirection
• Parsing headers
public String getBody()
Phương thức này trả về một nguyên bản trả từ một HTTP Request. Nếu kết quả trả
về dưới dạng nhị phân thì nó sẽ được chuyển sang dạng chuỗi (String)
public CookieParse getCookie(String name)
Phương thức trả về những cookie độc lập với tên, kiểu trả về là CookieParse
public AttributeList getCookies()
Phương thức này trả về danh sách các thuộc tính là nội dung của các cookie hiện tại
được lưu giữ bởi HTTP session.
public int getTimeout()
Phương thức này lấy về thời gian timeout được định nghĩa cho đối tượng HTTP,
thời gian được tính theo dạng milliseconds.
public String getURL()
Phương thúc này trả về URL được yêu cầu bởi phương thức send() lần cuối cùng
public void send(String url,String post)
throws java.net.UnknownHostException,java.io.IOException
Phương thức này được sử dụng để gửi một HTTP Request và nhận lại kết quả trả về
từ phía server. Nó có thể được gọi lại nhiều lần trên cùng đối tượng HTTP để chuyển qua
những trang kế tiếp nhau.
public void setTimeout(int i)
Phương thức này sẽ thiết lập thời gian timeout cho một HTTP Request. Thời gian
timeout được tính theo milliseconds.
10
public void setURL(String u)
Phương thức này thiết lập thuộc tính URL, để chuyển tới URL rõ ràng có thể gọi
phương thức với tham số là URL
Lớp HTTPSocket
Lớp HTTP cung cấp các thuộc tính và phương thức thuận lợi cho việc tạo một kết
nối HTTP. Lớp HTTP là một lớp trừu tượng . Lớp HTTPSocket là thể hiện của lớp HTTP.
Lớp này giao tiếp với web server sử dụng sockets.
Thể hiện của đối tượng HTTP sử dụng lớp HTTPSocket được khai báo:
HTTP http = new HTTPSocket();
Lớp Attribute
Lớp Bot cung cấp một số lớp sử dụng để miêu tả HTTP header và cookies bao gồm
lớp Attribute. Lớp này lưu giữ một danh sách thuộc tính theo từng cặp tên- giá trị và chỉ
một giá trị ứng với một tên là được cho phép. Khi ta yêu cầu một danh sách từ các header
hay cookies ta sẽ lấy về được một danh sách các thuộc tính.
Một số phương thức trong lớp Attribute:
public Attribute()
Phương thức này khởi tạo một đối tượng Attribute với chuỗi tên và giá trị là rỗng.
public Attribute(String name,String value)
Phương thức này khởi tạo đối tượng Attribute với tên và giá trị đuợc truyền vào.
public Object clone()
Phương thức này tạo một bản sao đối tượng Object
public String getName()
Phương thức lấy tên của đối tượng Attribute
public String getValue()
Phương thức lấy giá trị của đối tượng Attribute
public void setName(String name)
Phương thiết lập tên cho đối tượng Attribute
public void setValue(String value)
Phương thiết lập giá trị cho đối tượng Attribute
Lớp HTMLPage
Lớp HTMLPage được sử dụng để đọc một trang HTML theo một địa chỉ URL được
chỉ ra và hỗ trợ việc trích rút các thơng tin hữu ích.
11
Lớp HTMLPage sử dụng phương thức constructor để xây dựng và định nghĩa đối
tượng HTML object - đối tượng này được sử dụng trong tất cả các giao tiếp.
public HTMLPage(HTTP http)
Để mở một kết nối và nhận một trang HTML, luôn bắt đầu với mã:
HTTPSocket http = new HTTPSocket();
HTMLPage = new HTMLPage(http);
page.open(_url,null);
public void open(String url,HTMLEditorKit.ParserCallback
callback)
throws IOException,BadLocationException
Trong đó _url là địa chỉ của Website được chỉ ra. Sau khi thực hiện phương thức
open() của đối tượng page, ta có thể xác định các thành phần trong trang HTML : forms,
links.
Lớp HTTPPage cung cấp một số phương thức lấy về danh sách các ảnh, các link hay
các form được tìm thấy khi đọc một trang HTML:
public Vector getImages()
public Vector getForms()
public Vector getLinks()
Lớp HTMLForm
Lớp này dùng để xác định form và các thuộc tính - được xây dựng nhằm nắm giữ
nội dung và điền các giá trị cho form.
Với một Website đã được download và được phân tích, phải gắn một đối tượng
HTMLForm tương ứng để tìm thấy một form trong trang. Điều này thực hiện nhờ việc sử
dụng phương thức getForms() của đối tượng HTMLPage - phương thức trả về một đối
tượng Vector chứa danh sách các form tìm thấy trên Website:
HTMLForm form = (HTMLForm) page.getForms().elementAt(0);
Đối tượng HTMLForm nắm giữ các phương thức và các cấu trúc giúp chỉ ra các
thuộc tính của Form action, method, các thuộc tính textbox, radio,…
public String getAction()
Phương thức này trả về action - địa chỉ url mà dữ liệu của form được POST hoặc
GET lên.
public String getMethod()
Phương thức này trả về phương thức của form thực hiện
12
Xác định Link và các thuộc tính
Sử dụng phương thức getLinks() của đối tượng HTMLPage - trả về một đối
tượng Vector chứa danh sách các Links trên trang HTML.
Link link = (Link) page.getLinks().elementAt(k);
Các phương thức của đối tượng Link:
link.getPromt(): trả về nội dung nằm giữa 2 cặp thẻ <a> và </a>
link.getHREF(): trả về địa chỉ URL mà link trỏ tới.
link.getALT(): trả về thuộc tính alt.
Kĩ thuật Posting Form
Request HTTP Post là một cách thức phổ biến để chuyển thông tin lên Internet. Khi
sử dụng POST, có thể gửi một lượng dữ liệu lớn từ trình duyệt lên Server. Thơng thường
thì dữ liệu trên form là do người dùng điền vào và sau đó nhấn Submit để đẩy dữ liệu đi.
Kĩ thuật Posting Form ra đời nhắm đến mục tiêu hoạt động tương tự như vậy, nhưng
hoạt động hoàn toàn tự động. Sử dụng 2 lớp: HTMLPage - xác định vị trí một Form,
HTMLForm - lưu giữ thơng tin form và điền dữ liệu lên form. Sau quá trình Posting Form,
một trang HTML kết quả được trả về.
Phương thức post nằm trong lớp HTTPPage:
public void post(HTMLForm form)
throws IOException{
http.getClientHeaders().set("Content-Type",
"application/x-www-formurlencoded");
http.send(form.getAction(),form.toString());
processPage(null);//phương thức xử lý đối tượng callback
}
Sử dụng gói thư viện Swing cho việc phân tích cú pháp HTML
Từ phiên bản 1.2, JAVA đưa ra gói thư viện Swing hỗ trợ việc phân tích cú pháp
HTML
Tạo đối tượng Callback cho việc phân tích HTML
Để phân tích được trang HTML ta tạo ra một đối tượng HTMLParserCallback
dẫn xuất từ lớp javax.swing.text.html.HTMLEditorKit .
Bằng cách ghi đè các phương thức trong đối tượng HTMLEditorKit ta có thể xử lý
theo ý muốn nội dung trang HTML.
13
Sau đây là các phương thức cần thiết để xử lý nội dung HTML được sử dụng trong
đề tài:
•
public void handleComment(char[] data,int pos)
Phương thức này được gọi bởi Swing Parser khi một chú thích HTML được định
vị. Lời chú thích được lưu giữ trong data. Tham số pos đưa ra vị trí hiện tại của
nó .
•
public void handleEndTag(HTML.Tag t,int pos)
Phương thức này được gọi bởi Swing Parser khi một thẻ đóng HTML được định vị.
Tham số pos đưa ra vị trí hiện tại của nó.
•
public void handleSimpleTag(HTML.Tag t,MutableAttributeSet
a,int pos)
Phương thức này được gọi bởi Swing Parser khi một thẻ HTML đơn t được định
vị. Tham số a là tập các thuộc tính của thẻ t. Tham số pos đưa ra vị trí hiện tại của
nó.
•
public void handleStartTag(HTML.Tag t,MutableAttributeSet
a,int pos)
Phương thức này được gọi bởi Swing Parser khi một thẻ mở t HTML được định vị.
Tham số a là tập các thuộc tính của thẻ t. Tham số pos đưa ra vị trí hiện tại của nó
•
public void handleText(char[] data,int pos)
Phương thức này được gọi bởi Swing Parser khi một đoạn text HTML được định
vị. Tham số pos đưa ra vị trí hiện tại của nó.
14
Chương 2 KHẢO SÁT CÁC WEBSITE BÁN HÀNG Ở VIỆT NAM
Giới thiệu
Mua bán trực tuyến là hình thức khơng mới đối với thế giới, nhưng với Việt Nam thì
vẫn cịn là một lĩnh vực hết sức mới mẻ. Tuy nhiên tiềm năng của nó ở nước ta khơng phải
là nhỏ. Vì thế, việc xây dựng các gian hàng mua bán trực tuyến là một điều rất cần thiết và
đáng quan tâm.
Mục đích của chương trình này là giúp những người có nhu cầu khảo sát giá cả thị
trường qua mạng có một cơ hội tốt để tiếp cận với những thơng tin về sản phẩm mà họ
quan tâm. Chương trình trước hết làm việc với các Website bán hàng ở Việt Nam nên yêu
cầu cần phải tìm hiểu các Webiste này.
Nói đến các Website của Việt Nam hay của bất cứ quốc gia nào trên thể giới đều có
một bài tốn khá hóc búa cho tác tử tìm kiếm là : Làm thế nào để tác tử có thể thâm nhập
được vào các Website, thu thập được các thông tin về sản phẩm đúng như mong muốn mà
chỉ cần dựa vào từ khóa tìm kiếm của người dùng.
Để giải quyết bài toán trên, một lần nữa khẳng định khảo sát các Website bán hàng
của Việt Nam là việc quan trọng cần làm.
Ngồi các mục đích trên, khảo sát tình hình các Website bán hàng ở Việt Nam còn
để xây dựng được một tập hợp danh sách các từ khóa. Danh sách các từ khóa này khi người
dùng nhập dữ liệu tìm kiếm trùng với từ khóa thì sẽ dễ dàng tìm ra các thơng tin sản phẩm
cần tìm. Mặt khác, cũng là để liệt kê ra danh sách các Website, các sản phẩm của Website
để cập nhật vào CSDL sau này.
Một điều quan trọng là từ việc khảo sát này giúp cho quá trình xây dựng chương
trình dễ phác thảo ra xem đối với một sản phẩm thì nên thể hiện những gì?
Các vấn đề được quan tâm khảo sát ở đây bao gồm: Tên sản phẩm, nhà sản xuất,
định danh của sản phẩm và quan trọng là giá bán, tên loại sản phẩm và nơi bán.
Các Webiste được khảo sát kinh doanh nhiều mặt hàng thuộc nhiều lĩnh vực khác
nhau được liệt kê như sau:
15
Tên Website
Mặt hàng kinh doanh
Máy tính và các linh kiện máy tính
Điện thoại di động
Máy tính và các linh kiện máy tính
Tạp phẩm
Sách báo, đĩa nhạc, điện hoa
Các linh kiện máy tính
Máy tính và linh kiện máy tính
Máy tính và linh kiện máy tính
VCD, DVD , Amply, v…v
Đệm, gối, salon v..v..
Sách báo, tap chí…
Các mặt hàng điện tử của Sony
Các linh kiện và dịch vụ mạng, dich vụ viễn thông
Máy tính và các linh kiện máy tính
Máy tính và các linh kiện máy tính
Máy tính và các linh kiện máy tính
Máy tính và các linh kiện
Website bán điện thoại di động
Website bán điện thoại di động
..v..v
Một số các Website về điện thoại di động khác
Bảng 2-1: Khảo sát kinh doanh nhiều mặt hàng thuộc nhiều lĩnh vực khác nhau
16
Bố trí mục tìm kiếm
Thơng thường, các Website có mục tìm kiếm đặt ngay ở trang chủ. Nhưng ta vẫn bắt
gặp những trang có trang chủ chỉ có chức năng giới thiệu, khơng có chức năng tìm kiếm.
Ví dụ :
. Trang đầu tiên lại để quảng cáo về hãng. Để tìm ra sản
phẩm cùng với giá cả liên quan thì phải qua rất nhiều đường link. Đến đường link thứ 3
chúng ta mới có thơng tin về sản phẩm cần tìm.
chỉ có một textbox để bạn gõ địa chỉ email của mình
vào đó, hãng sẽ gửi báo giá về cho bạn theo các danh mục có sẵn. Khơng có mục tìm kiếm
theo dạng textbox tại trang chủ.
. Nó chỉ có một danh mục để cho ta chọn theo tên danh
mục. Ví dụ ta cần tìm một sản phẩm mà có liên quan đến bộ vi xử lý thì nhấn chuột vào
“Bộ vi xử lý”. Khi đó có một danh sách về các loại bộ vi xử lý với một vài thơng báo ngắn
gọn về đặc tính và giá cả cũng như thời gian bảo hành.
phải vào một trang sản phẩ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ư:
, , ,
, ,..v..v
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 ngồ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.
17
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ự: ,
18
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, ngồ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 :
<input></input>, <strong></strong>,
<td></td>,
,<option></option>
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.
19
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 hồn
tồ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
20
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
21
Đơ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 .
• />Quick_find=maxtor&I1.x=29&I1.y=12
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.
22
Chương 3 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 tố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 tồ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.
23
Hình 3-1 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 qt 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ừ khố) mới để nhận biết ra các thông tin về thuộc tính sản phẩm.
24