Tải bản đầy đủ (.docx) (19 trang)

Ứng dụng mạng ngữ nghĩa cho việc giải bài toán tam giác

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (532.66 KB, 19 trang )

MỤC LỤC
1
ONTOLGY VÀ ỨNG DỤNG CỦA ONTOLOGY VÀO BÀI TOÁN TAM GIÁC
I. Giới thiệu
Ngày nay, với sự bùng nổ thông tin, nhất là thông tin trên web
đang được rất nhiều nhà nghiên cứu quan tâm. Thế nhưng máy tính
hiện nay chỉ có tác dụng nhận và hiển thị thông tin chứ không có khả
năng đọc và hiểu được thông tin. Do vậy, việc tìm kiếm, tách chiết, lập
luận để đưa ra tri thức cần thiết càng ngày càng khó khăn. Năm 1998,
Tim Berners-Lee đã đề xuất ra web ngữ nghĩa (Semantic web), một sự
phát triển của web hiện tại. Theo ông, web ngữ nghĩa ra đời sẽ khắc
phục được những nhược điểm quan trong của web hiện tại, làm cho
máy tính có thể hiểu thông tin trên web và như thế việc xử lý thông tin
trên web trở nên thuận lợi và chính xác hơn. Cũng theo ông, nền tảng
cơ bản của web ngữ nghĩa là Ontology.
Trong một vài năm gần đây, việc áp dụng ontology như một hình thức
biểu diễn tri thức trong các lĩnh vực ứng dụng khác nhau đã có những
bước tiến quan trọng. Ontology mô tả không chỉ khái niệm và thuộc tính
mà còn cung cấp các quan hệ cũng như các tiên đề phục vụ cho việc suy
luận. Ontology có rất nhiều lợi thế như cho phép thêm ngữ nghĩa vào dữ
liệu, quản lý và cập nhật tri thức, tích hợp dữ liệu cũng như tái sử dụng
các thành phần dễ dàng hơn. Nhờ đó, ontology là mô tả chính thức của
một số bộ từ vựng chuyên môn.
Công dụng quan trọng nhất của ontology là biểu diễn tri thức.
Ontology đã được sử dụng thành công trong các hệ thống chuyên gia,
mạng ngữ nghĩa… Do hình thức lý thuyết là logic mô tả, ontology có lợi
thế cả về diễn đạt ngữ nghĩa lẫn cơ chế suy luận.
Mục tiêu của bài thu hoạch này là tiếp cận các kiến thức về ontology,
cũng như xây dựng thử nghiệm một hệ cơ sở tri thức về lĩnh vực hình học
phẳng mà cụ thể là giải bài toán tam giác.
2


II. Các khái niệm
a. Bản thể Ontology
Việc biểu diễn tri thức và lập luận là vấn đề then chốt cho quá trình
xử lý thông tin tự động trong các hệ thống thông minh. Trong thời gian
gần đây, một vấn đề quan trọng đã và đang được nhiều nhà nghiên cứu
quan tâm đó là biểu diễn và xử lý tri thức trên Web. Năm 1998, Tim
Berners-Lee đã nghiên cứu và phát triển Semantic web (web ngữ nghĩa),
theo cách này các trang web không chỉ thực hiện chức năng nhận và hiển
thị thông tin mà còn có khả năng tự động trích rút thông tin, truy vấn, lập
luận trong cơ sở tri thức để có thể cho ra các thông tin một cách tự động,
chính xác. Năm 2003, F, Baader đã phát triển logic mô tả (Description
Logic – DLs) và xem nó như là ngôn ngữ biểu diễn cho tri thức trên web
ngữ nghĩa. Từ đó việc nghiên cứu quá trình biểu diễn và lập luận trong
web ngữ nghĩa được quan tâm tuy nhiên chỉ dừng lại đối với tri thức chắc
chắn. Năm 2006, Umberto Straccia dựa vào nền tảng của logic mô tả và
lý thuyết tập mờ của Zadeh (đưa ra năm 1965) đã đưa ra logic mô tả mờ
(Fuzzy Description Logic) ) nhằm phục vụ cho việc xử lý tri thức không
chắc chắn trên web ngữ nghĩa.
Ontology là một thuật ngữ mượn từ triết học nhằm chỉ khoa học mô
tả các loại thực thể trong thế giới thực và cách chúng liên kết với nhau.
Trong khoa học máy tính, một cách khái quát, Ontology là "một biểu diễn
của sự khái niệm hoá chung được chia sẻ" của một miền nhất định. Nó
cung cấp một bộ từ vựng chung bao gồm các khái niệm, các thuộc tính
quan trọng và các định nghĩa về các khái niệm và các thuộc tính này.
Ngoài bộ từ vựng, Ontology còn cung cấp các ràng buộc, đôi khi các ràng
buộc này được coi như các giả định cơ sở về ý nghĩa mong muốn của bộ
từ vựng, nó được sử dụng trong một miền mà có thể được giao tiếp giữa
người và các hệ thống ứng dụng phân tán khác.
Định nghĩa 1:
3

Thông thường, ontology được định nghĩa như một cấu trúc bao gồm
những thành phần sau (Gruber 1993; Fensel 2001)
• C – tập các khái niệm (Concept);
• I – tập các thể hiện của khái niệm
• R – tập các quan hệ hai ngôi được định nghĩa trên C;
• Z – tập các tiên đề, là các công thức logic biểu diễn các ràng
buộc toàn vẹn trong tập các thể hiện và khái niệm
Định nghĩa 2:
Một ontology là một bộ tứ O = (C, P, R, A), trong đó:
• C là một tập các khái niệm được định nghĩa trong một miền.
Một khái niệm thường được xem như một lớp của ontology
• P là một tập các thuộc tính. Một thuộc tính p € P được định
nghĩa như một thể hiện của một quan hệ 3 ngôi có dạng
p(c,v,f), trong đó c € C là một khái niệm ontology, v là một giá
trị thuộc tính gắn với c và f là định nghĩa các mặt giới hạn
trên v. Một vài mặt giới hạn bao gồm lọai (f
t
), lực lượng (f
c
) và
phạm vi (f
r
). Mặt giới hạn f
t
có thể là bất kỳ kiểu dữ liệu nào
được hổ trợ bởi trình soạn thảo ontology, ví dụ như f
t

{Boolean, integer, float, string, symbol, instance, class,…}.
Mặt giới hạn lực lượng f

c
định nghĩa cận trên và cận dưới
của số lượng giá trị thuộc tính. Mặt giới hạn phạm vi f
r
chỉ
định một phạm vi các giá trị có thể gán cho thuộc tính.
• R={r| r ⊆ C × C × R
t
} là một tập các quan hệ ngữ nghĩa hai
ngôi được định nghĩa giữa các khái niệm trong C.R
t
= {một-
một, một-nhiều, nhiều- nhiều} là tập các kiểu quan hệ.
• A là một tập các tiên đề. Mỗi tiên đề là một chân lý hoặc luật
suy diễn.
4
Hình 1: Mô hình ontology về bánh pizza
Ontology lĩnh vực:
Một Ontology lĩnh vực mô hình hóa một lĩnh vực chuyên môn, hay
một phần của thế giới. Ontology lĩnh vực thể hiện những ý nghĩa riêng
của các vấn đề khi áp dụng vào lĩnh vực đó. Ví dụ, từ “card” có rất nhiều
nghĩa. Một ontology chuyên về bài pocker sẽ mô phỏng nghĩa “playing
card” (lá bài) của thế giới, trong khi một ontology lĩnh vực về máy tính lại
mô phỏng ý nghĩa “puched card” (thẻ đục lỗ) và “video card” (card màn
hình).
Định nghĩa 3:
Một Ontology lĩnh vực định nghĩa một tập các thuật ngữ gọi là khái
niệm. Các mối quan hệ giữa những khái niệm này diễn tả một thế giới
mục tiêu. Ontology lĩnh vực được định nghĩa qua bốn tầng, bao gồm tầng
lĩnh vực, tầng phân hệ, tầng sự kiện, và tầng chứa các lớp. Một ontology

miền thể hiện một tên miền của một ontology và bao gồm nhiều phân hệ
khác nhau được định nghĩa bởi các chuyên gia trong lĩnh vực. Mỗi phân
5
hệ được tổ hợp bởi các tập sự kiện, kế thừa từ những bản thông tin bởi
các chuyên gia lĩnh vực. Mỗi sự kiện bao gồm một vài khái niệm của của
tầng chứa lớp. Trong tầng chứa lớp, mỗi khái niệm chứa một tên khái
niệm, một tập thuộc tính và một tập tóan tử cho một ứng dụng lĩnh vực.
Ontology lĩnh vực có ba loại quan hệ, bao gồm khái quát hóa, quy nạp và
liên đới. Quan hệ giữ lĩnh vực và các phân hệ tương ứng là sự khái quát
hóa, thể hiện quan hệ “thuộc loại”. Quan hệ giữa mỗi phân hệ và những
sự kiện tương ứng là sự quy nạp. Quan hệ quy nạp diễn tả quan hệ “là
một phần của”. Liên đới là một quan hệ ngữ nghĩa giữa các lớp trong một
tầng.
Hình 2: Mô hình ontology lĩnh vực
Ontology thượng tầng:
Một ontology thượng tầng (hay ontology nền) là một mô hình các đối
6
tượng thuật ngữ thông dụng mà có thể áp dụng cho số lượng lớn các
ontology miền. Ontology thượng tầng chứa một từ điển cốt lõi trong đó mô
tả những đối tượng thuật ngữ thuộc một tập hợp các lĩnh vực. Có rất
nhiều ontology được chuẩn hóa có thể sử dụng được, bao gồm Dublin
Core, GFO, OpenCyc/ResearchCyc, SUMO, and DOLCE. WorldNet, đôi
khi được xem như một ontology thượng tầng, thực ra không hoàn toàn
là một ontology. Mặc dù vậy, WorldNet được cài đặt như là một công cụ
ngôn ngữ để nghiên cứu ontology lĩnh vực.
b. Logic mô tả
Logic mô tả (Description logics, viết tắt DL) là một họ các ngôn ngữ
biểu diễn tri thức có thể sử dụng để biểu diễn tri thức thuật ngữ của một
miền ứng dụng theo một cách có cấu trúc và được hiểu rõ một cách hình
thức. Mặt khác, cái tên logic mô tả có ý nói đến các mô tả về khái niệm

được dùng để mô tả một miền và ngữ nghĩa dựa trên logic (logic-based
semantics) thu được qua việc dịch từ logic mệnh đề bậc nhất. Logic mô
tả được thiết kế như là một mở rộng của khung ngữ nghĩa (semantic
frame) và lưới ngữ nghĩa (semantic network), vốn không được trang bị
một ngữ nghĩa dựa trên logic hình thức.
Cú pháp: bao gồm
• Một tập các ký hiệu mệnh đề dùng để ký hiệu các tên khái
niệm (concept name);
• Một tập các ký hiệu mệnh đề đôi để ký hiệu các tên vai trò (role
name);
• Một định nghĩa đệ quy để định nghĩa các thuật ngữ khái niệm từ
các tên khái niệm và tên vai trò bằng cách sử dụng các tạo tử
(constructor)
Trong lôgic mô tả, các tên khái niệm được xem là các khái niệm
nguyên tử, các tên vai trò được coi là các vai trò nguyên tử. Nhìn chung,
7
một khái niệm đại diện cho tập các cá thể thuộc về nó, và một vai trò đại
diện cho một quan hệ giữa các khái niệm.
Cú pháp của một thành viên trong gia đình lôgic mô tả được đặc trưng
bởi định nghĩa đệ quy của nó, các định nghĩa đệ quy này định nghĩa các
tạo tử có thể được dùng để tạo các thuật ngữ khái niệm.
Một số tạo tử thông dụng bao gồm các tạo tử lôgic trong logic bậc
nhất như phép giao (intersection) hay tuyển (conjunction) của các khái
niệm, phép hợp (union) hay hội (disjunction) của các khái niệm, phép phủ
định (negation) hay lấy phần bù (complement) của các khái niệm, hạn chế
giá trị (hạn chế với mọi - universal restriction), hạn chế tồn tại (existential
resctriction), v.v Các tạo tử khác có thể còn bao gồm các hạn chế đối với
các vai trò thường thấy trong các quan hệ nhị phân, ví dụ, tính đảo
(inverse), tính bắc cầu (transitivity), chức năng (functionality), v.v Đặc biệt
đối với phép giao và phép hợp, logic mô tả sử dụng các ký hiệu ∏ và ┐ để

phân biệt chúng với và trong lôgic bậc nhất.∧ ∨
Dưới đây là một ví dụ về định nghĩa cú pháp của logic mô tả:
• một khái niệm nguyên tử là một khái niệm;
• khái niệm đỉnh ( ) là một khái niệm;
• khái niệm đáy ( ) là một khái niệm;
• phần bù của một khái niệm C cũng là một khái niệm (ký
hiệu là ¬C);
• giao của hai khái niệm C và D cũng là một khái niệm ;
• nếu C là một khái niệm và R là một tên vai trò, thì R.C (hạn
chế giá trị) cũng là một khái niệm;
• nếu R là một tên vai trò, thì R.(hạn chế tồn tại) cũng là một
khái niệm
Ngữ nghĩa:
Ngữ nghĩa của lôgic mô tả được định nghĩa bằng cách giải nghĩa các
khái niệm như là các tập hợp gồm các cá thể, và các vai trò như là các tập
gồm các cặp cá thể. Các cá thể đó thường được cho là thuộc một miền
8
xác định cho trước. Sau đó, ngữ nghĩa của các khái niệm và vai trò không
nguyên tử được định nghĩa theo các khái niệm và vai trò nguyên tử. Điều
này được thực hiện bằng một định nghĩa đệ quy tương tự như trong cú
pháp.
III. Phương pháp xây dựng Ontolog
Quy trình phát triển Ontology là một quy trình gồm nhiều bước, tuy
nhiên vẫn chưa có một phương pháp chuẩn hóa nào để phát triển các
ontologies. Sau đây là quy trình phát triển gồm 7 bước do Stanford Center
for Biomedical Informatics Research đưa ra (đây là nhóm phát triển
phần mềm Protégé để trình diễn và soạn thảo Ontology).
Bước 1: Xác định lĩnh vực và phạm vi của Ontology
Trong giai đoạn này cần xác định mục đích của việc xây dựng
ontology là gì? Phục vụ đối tượng nào? Ontology sắp xây dựng cần có

đặc điểm gì, liên quan đến lĩnh vực, phạm vi nào. Quá trình khai thác,
quản lý và bảo trì ontology được thực hiện ra sao?
Bước 2: Xem xét việc sử dụng lại các ontology có sẵn
Cấu trúc của một Ontology bao gồm 3 tầng: tầng trừu tượng
(Abstract), tầng miền xác định (Domain) và tầng mở rộng (Extension).
Trong đó tầng trừu tượng có tính tái sử dụng rất cao, tầng miền xác định
có thể tái sử dụng trong một lĩnh vực nhất định. Cộng đồng Ontology
cũng đang lớn mạnh và có rất nhiều Ontology đã được tạo ra, với tâm
huyết của nhiều chuyên gia. Do đó trước khi bắt đầu xây dựng ontology,
cần xét đến khả năng sử dụng lại các ontology đã có. Nếu có thể sử dụng
lại một phần các ontology đã có, chi phí bỏ ra cho quá trình xây dựng
ontology sẽ giảm đi rất nhiều.
Bước 3: Liệt kê các thuật ngữ quan trọng
Ontology được xây dựng trên cơ sở các khái niệm trong một lĩnh vực
cụ thể, vì vậy khi xây dựng ontology cần bắt đầu từ các thuật ngữ chuyên
9
ngành để xây dựng thành các lớp trong ontology tương ứng. Tất nhiên
không phải thuật ngữ nào cũng đưa vào ontology, vì chưa chắc đã định vị
được cho thuật ngữ đó. Do đó cần phải liệt kê các thuật ngữ, để xác định
ngữ nghĩa cho các thuật ngữ đó, cũng như cân nhắc về phạm vi của
ontology. Việc liệt kê các thuật ngữ còn cho thấy được phần nào tổng
quan về các khái niệm trong lĩnh vực đó, giúp cho các bước tiếp theo
được thuận lợi.
Bước 4: Xác định các lớp và phân cấp của các lớp
Công việc xác định các lớp không chỉ đơn giản là tiến hành tìm hiểu
về ngữ nghĩa của các thuật ngữ đã có để có được các mô tả cho thuật
ngữ đó, mà còn phải định vị cho các lớp mới, loại bỏ ra khỏi ontology nếu
nằm ngoài phạm vi của ontology hay hợp nhất với các lớp đã có nếu có
nhiều thuật ngữ có ngữ nghĩa như nhau (đồng nghĩa, hay đa ngôn ngữ).
Ngoài ra không phải thuật ngữ nào cũng mang tính chất như một lớp.

Một công việc cần phải tiến hành song song với việc xác định các lớp
là xác định phân cấp của các lớp đó. Việc này giúp định vị các lớp dễ
dàng hơn.
Có một số phương pháp tiếp cận trong việc xác định phân cấp của
các lớp:
 Phương pháp từ trên xuống (top-down): bắt đầu với định nghĩa
của các lớp tổng quát nhất trong lĩnh vực và sau đó chuyên biệt hóa
các khái niệm đó. Ví dụ: Trong Ontology về quản lý nhân sự, ta bắt
đầu với lớp Người, sau đó chuyên biệt hóa lớp Người đó bằng cách
tạo ra các lớp con của lớp Người như : Kỹ sư, Công nhân, Bác sỹ,…
Lớp Kỹ sư cũng có thể chuyên biệt hóa bằng cách tạo ra các lớp con
như Kỹ sư CNTT, Kỹ sư điện, Kỹ sư cơ khí, …
 Phương pháp từ dưới lên (bottom-up): bắt đầu với định nghĩa
của các lớp cụ thể nhất, như các lá trong cây phân cấp. Sau đó gộp
các lớp đó lại thành các khái tổng quát hơn. Ví dụ: ta bắt đầu với việc
10
định nghĩa các lớp như: nhân viên lễ tân, nhân viên vệ sinh, nhân
viên kỹ thuật. Sau đó tạo ra một lớp chung hơn cho các lớp đó là lớp
nhân viên.
 Phương pháp kết hợp: kết hợp giữa phương pháp từ trên
xuống và từ dưới lên: bắt đầu từ định nghĩa các lớp dễ thấy trước và
sau đó tổng quát hóa và chuyên biệt hóa các lớp đó một cách thích
hợp. Ví dụ ta bắt đầu với lớp nhân viên trước, là thuật ngữ hay gặp
nhất trong quản lý nhân sự. Sau đó chúng ta có thể chuyên biệt hóa
thành các lớp con: nhân viên lễ tân, nhân viên vệ sinh,… hoặc tổng
quát hóa lên thành lớp Người.
Bước 5: Xác định các thuộc tính
Để xác định thuộc tính cho các lớp, ta quay trở lại danh sách các
thuật ngữ đã liệt kê được. Hầu hết các thuật ngữ còn lại (sau khi đã xác
định lớp) là thuộc tính của các lớp đó. Với mỗi thuộc tính tìm được, ta

phải xác định xem nó mô tả cho lớp nào. Các thuộc tính đó sẽ trở thành
thuộc tính của các lớp xác định. Ví dụ lớp Người có các thuộc tính sau:
Họ, Tên, Ngày sinh, Giới tính, Nghề nghiệp, Địa chỉ, Điện thoại,…
Bước 6: Xác định giới hạn các thuộc tính (lực lượng, kiểu giá trị)
Các thuộc tính có thể có nhiều khía cạnh khác nhau: như kiểu giá trị,
các giá trị cho phép, số các thuộc tính (lực lượng), và các đặc trưng khác
mà giá trị của thuộc tính có thể nhận. Ví dụ: “Năm sinh” của một “nhân
viên” chỉ có duy nhất và là số nguyên, có thể nhận giá trị từ 1948 đến
1990. Cần phải xác định các ràng buộc cho một thuộc tính càng chặt chẽ
càng tốt, để tránh trường hợp nhập dữ liệu sai, dẫn đến đổ vỡ của các
ứng dụng sử dụng Ontology này.
Bước 7: Tạo các thể hiện/thực thể
Bước cuối cùng là tạo ra các thể hiện của các lớp trong sự phân cấp.
Việc tạo thể hiện cho một lớp là quá trình điền các thông tin vào các thuộc
tính của lớp đó
IV. Ứng dụng của Ontolog
11
a. Hệ chuyên gia
Với khả năng biểu diễn tri thức và cơ chế suy luận dựa trên logic mô
tả, ontology là mô hình tuyệt vời cho các hệ chuyên gia. So với phương
pháp biểu diễn bằng luật sinh vốn chỉ hỗ trợ quan hệ nếu… thì…,
ontology cho phép biểu diễn tri thức của chuyên gia một cách đa dạng và
phong phú hơn qua nhiều loại quan hệ khác nhau mà người dùng có thể
tự định nghĩa.
b. Lập trình hướng đối tượng
Ontology là một đồ thị thưa có kích thước lớn nên việc biểu diễn dưới
dạng ma trận liên kết là không khả thi.
Khi ứng dụng vào thực tế, Ontology thường được biểu diễn dưới
dạng frame và điều này khá phù hợp với lập trình hướng đối tượng. Ngôn
ngữ lập trình hướng đối tượng hỗ trợ rất mạnh các khái niệm tương ứng

với Ontology như lớp, thuộc tính (quan hệ) và các thực thể. Do đó, đây là
công cụ hoàn hảo để cài đặt Ontology.
Dưới đây là siêu mô hình của một Ontology cài dẵt bằng hướng đối
tượng:
12
Ngược lại, Ontology mở rộng khả năng của lập trình hướng đối
tượng. Thay vì phải tập trung vào việc cài đặt cơ sở dữ liệu và các thuật
toán xử lý, mô hình Ontology hướng nỗ lực của người thiết kế sang việc
khai báo và mô tả tri thức. Việc này còn cho phép những chuyên gia có
thể tạo dựng nên những ứng dụng hữu ích mà không cần am hiểu nhiều
về lập trình. Đây rõ ràng là mục tiêu mà các ngôn ngữ lập trình thế hệ mới
đang cố gắng hiện thực hóa.
c. Mạng ngữ nghĩa
Người đặt nền tảng cho mạng thông tin toàn cầu Tim Berners-Lee đã
nhiều lần đề cập đến mạng ngữ nghĩa. Trong đó, các hệ thống có thể giao
tiếp với nhau, phân tích và diễn giải ý nghĩa của mọi dữ liệu trên site, rồi
13
tập hợp nội dung liên quan từ nhiều nguồn khác nhau. Nhờ đó, một công
ty du lịch sẽ biết khách hàng của họ có bao nhiêu đứa con, công việc, sở
thích riêng để tìm ra điểm nghỉ mát lý tưởng nhất cho cả gia đình.
Ý tưởng trọng tâm của là tạo ra những "metadata": chuỗi các cơ sở
dữ liệu nối tiếp nhau, có nhiệm vụ bổ sung cho thông tin trên web để các
máy tính có thể hiểu và giải quyết những vấn đề ngữ nghĩa phức tạp.
Mạng ngữ nghĩa được tổ chức dưới dạng một đồ thị, trong đó các nút
biểu diễn các đối tượng và cung biểu diễn quan hệ giữa các đối tượng
Một mô hình mạng ngữ nghĩa
Không chỉ thuận lợi cho việc tìm kiếm thông tin, mạng ngữ nghĩa còn
hỗ trợ cơ chế suy diễn khá hiệu quả mà điển hình là bài toán tam giác
tổng quát.
Việc tiếp cận ngữ nghĩa tài nguyên Web thông qua các Ontology thì

mềm dẻo hơn vì người sử dụng có thể lựa chọn bộ từ vựng và các ràng
14
buộc trong các Ontology. Ví dụ, các ứng dụng trong các miền khác nhau
có thể sử dụng các Ontology khác nhau. Đặc biệt, các Ontology có thể
được sử dụng để đặc tả ý nghĩa của các tài nguyên Web (thông qua các
chú thích) bằng cách xác nhận các tài nguyên như các trường hợp cụ thể
của một số khái niệm quan trọng và hay hoặc khẳng định các tài nguyên
có quan hệ với các tài nguyên khác thông qua một số thuộc tính quan
trọng đã định nghĩa trong các Ontology.
d. Ứng dụng mạng ngữ nghĩa cho việc giải bài toán tam giác
Bài Toán :“Cho hai góc α,β và chiều dài cạnh a của tam giác. Tính
chiều dài đường cao hC".
Với mỗi bài tập này, việc bạn cần làm là lấy giấy bút ra tìm cách tính,
sau khi đã xác định các bước tính toán, bạn chuyển nó thành chương
trình. Nếu có 10 bài, bạn phải làm lại việc tính toán rồi lập trình 10 lần.
Nếu có 100 bài, bạn phải làm 100 lần. Và tin buồn cho bạn là số lượng bài
toán thuộc loại này là rất nhiều! Bởi vì một tam giác có tất cả 22 yếu tố
15
khác nhau!. Không lẽ mỗi lần gặp một bài toán mới, bạn đều phải lập trình
lại? Liệu có một chương trình tổng quát có thể tự động giải được tất cả
(vài ngàn!) những bài toán tam giác thuộc loại này không? Câu trả lời là
CÓ ! Và ngạc nhiên hơn nữa, chương trình này lại khá đơn giản. Bài toán
này sẽ được giải bằng mạng ngữ nghĩa.
Có 22 yếu tố liên quan đến cạnh và góc của tam giác. Để xác định
một tam giác hay để xây dựng một 1 tam giác ta cần có 3 yếu tố trong đó
phải có yếu tố cạnh. Như vậy có khoảng C322 -1 (khoảng vài ngàn) cách
để xây dựng hay xác định một tam giác. Theo thống kê, có khoảng 200
công thức liên quan đến cạnh và góc 1 tam giác.
Để giải bài toán này bằng công cụ mạng ngữ nghĩa, ta phải sử dụng
khoảng 200 đỉnh để chứa công thức và khoảng 22 đỉnh để chứa các yếu

tố của tam giác. Mạng ngữ nghĩa cho bài toán này có cấu trúc như sau :
Đỉnh của đồ thị bao gồm hai loại :
• Đỉnh chứa công thức (ký hiệu bằng hình chữ nhật)
• Đỉnh chứa yếu tố của tam giác (ký hiệu bằng hình tròn)
Cung : chỉ nối từ đỉnh hình tròn đến đỉnh hình chữ nhật cho biết yếu
tố tam giác xuất hiện trong công thức nào (không có trường hợp cung nối
giữa hai đỉnh hình tròn hoặc cung nối giữa hai đỉnh hình chữ nhật).
* Lưu ý : trong một công thức liên hệ giữa n yếu tố của tam giác, ta
giả định rằng nếu đã biết giá trị của n-1 yếu tố thì sẽ tính được giá trị của
yếu tố còn lại. Chẳng hạn như trong công thức tổng 3 góc của tam giác
bằng 180
0
thì khi biết được hai góc, ta sẽ tính được góc còn lại.
Cơ chế suy diễn thực hiện theo thuật toán "loang" đơn giản sau :
B1 : Kích hoạt những đỉnh hình tròn đã cho ban đầu (những yếu
tố đã có giá trị)
B2 : Lặp lại bước sau cho đến khi kích hoạt được tất cả những đỉnh
ứng với những yếu tố cần tính hoặc không thể kích hoạt được bất kỳ đỉnh
nào nữa.
16
Nếu một đỉnh hình chữ nhật có cung nối với n đỉnh hình tròn mà n-1
đỉnh hình tròn đã được kích hoạt thì kích hoạt đỉnh hình tròn còn lại (và
tính giá trị đỉnh còn lại này thông qua công thức ở đỉnh hình chữ nhật).
Về mặt chương trình, ta có thể cài đặt mạng ngữ nghĩa giải bài
toán tam giác bằng một mảng hai chiều A trong đó :
Cột : ứng với công thức. Mỗi cột ứng với một công thức tam giác
khác nhau (đỉnh hình chữ nhật).
Dòng : ứng với yếu tố tam giác. Mỗi dòng ứng với một yếu tố tam
giác khác nhau (đỉnh hình tròn).
Phần tử A[i, j] = -1 nghĩa là trong công thức ứng với cột j có yếu tố

tam giác ứng với cột i. Ngược lại A[i,j] = 0.
Để thực hiện thao tác "kích hoạt" một đỉnh hình tròn, ta đặt giá trị
của toàn dòng ứng với yếu tố tam giác bằng 1.
Để kiểm tra xem một công thức đã có đủ n-1 yếu tố hay chưa
(nghĩa là kiểm tra điều kiện "đỉnh hình chữ nhật có cung nối với n đỉnh
hình tròn mà n-1 đỉnh hình tròn đã được kích hoạt"), ta chỉ việc lấy hiệu
giữa tổng số ô có giá trị bằng 1 và tổng số ô có giá trị -1 trên cột ứng
với công thức cần kiểm tra. Nếu kết quả bằng n, thì công thức đã có đủ
17
n-1 yếu tố.
Khả năng của hệ thống này không chỉ dừng lại ở việc tính ra giá trị
các yếu tố cần thiết, với một chút sửa đổi, chương trình này còn có thể
đưa ra cách giải hình thức của bài toán và thậm chí còn có thể chọn
được cách giải hình thức tối ưu (tối ưu hiểu theo nghĩa là cách giải sử
dụng những công thức đơn giản nhất). Sở dĩ có thể nói như vậy vì cách
suy luận của ta trong bài toán này là tìm kiếm theo chiều rộng. Do đó, khi
đạt đến kết quả, ta có thể có rất nhiều cách khác nhau. Để có thể chọn
được giải pháp tối ưu, bạn cần phải định nghĩa được độ "phức tạp" của
một công thức. Một trong những tiêu chuẩn thường được dùng là số
lượng phép nhân, chia, cộng, trừ, rút căn, tính sin, cos, được áp dụng
trong công thức. Các phép tính sin, cos và rút căn có độ phức tạp cao
nhất, kế đến là nhân chia và cuối cùng là cộng trừ. Cuối cùng bạn có thể
cải tiến lại phương pháp suy luận bằng cách vận dụng thuật toán A* với
ước lượng h=0 để có thể chọn ra được "đường đi" tối ưu. Ta chọn ước
lượng h=0 vì hai lý do sau (1) không gian bài toán nhỏ nên ta không cần
phải giới hạn độ rộng tìm kiếm (2) xây dựng một ước lượng như vậy là
tương đối khó khăn, đặc biệt là làm sao để hệ thống không đánh giá quá
cao h.
Ưu điểm
Mạng ngữ nghĩa rất linh động, ta có thể dễ dàng thêm vào mạng

các đỉnh hoặc cung mới để bổ sung các tri thức cần thiết.
Mạng ngữ nghĩa có tính trực quan cao nên rất dễ hiểu.
Mạng ngữ nghĩa cho phép các đỉnh có thể thừa kế các tính chất từ
các đỉnh khác thông qua các cung loại "là", từ đó, có thể tạo ra các liên
kết "ngầm" giữa những đỉnh không có liên kết trực tiếp với nhau.
18
Mạng ngữ nghĩa hoạt động khá tự nhiên theo cách thức con người
ghi nhận thông tin.
Nhược điểm
Cho đến nay, vẫn chưa có một chuẩn nào quy định các giới hạn
cho các đỉnh và cung của mạng. Nghĩa là bạn có thể gán ghép bất kỳ khái
niệm nào cho đỉnh hoặc cung!
Tính thừa kế (vốn là một ưu điểm) trên mạng sẽ có thể dẫn đến
nguy cơ mâu thuẫn trong tri thức. Sở dĩ có điều này là vì có sự không rõ
ràng trong ngữ nghĩa gán cho một nút của mạng. Bạn đọc có thể phản đối
quan điểm vì cho rằng, việc sinh ra mâu thuẫn là do ta thiết kế mạng dở
chứ không phải do khuyết điểm của mạng!. Tuy nhiên, xin lưu ý rằng, tính
thừa kế sinh ra rất nhiều mối liên "ngầm" nên khả năng nảy sinh ra một
mối liên hệ không hợp lệ là rất lớn!
Hầu như không thể biển diễn các tri thức dạng thủ tục bằng mạng
ngữ nghĩa vì các khái niệm về thời gian và trình tự không được thể hiện
tường minh trên mạng ngữ nghĩa.
V. Tài liệu tham khảo
[1] Definitions overview of Fuzzy Ontology, Trương Hải Bằng,
Dương Hoàng Thanh,IT@EDU Conference 2010.
[2] Website Bách khoa toàn thư mở Wikipedia về Ontology,
/>19

×