Tải bản đầy đủ
CHƯƠNG 2: BÀI TOÁN GỢI Ý TOUR DU LỊCH

CHƯƠNG 2: BÀI TOÁN GỢI Ý TOUR DU LỊCH

Tải bản đầy đủ

24

2.1. Mô hình lô-gic và các hàm chức năng

Hình 2.1. Mô hình logic CBR [2]
Hình 2.1 là lược đồ biểu diễn mối quan hệ giữa các lớp đối tượng được
sử dụng trong giải thuật CBR của hệ tư vấn. Các thành phần gồm có: case,
base constraint, location, attraction, accommodation, item, user profile,
reward, travel wish, travel bag, travel information


Case: Được hiểu như một tình huống biểu thị một phiên (session) hoàn chỉnh
tương tác giữa người dùng và hệ thống. Tình huống (phiên) này được khởi tạo
và kết thúc bởi người dùng. Trong biểu đồ 2, một tình huống (case) được hợp
thành bởi các thành phần travel information (bao gồm travel wish và travel
bag), user profile và reward. Những thành phần này sẽ lần lượt được trình bày
chi tiết dưới đây.



UserProfile: Là lớp chứa những thông tin về người dùng. Thông tin này bao
gồm tên, tuổi, giới tính và được dùng trong tính toán độ tương đồng giữa hai
người dùng. Đối với người dùng không đăng ký, thông tin được lưu trữ dưới
dạng dữ liệu null.

25



TravelInformation: Là lớp chứa thông tin về giới hạn yêu cầu (base
constraint) từ người dùng, đồng thời bao gồm những thành phần cơ bản của
một tour như điểm đến (location), thắng cảnh (attraction) và chỗ ở
(accommodation). Travel information là lớp tổng quát của hai lớp con travel
bag và travel wish.



TravelBag: Là lớp lưu trữ thông tin về những thành phần tour (điểm đến,
thắng cảnh, chỗ ở) được người dùng chú ý chọn từ danh sách được gợi ý.
Những thành phần này đại diện cho một tour phù hợp với yêu cầu của người
dùng.



TravelWish: Là lớp lưu trữ những yêu cầu, nguyện vọng về một tour du lịch
từ phía người dùng. Các thành phần tour tương tự với các thành phần nằm
trong travel bag, bao gồm điểm đến, thắng cảnh và chỗ ở, đồng thời với dữ
liệu yêu cầu (base constraint) của người dùng . TravelWish có thể được coi
như tập hợp các cặp đặc tính-giá trị (feature-value) mà người dùng chỉ định
trong quá trình tương tác với hệ thống. Những đặc tính được mô tả trong
TravelWish phải cố định, nhất quán với những đặc tính được mô tả trong
những thành phần (item) của TravelBag. Như vậy, những đặc tính xuất hiện
trong TravelBag phải thỏa mãn những đặc tính đại diện cho yêu cầu của
người dùng xuất hiện trong TravelWish.



Reward: Là lớp lưu trữ những đánh giá của người dùng về từng thành phần
của một tour biểu thị trong TravelBag. Những điểm đánh giá này sẽ được lưu
lại như một trong những thành phần của một case.



Item: Là sản phẩm của hệ tư vấn. Không gian sản phẩm (item space) có thể
bao gồm toàn bộ một tình huống case hay từng thành phần trong một tour như
điểm đến, thắng cảnh hay chỗ ở.

26

Bên cạnh các lớp đối tượng mô tả tình huống case và các thành phần trong
một tình huống, các hàm chức năng được dùng để tính toán kết quả gợi ý bao
gồm:


SearchItem: Hàm có dữ liệu đầu vào là những yêu cầu về đặc tính sản phẩm
từ người dùng, kết quả trả về gồm danh sách những sản phẩm thỏa mãn
những yêu cầu về đặc tính. Sản phẩm được tìm kiếm là những thành phần
chính tạo nên một tour, bao gồm điểm đến, chỗ ở, và thắng cảnh. Vì vậy, hàm
SearchItem đại diện cho những hàm tìm kiếm sản phẩm cụ thể như tìm kiếm
điểm đến (searchLocation), tìm kiếm chỗ ở (searchAccommodation) và tìm
kiếm thắng cảnh (searchAttraction).



FindSimilarCases: Hàm có dữ liệu đầu vào là mô tả của một tình huống mới
biểu thị yêu cầu từ người dùng. Mô tả này gồm có những thông tin về
travelWish, travelBag, userProfile và reward. Quá trình tìm kiếm tình huống
tương đồng sử dụng những hệ thức khoảng cách, áp dụng cho từng thành
phần con trong tình huống mới. Những hệ thức này sẽ được trình bày chi tiết
trong mục 1.2.8 của chương. Kết quả trả về sau quá trình tìm kiếm là danh
sách những tình huống có độ tương đồng cao nhất với tình huống hiện tại.
Danh sách này được coi như một danh sách (tập) tham chiếu (reference set),
sử dụng trong quá trình gợi ý các thành phần tour sau này.



ItemSimilarity: Hàm itemSimilarity đại diện cho những hàm tính độ tương
đồng của những thành phần tạo nên một tour. Dữ liệu đầu vào là những thành
phần tour cùng loại, với kết quả định lượng được trả về, biểu thị mức độ
tương đồng. Các hàm đo độ tương đồng thành phần gồm có locationSimilarity
(đo độ tương đồng giữa các điểm đến), accommodationSimiliarity (đo độ
tương đồng giữa những địa điểm nghỉ chân), attractionSimilarity (đo độ tương
đồng giữa những thắng cảnh, địa điểm thu hút khách du lịch),
userProfileSimilarity (đo độ tương đồng giữa hồ sơ người dùng).

27



ItemScore: Tham số được truyền vào hàm gồm có đối tượng thành phần của
một tour (điểm đến, nơi nghỉ chân, thắng cảnh) và danh sách những tình
huống tham chiếu (reference cases) có độ tương đồng cao nhất với tình huống
hiện tại (current case). Sau xử lý, các thành phần tour sẽ nhận được điểm đánh
giá tương ứng với độ tương đồng cao nhất với các thành phần tour cùng loại
trong tập tình huống tham chiếu. Điểm số đánh giá này sẽ được dùng để xếp
hạng các thành phần tour trong danh sách gợi ý.



RecommendItem: Các thành phần tour được gợi ý và sắp xếp dựa trên giá trị
tính toán tương đồng kép sử dụng kết quả tìm kiếm tình huống tour tham
chiếu và những thành phần tour có độ tương đồng lớn nhất với những thành
phần tour có trong danh sách tham chiếu.



SortItem: Là một hàm tiện ích giúp sắp xếp các kết quả tìm kiếm thành phần
tour theo thứ tự giảm dần độ tương đồng.
2.2. Biểu diễn thành phần tour
Như đã đề cập, một tour du lịch được cấu tạo nên từ những thành phần
cơ bản riêng lẻ. Những thành phần tour chính được gợi ý bao gồm điểm đến
(location), địa điểm nghỉ chân (accommodation) và điểm du lịch (attraction).
Các thành phần tour có thể được coi như những sản phẩm được hệ thống xử
lý và đưa ra thành những gợi ý, thỏa mãn yêu cầu của người dùng. Những sản
phẩm thành phần này được chia thành nhiều loại sản phẩm khác nhau. Tập
hợp những sản phẩm cùng loại tạo nên một không gian sản phẩm, được ký
hiệu là X. Không gian X đại diện cho tập hợp những sản phẩm cùng loại,
n


được coi như một không gian véc-tơ các đặc tính (X =

i =1

Xi ) n chiều. Ví dụ,

trong không gian những địa điểm nghỉ chân cho khách du lịch, khách sạn
New Sun ở Hà Nội, nằm tại 23 Hàng Bài, có giá là 20$/ đêm, thuộc lớp khách

28

sạn loại 3, có thang máy có thể được đại diện bởi một véc-tơ đặc tính như sau
x = (Hà Nội, 23 Hàng Bài, New Sun, 3, 20, center, T)

Địa điểm

(Location) x Địa chỉ (Address) x Tên (Name) x Nhóm khách sạn (category) x
Giá (Price) x Thang máy (Lift), trong đó “Hà Nội”, “23 Hàng Bài”... là
những giá trị cho những đặc tính mô tả một địa điểm nghỉ chân của du khách.
Những giá trị này có thể được chia ra làm ba nhóm chính:
Đặc tính dưới dạng tập số nguyên hữu hạn (finite integer): Là tập
hợp những giá trị biểu thị nhóm hữu hạn những thành phần đặc tính của sản
phẩm. Ví dụ như trong trường hợp của khách sạn kể trên, khách sạn có thể
thuộc vào một trong những lớp khách sạn loại 1, 2 hay 3, category = {1, 2, 3}.
Tập những giá trị hữu hạn này biểu thị cho sự thay đổi trong mức độ sang
trọng của khách sạn. Khách sạn loại 1 là những khách sạn có quy mô lớn, chất
lượng dịch vụ tốt nhất đi kèm với giá thành cao nhất. Tương ứng, khách sạn
loại 2, 3 có qui mô và giá cả giảm dần so với loại 1. Đây có thể coi như một
quá trình mã hóa (encode) những thuộc tính có tính chất phân cấp của sản
phẩm. Quá trình này không thể áp dụng với những thuộc tính của sản phẩm
mà giá trị có tính chất ngang bằng về cấp độ. Ví dụ có thể thấy trong trường
hợp “màu sắc” = {đỏ, xanh, vàng} hay “loại phòng ở” = {khách sạn, căn
hộ}. Những đặc tính này được gọi là những đặc tính dạng biểu tượng
(symbolic hay norminal).
Đặc tính dưới dạng số thực (real): Với những đặc tính này, giá trị của
đặc tính nằm trong khoảng những số thực, ví dụ như giá thuê phòng của một
khách sạn. Khoảng giá trị này có thể được chuẩn hóa về khoảng giá trị [0, 1].
Đặc tính dưới dạng biểu tượng (symbolic): Là đặc tính chứa đựng tập
hợp hữu hạn những giá trị phần tử. Ví dụ cho lớp đặc tính này có thể thấy
trong trường hợp khách sạn kể trên, khi “địa điểm” có thể thuộc {Hà Nội, Đà
Nẵng, Sài Gòn}. Trong trường hợp những đặc tính với giá trị có dạng biểu

29

tượng, khác với hai đặc tính trước đó, mối tương quan về giá trị không tồn tại.
Để có thể tính toán khoảng cách giữa những đặc tính dạng biểu tượng, những
đặc tính này có thể được chuyển đổi sang dạng những đặc tính dưới dạng số
thực hay có hữu hạn những phần tử dạng số nguyên. Cách thứ hai để tính toán
khoảng cách là áp dụng những hệ thức được thiết kế riêng cho những đặc tính
dạng biểu tượng. Chi tiết về những hệ thức tính khoảng cách sẽ được trình
bày trong mục 2.7.
n


Cuối cùng, với mỗi không gian sản phẩm X =

i =1

Xi , những khái niệm

thành phần có thể được ký hiệu và mô tả như sau:
- Tập CX X : Tập hợp những danh mục sản phẩm cùng loại X.
- 1,2,…….,m , (m = |CX|): Được coi như những sản phẩm phần tử thuộc tập
danh mục CX.
- j = (1j, ……, nj): Là tập những giá trị đại diện cho những đặc tính của véc-tơ
sản phẩm j X.

- Với điều kiện Xi là đặc tính có giá trị dạng số (hữu hạn nguyên hoặc
thực), CX là danh mục sản phẩm cùng loại X, khoảng những giá trị khả dị cho
đặc tính Xi trong danh mục sản phẩm CX có thể được ký hiệu như sau:
rangeCX(Xi) = (maxCX{i} - minCX{i})

(1.1)

2.2.1. Cấu trúc của một case
Trong mục này, những khái niệm chính về cấu trúc của một tình huống
tour sẽ được trình bày dưới dạng biểu diễn toán học và khai triển dưới dạng
một văn bản XML. Dạng biểu diễn này sẽ được dùng để tính toán mức độ
tương đồng giữa các case.
2.2.1.1. Biểu diễn toán học

30

Tập hợp những tình huống tour có thể được hiểu theo khái niệm một
không gian tình huống (case space) CB. Trong đó, một tình huống tour có thể
được cấu tạo từ bốn thành phần riêng biệt:
CB = TW x TB x U x R

(1.2)

Những thành phần này bao gồm: travelWish (TW), travelBag (TB),
userPofile (U), và reward (R). Trong đó, từng thành phần lần lượt thuộc về
một kiểu không gian nhất định. Ví dụ, với c = (tw, tb, u, r) ϵ CB, type (tw) =
TW. Bên cạnh đó, từng thành phần của không gian CB có thể được tạo nên từ
những thành phần nhỏ hơn. Điểm khác của một không gian tình huống là yếu
tố chiều thời gian (temporal dimension). Yếu tố này tồn tại khi một tình
huống tour được xây dựng thông qua quá trình tương tác giữa người dùng và
hệ thống. Vì vậy, một tình huống trong không gian CB luôn luôn được coi
như một “ảnh chụp” có cấu trúc về một quá trình tương tác người-máy trong
một khoảng thời gian nhất định.

Hình 2.2. Minh họa một case

31

Nhìn vào hình 1.4, một tình huống tour được biểu thị dưới cấu trúc dạng
cây. Gốc của cây đại diện cho tình huống tuor hiện tại. Các nhánh nhỏ hơn đại
diện cho từng thành phần trong một tình huống tour. Từng thành phần này
tiếp theo được cấu thành từ những phần nhỏ hơn được biểu diễn dưới dạng
một véc-tơ đặc tính. Từng thành phần cấu thành một tình huống tuor được mô
tả như sau.
TB (TravelBag): Có thể được coi như một giỏ hàng ảo tập hợp những
thành phần tour được người dùng chọn lựa trong quá trình tương tác với hệ
thống. TB có cấu trúc dữ liệu phức tạp, được cấu thành từ những phần tử nối
tiếp thuộc nhiểu không gian khác nhau.
TB = B x Seq(X1) x … x Seq(X3)

(1.3)

Trong biểu thức (1.3), B, X1, …, X3 là những không gian véc-tơ, với
X1,.., X3 là những không gian thành phần tuor tương ứng với điểm đến
(location), điểm nghỉ chân (accomodation), và thắng cảnh (attractions). B là
không gian mô tả những đặc điểm yêu cầu chung nhất của một TB từ phía
người dùng. Những đặc tính này có thể là tổng chi phí của một tour TB (cost),
loại hình nhà nghỉ (accomodation type), khoảng thời gian du lịch (travel
duration) hay nhóm hành khách (travel party). Một trong những đặc điểm này
có thể trùng với đặc điểm của một thành phần trong tour. Ví dụ về loại hình
nhà nghỉ là một đặc tính xác định nơi nghỉ chân (accommodation) của du
khách có thể là khách sạn hay căn hộ.
Các thành phần Seq (X1), …, Seq(X3) mô tả những chuỗi các đặc tính
thuộc cùng một không gian. Vì vậy, một TravelBag có thể chứa nhiều thành
phần thuộc cùng một kiểu. Ví dụ như một travelbag được diễn tả bằng hai
thành phần tb1, tb2 như hình 1.4. Với mỗi thành phần trong một travelbag có
thể được phân chia theo cấp thành phần nhỏ hơn, biểu thức biểu diễn một
travelbag trở thành:

32

tb = (b, [x1,1, …, x1,j1], …, [x3,1, …, x3,j3])
với mỗi xi,j = (x11,1, …, xni,j). Trong hình 1.4, ta có:
tb = (1000, couple), [(Hanoi, historic), (New Sun, 120, 23 Hang Bai), ϕ,ϕ]
Với những đặc điểm chung b = (1000, couple). Trong ví dụ này, những
đặc điểm chung được giả định gồm có chi phí (budget) dành cho chuyến đi
của du khách và loại hình du khách (travel party). Những đặc tính tiếp theo
lần lượt mô tả điểm đến tb1 = (Hanoi, historic) (với giả định điểm đến được
mô tả bởi hai đặc điểm chính là tên (location-name) và loại hình (locationtype)), nơi nghỉ chân tb2 = (New Sun, 120, 23 Hang Bai) (với giả định các
đặc điểm mô tả một địa điểm nghỉ chân gồm có tên, giá thuê/đêm, địa chỉ).
Trong quá trình người dùng tương tác với hệ thống, người dùng có thể tiếp
tục chọn và thêm một địa danh thắng cảnh sẽ tham quan vào trong túi du lịch
ảo (travel bag) của mình. Thắng cảnh này có thể gồm những thông tin về tên,
địa chỉ, giá vé, loại hình,.. Ví dụ tb3 = (Van Mieu, Quoc Tu Giam St,
historic). Như vậy túi du lịch ảo đại diện cho các thành phần của một tour
người dùng lựa chọn sẽ được mô tả như sau:
tb = (1000, couple), [(Hanoi, historic), (New Sun, 120, 23 Hang Bai),
(Van Mieu, Quoc Tu Giam St, historic), ϕ]
TW (Travel Wish): Biểu thị mong muốn, yêu cầu về một tour du lịch từ
phía người dùng. TW có cấu trúc dữ liệu phức tạp, được diễn tả như một tập
hợp những truy vấn (queries) về các thành phần trong một tour, có cấu trúc
giống với TravelBag. Một TW có thể được biểu diễn như sau:
TW = Q(B) x Seq(Q(X1)) x … x Seq(Q(X3))

(1.4)

Trong đó, các thành phần trong một TW có cấu trúc tương tự với các
thành phần tạo nên một TravelBag.
Q (B): truy vấn chứa những đặc điểm chung của một tour.

33

Seq (Q(Xi)): chuỗi những truy vấn về từng loại sản phẩm có trong tour,
ví dụ, Seq(Q(X1)) là chuỗi truy vấn biểu thị mong muốn của người dùng về
điểm đến (location) cho chuyến du lịch. Bên cạnh đó, một TB có thể có nhiều
sản phẩm thuộc cùng loại, vì vậy, mỗi sự lựa chọn sẽ tương ứng với mỗi truy
vấn khác nhau. Một ví dụ về biểu diễn chuỗi truy vấn TW có thể có dạng như
sau với:
Q (B) = (budget < 2000) ∧ (party = couple): Truy vấn với yêu cầu chung
về tour với điều kiện chi phí cho phép nhỏ hơn 1000$, và dành cho một người
đi du lịch.
Seq(Q(X1)) = Seq(Q(accommodation)) = (location = Ha Noi) ∧ (cost <
150) ∧ (position = center): Truy vấn với yêu cầu về chỗ ở, điều kiện là địa
điểm tại Hà Nội, vị trí trung tâm và giá thuê nhỏ hơn 150$/đêm.
Seq(Q(X2)) = Seq(Q(attraction)) = (attraction-type = historic) ∧ (date =
10/02/2009), (attraction-type = entertainment): Tập hợp hai truy vấn về địa
điểm thắng cảnh người dùng muốn đến. Truy vấn đầu tiên là yêu cầu về thắng
cảnh mang tính lịch sử và ngày tham gia là 10/02/2009. Truy vấn thư hai là
yêu cầu về thắng cảnh mang tính giải trí.
Như vậy: TW = ((budget < 2000) ∧ (party = couple)) x ((location = Ha
Noi) ∧ (cost < 150) ∧ (position = center)) x (attraction-type = historic) ∧
((date = 10.02.2009), (attraction-type = entertainment))
U: Thông tin về người dùng hệ thống được biểu diễn dưới dạng một véctơ đặc tính trong không gian giống với không gian sản phẩm X có dạng U =
∏ni=1 Ui. Trong biểu đồ 3, một véc-tơ có thể được biểu diễn với ba đặc điểm
của người dùng như tên, tuổi, giới tính:
U = (name = Nam) ∧ (age = 20) ∧ (gender = male)

(1.5)

R: Đánh giá về một tour đã được xây dựng và tham gia từ phía người
dùng. Cấu trúc đánh giá giống với cấu trúc của một travelbag đại diện cho

34

một tour. Đánh giá bao gồm đánh giá chung cho toàn bộ tour du lịch, đồng
thời với từng thành phần trong tour. Một đánh giá là một tập con hữu hạn các
phần từ của tập số nguyên. Cấu trúc của một đánh giá có thể có dạng sau:
R = RB x Seq(RX1) x …x Seq(RX3)

(1.6)

Trong đó, RB = RX1 = .. = RX4 = {1, 2, 3, 4, 5}. Ví dụ, một tour du lịch
có thể được đánh giá bởi điểm số như sau r = {4, [5], [4], ∅}. Các điểm số
đánh giá lần lượt tương ứng với toàn bộ tour được đánh giá với điểm số 4/5.
Từng thành phần được đánh giá lần lượt là điểm đến (5/5), nơi nghỉ chân
(4/5), thắng cảnh (3/5). Điểm số 3/5 được coi như điểm đánh giá mặc định,
được áp dụng cho những thành phần tour không được đánh giá bởi người
dùng. Giả thiết này được áp dụng cho những trường hợp không có điểm đánh
giá bởi vì điểm đánh giá 3/5 là trị số trung gian, nằm giữa những điểm đánh
giá tích cực (4/5, 5/5) và điểm đánh giá tiêu cực (1/5, 2/5).