Tải bản đầy đủ (.doc) (22 trang)

TÌM HIỂU CÂY CÚ PHÁP TRỪU TƯỢNG (AST)

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 (245.53 KB, 22 trang )

LÝ THUYẾT
KNOWLEDGE DISCOVERY
SOFTWARE MINING
ASTRACT SYNTAX TREE (AST)
Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh
TÌM HIỂU CÂY CÚ PHÁP TRỪU TƯỢNG
(AST)
I. Khái niệm
Trong khoa học máy tính, một cây cú pháp trừu tượng (AST), hoặc chỉ
cây cú pháp, là một đại diện trong cơ cấu cây cú pháp trừu tượng của mã nguồn
viết bằng một ngôn ngữ lập trình. Mỗi nút của cây biểu thị một xây dựng xảy ra
trong mã nguồn. Cú pháp là "trừu tượng" theo ý nghĩa là nó không đại diện cho
từng chi tiết sẽ xuất hiện trong các cú pháp thực tế. Ví dụ, dấu ngoặc nhóm được
ngầm định trong cấu trúc cây, và một cú pháp xây dựng như một biểu thức If-
cond-then đó có thể được biểu thị bằng một nút duy nhất với hai nhánh.
Điều này làm cho cây Cú pháp trừu tượng khác nhau từ cây Cú pháp cụ thể, theo
truyền thống được gọi là cây phân tích cú pháp, thường được xây dựng bởi các phần phân tích
cú pháp của các dịch mã nguồn, biên soạn quy trình (mặc dù có lẽ đặt tên unintuitive). Một
khi được xây dựng, thông tin bổ sung được thêm vào bằng cách xử lý tiếp theo AST, ví dụ,
phân tích ngữ nghĩa.

II-Thiết kế cây cú pháp trừu tượng
Mỗi nút được biểu diễn bằng một cấu trúc cho một kiểu nút cụ thể. Một
nút được tạo ra bằng cách gọi một hàm trả về một con trỏ trỏ đến một cấu trúc
đại diện cho nút đó. Chức năng này cũng như các đối số nút con khác cho một
kiểu nút cụ thể. Ví dụ, một nút chữ ký có thể được tạo ra bằng cách sử dụng
chức năng node_signature . Cú pháp chữ ký là:
signature = operationName [attributes] arguments responses
Do đó, một nút chữ ký sẽ có các nút phụ cho tên hoạt động, thuộc tính,
đối số và phản ứng. Cơ cấu và chức năng mà gọi trình tạo ra nó là:
Nhóm : Vũ-Uyên-Thảo -2-


Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh
Struct Signature
{
Struct AttributeList * thuộc tính;
Struct Identifier * tên;
Struct DeclarationList * đối số;
Struct TerminationSet * phản ứng;
Extern struct Signature * node_signature (
Struct AttributeList * thuộc tính;
Struct Identifier * tên;
Struct DeclarationList * đối số;
Struct TerminationSet * phản ứng);
Phân tích cú pháp làm việc theo cách của mình để dưới cùng của từng
ngành, sau đó backtracks lên, tạo ra các nút giống như vậy, vì thế các đối số cho
node_signature chức năng được biết đến trước khi nó được gọi. Ở đây chức
năng mà phân tích chữ ký chạy sẽ phân tích các chức năng mà nhiều cây phụ
khác. Mỗi phần này trả về một con trỏ tới các nút cho cây con. Các chức năng
node_signature sau đó được gọi với các con trỏ như các đối số. Chức năng
node_signature sau đó phân bổ không gian cho một nút chữ ký, và bản sao các
node con trỏ vào cấu trúc cho các node mới.
Các nút khác được xử lý một cách tương tự.
Hai loại chính của nút được xử lý: Những thành phần mà có một loạt các
nút con, trong đó chữ ký là một ví dụ, và những thành phần mà có một danh
sách. Sau đó có hai tham số, các con trỏ tới các nút ở đầu và đuôi của danh sách.
Mỗi nút sẽ đã có các nút con liên kết với nó, tùy thuộc vào loại của nút.
1/ Cây đi bộ
Như khi tạo cây, một chức năng được cung cấp cho từng loại nút. Đối với
DPL, cây đi bộ khác nhau sử dụng mã khác nhau. Ví dụ, một máy in đẹp được
viết bằng DPL, và một phạm vi kiểm tra được viết bằng C. Cả hai cây đi bộ,
không có mã thông thường, mặc dù thực hiện các hoạt động tương tự.

Nhóm : Vũ-Uyên-Thảo -3-
Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh
Các máy in đẹp, có một chức năng cho từng nút. Chức năng này chạy sẽ
tiếp tục in nút con, và cho biết thêm trong cú pháp yêu cầu bất kỳ (Ví dụ ngoặc,
vv.) Việc kiểm tra phạm vi thực hiện một nhiệm vụ tương tự, cách gọi các chức
năng để thực hiện phạm vi kiểm tra của nút con.
2/ Chú thích
Vấn đề duy nhất là sẽ xuất hiện cho được các bản đồ của cú pháp nút
AST. Trong một số trường hợp các nút bổ sung đã được tạo ra để tạo điều kiện
cho các mã, và không có bản đồ trực tiếp giữa các nút và các mặt hàng của cú
pháp.
3/ Phương pháp tiếp cận gói Modula-3
Các gói Modula-3 cung cấp trang thiết bị cơ bản để xác định một
Cây cú pháp trừu tượng. Nó định nghĩa một loại nút cơ bản AST.NODE, và
phân biệt giao diện, xác định một tập hợp các phương pháp tiêu chuẩn áp dụng
đối với một nút AST.
ASTs ngôn ngữ cụ thể được định nghĩa bởi subtyping AST.NODE và
cung cấp triển khai cho các phương pháp tiêu chuẩn.
Phương pháp và tiêu chuẩn hỗ trợ bao gồm:
• Init - cung cấp một bài cho bất kỳ mã không khởi động
• Tên - trả lại tên của một nút (hữu dụng cho gỡ lỗi)
•Cung cấp thông tin nút (số nút con, con trỏ trỏ tới…)
• Iterator cho nút con thông qua các cấp
•Hỗ trợ cho cây đi bộ - thăm nút con
• Hỗ trợ cho các bản sao cây
• Hỗ trợ định "hiển thị" một nút cây - ngôn ngữ cụ thể
Cây thực sự là một đồ thị, gồm một tập các nút kết nối được tất cả các
trường hợp của phân nhóm của kiểu đối tượng nút. Các nút có thể có các thuộc
tính, mà cuối cùng biểu diễn như các lĩnh vực đối tượng hoặc phương pháp.
Nhóm : Vũ-Uyên-Thảo -4-

Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh
Thông thường, một thuộc tính là một tham chiếu hoặc kết nối tới một số nút
khác trong AST.
Một AST cho một ngôn ngữ cụ thể được quy định như một tập hợp các
giao diện, mà chia sẻ quy ước đặt tên LLAST, nơi mà LL là một tiền tố ngôn
ngữ cụ thể. Trong thời hạn thiết lập này, nó cũng thường để chỉ định AST là một
loạt các quan điểm, mỗi cung cấp một số các nút mới (có thể không có) và các
thuộc tính mới trên các nút quy định tại các lớp khác.
Các tờ khai của các loại nút và các chi tiết kỹ thuật của nút các thuộc tính
được chia thành các giao diện riêng biệt. Các loại nút cho xem từng được định
nghĩa trong một giao diện có tên LLAST_VV, nơi VV là một thẻ biểu thị quan
điểm. Nền tảng thuộc tính trên các nút được quy định trong một giao diện được
đặt tên LLAST_VV_K, trong đó K là một thẻ mà biểu thị hoặc là các loại thuộc
tính đang được thêm vào hoặc chỉ ra một sub-view. Ví dụ, F là quy ước được sử
dụng để chỉ ra các thuộc tính biểu diễn như các lĩnh vực đối tượng, và cho thấy
phương pháp được áp dụng cho phần xem này.
Các loại thuộc tính cho Modula-3 rơi vào 2 nhóm : Các nhóm đầu tiên
gồm các loại từ vựng, biểu thị, ví dụ, các ký tự của một nhận dạng của các ký tự
của một văn bản chữ. Những loại được cho định nghĩa cứng nhắc của việc thực
hiện trình biên dịch cụ thể. Nhóm thứ hai bao gồm các con của một nút, mà luôn
luôn là nút các loại. Lý do đằng sau này là khi một loại nút mới được tạo ra, là
có tổng hợp của tất cả các thuộc tính đã được quy định tại các quan điểm đóng
góp.
Các quan điểm khác nhau, tuy nhiên, có khác biệt, và không nhận thức
của nhau.
4/ Các phương pháp tiếp cận AST DIMMA
a/ Yêu cầu
• Một cơ sở để tạo ra các nút cho từng phần tử của cú pháp
• Các nút phải được tạo ra từ dưới lên, do đó là mỗi node được tạo ra, nó
biết về nút con (nếu có).

Nhóm : Vũ-Uyên-Thảo -5-
Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh
• Truy cập thông tin trong nút là có sẵn chỉ bằng gọi trình, để đảm bảo
đóng gói và an toàn dữ liệu.
• Truy cập thông tin trong nút cơ sở xem xét
• Nó phải có thể là :
- Lặp trong suốt toàn bộ cây
- Đi bộ thông qua các con của một node
- Hiển thị một nút
- Bổ sung thêm node xem.
• Mã AST nên được viết bằng C + +
b. Các tính năng hữu ích của C + +
Các tính năng rõ ràng nhất của C + + là sự giúp đỡ của lớp trừu tượng.
Một lớp "nút" có thể chứa các chức năng tinh khiết ảo mà có thể sau đó được
thực hiện trong một lớp có nguồn gốc đối với từng loại nút. Bởi điều này có
nghĩa nút với hành vi khác nhau có thể được xử lý trong cùng một cách.
Đi từng yêu cầu nói trên lần lượt:
- Một nút sẽ được xác định cho từng phần tử của cú pháp. Điều này
sẽ được xuất phát từ nút "một lớp cơ sở", trong đó có (phần lớn)
các chức năng tinh khiết ảo. Điều này có thể là gián tiếp thông qua
các nút khác chung chung. Các nút có thể sau đó được tạo ra bằng
cách sử dụng toán tử mới.
- Các node sẽ được tạo ra từ dưới lên, và con trỏ tới các nút tiếp theo
truyền cho các nút mới khi chúng được tạo ra. Như vậy sau này các
nút hoặc các nhóm các nút có thể bao gồm một đối tượng ở bên
phải của riêng của họ.
- Tất cả dữ liệu sẽ được làm riêng biệt đến các nút (ở một số mức độ
derivation) và tiếp cận với thế giới bên ngoài chỉ bằng cách sử dụng
chức năng thành viên. Trong nhiều trường hợp, các dữ liệu sẽ
không có sẵn trực tiếp dưới mọi hình thức, nhưng hiệu quả của nó

nhìn thấy bằng cách thực hiện một chức năng thành viên.
Nhóm : Vũ-Uyên-Thảo -6-
Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh
- Việc sử dụng các "quan điểm" có thể được hỗ trợ bởi việc sử dụng
các chức năng thành viên.
Chức năng Thành viên sẽ được cung cấp cho:
- Việc lặp trong cả cây - Đi bộ thông qua các con của một node
- Hiển thị một nút chức năng.
c. Xác Nhận
Các AST đã được xác nhận bằng cách áp dụng nó với ngôn ngữ
nguyên mẫu DPL.
III-Lớp cơ sở cho AST
Phần này cung cấp một đề cương xây dựng một nút AST, và
xác định các dữ liệu và chức năng thành viên yêu cầu trong các nút cơ bản.
Có hai loại chính của lớp: Những thành phần đại diện cho một nút cá nhân,
và những thành phần đại diện cho một danh sách các nút. Một lớp quản lý cũng
cần thiết xử lý các nhóm sau :
1/ Lớp nút
Các lớp cơ bản nhất trong thiết kế AST là lớp Node. Mỗi phần tử của
cú pháp được đại diện bởi một node. Lớp nút cơ bản cung cấp một nhóm
nhà xây dựng và chức năng một số thành viên, hầu hết là nói chung không
được sử dụng bởi các lớp học có nguồn gốc, trong đó cung cấp cho nhà xây
dựng riêng của chúng cụ thể thành viên dữ liệu. Tuy nhiên những nút cơ bản đã
được để vào cung cấp tổng quát hơn, và để cung cấp một bản mẫu cho các lớp
có nguồn gốc.
Hai thành phần dữ liệu được cung cấp: Một con trỏ vào một danh sách các
nút, và một chuỗi, mà thường được sử dụng để giữ lại tên của lớp có nguồn gốc,
và do đó cung cấp viện trợ để gỡ lỗi.
2/ Nhóm danh sách nút
Nhóm : Vũ-Uyên-Thảo -7-

Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh
Một danh sách các node bao gồm một đầu, mà là một con trỏ trỏ tới một
nút, và 1 đuôi, mà là một con trỏ đến một danh sách nút thêm. Hệ thống có thể
được thêm vào phần đầu của một danh sách mới, và đuôi đến danh sách hiện tại.
Một danh sách trống sẽ có cả hai đầu và đuôi đặt thành Null. Các mục cuối trong
một danh sách sẽ có đuôi của nó thiết lập để Null.
c/ Lớp hỗ trợ
Một số lớp chung chung cung cấp hỗ trợ cho các lớp khác bằng cách định
nghĩa cụ thể dữ liệu hoặc hoạt động.
IV-Chi tiết phương pháp xây dựng AST
Phần này mô tả thiết kế chi tiết của các nút cho từng yếu tố của
cú pháp, trong dữ liệu cụ thể các thành viên và các chức năng constructors. Các
nút cá nhân được mô tả trong các phần sau trong bảng chữ cái trật tự. Khi bắt
đầu các cuộc thảo luận trên mỗi node, cú pháp có liên quan được hiển thị. Điều
này sau đó có thể dễ dàng liên quan đến dữ liệu thành viên và các constructor
cho nút đó.
Việc sử dụng các constructor rất nhiều tùy chọn đơn giản hoá việc sử
dụng các nút, cung cấp lớn hơn nhiều cho các lập trình ứng dụng.
* Nút
a/ Các thuộc tính nút
attributeList = "<" (attributeName [attributeBlock]) ">"
Một thuộc tính có một số biến của tên và (tùy chọn) cặp khối. Điều này
được đại diện bởi một danh sách thuộc tính của đối tượng, mà là một danh sách
các con trỏ trỏ tới nút thuộc tính các đối tượng.
b/ Các ràng buộc nút
definition = name {name} “=” expression
assignment = name {name} “:=” expression
initialisation = declaration {declaration} “:=” expression
Nhóm : Vũ-Uyên-Thảo -8-
Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh

V-Xem cụ thể
Phần này mô tả các dữ liệu và hàm thành viên cho các nút của AST cho
quan điểm cụ thể.
1/ Máy in đẹp
Mỗi nút có một chức năng hiển thị là một trong những chức năng thành
viên của mình. Chức năng này bình thường sẽ hiển thị bất kỳ phần cú pháp của
nút hiện hành, và gọi hiển thị chức năng trên mỗi nút-phụ. Các hiển thị do đó
chức năng thực hiện lặp lại của chính mình trong suốt cây. Một trình hiển thị tại
bất kỳ cấp độ sẽ hiển thị các nút được chỉ định, và tất cả các nút phụ của nút đó.
Mỗi chức năng hiển thị cho biết thêm bất kỳ cú pháp cần thiết cho nút đó, ví dụ:
các từ "Đối tượng" hoặc "sau khi xử lý", thụt đầu dòng, dấu ngoặc đơn hoặc
bất kỳ nhà khai thác như thích hợp.
2/ Phạm vi
Việc kiểm tra phạm vi truy cập các AST bằng cách thức của một hàm
phạm vi được cung cấp bởi mỗi nút.
3/ Kết luận
Các suy luận truy cập AST bằng cách thức của một hàm, thường được gọi
là findType, cho mỗi nút. Một số nút có thể hỗ trợ một số phương pháp khác
nhau để dùng bằng suy luận kiểu.
Nhóm : Vũ-Uyên-Thảo -9-
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
BÀI TẬP
CHẨN ĐOÁN VÀ HƯỚNG DẪN SỬ
DỤNG THUỐC
Nhóm : Vũ-Uyên-Thảo -10-
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
Giới thiệu
- Ngày nay, công nghệ thông tin là lĩnh vực không thể thiếu trong đời
sống con người. Hầu như trong mọi ngành, mọi lĩnh vực công nghệ thông tin
đều có mặt. Các sản phẩm phần mền tạo ra đã phục vụ và đem lại không ít lợi

ích về mặt kinh tế như các phần mền quản lý, thương mại điện tử, các dịch vụ
mạng truyền thống v .v… . Đặc biệt các sản phẩm của công nghệ thông tin ngày
nay còn đóng vai trò như một chuyên gia trong mọi lĩnh vực, nó đã giải quyết
được rất nhiều vấn đề thường ngày mà người bình thường không thể làm được.
Các hệ chuyên gia này chẩn đoán hay đưa ra các quyết định từ tập các giả thiết
đầu vào.
- Trong cuộc sống hằng ngày, có rất nhiều các loại bệnh thường xuyên đe
dọa đến sức khỏe của con người chúng ta. Thường các loại bệnh này xuất phát
từ các triệu chứng, nhưng không phải ai cũng biết. Cho nên yêu cầu của con
người chúng ta cần có một chuyên gia giúp họ chẩn đoán được các bệnh và giúp
họ hướng giải quyết để đảm báo được sức khỏe cho chính mình.
- Cũng xuất phát từ yêu cầu đó, chúng tôi chọn đề tài “Xây dựng hệ
chuyên gia chẩn đoán các bệnh thường gặp từ các triệu chứng và hướng dẫn sử
dụng các loại thuốc đặc trị”.
Nhóm : Vũ-Uyên-Thảo -11-
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
Bố cục trình bày
Nội dung trình bày gồm các phần sau:
Phần mở đầu
Phần nội dung
I. Giới thiệu về đề tài
- Trình bày tên và mục đích của đề tài.
- Phát biểu bài toán:
+ Phát biểu các định nghĩa về các loại bệnh thường gặp.
+ Phát biểu các định nghĩa về các triệu chứng bệnh.
II. Phân tích và thiết kế
1. Xây dựng các vị từ từ phát biểu của bài toán
2. Xây dựng logic vị từ về bệnh từ phát biểu của bài toán.
3. Xây dựng logic vị từ về cách sử dụng thuốc cho mỗi triệu chứng.
4. Xây dựng các luật và các sự kiện trong ngôn ngữ Prolog

- Xây dựng các sự kiện về triệu chứng bệnh.
- Xây dựng các sự kiện về thuốc.
- Xây dựng các luật về bệnh.
- Xây dựng các luật về sử dụng thuốc cho mỗi triệu chứng.
III. Một số kết quả đạt được
Phần kết luận: Tổng kết các kết quả đạt được và chưa đạt được của đề tài.
Nhóm : Vũ-Uyên-Thảo -12-
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
I. Giới thiệu đề tài
1. Tên đề tài
Xây dựng hệ chuyên gia chẩn đoán các bệnh thường gặp từ các triệu chứng
và hướng dẫn sử dụng các loại thuốc đặc trị.
2. Mục đích đề tài
Nhằm giúp cho mọi người có thể đoán được các bệnh từ các triệu chứng
thường gặp trong cuộc sống hằng ngày, từ đó có các biện pháp điều trị hợp lý và
tránh các rũi ro có thể mắc phải khi không chủ động phòng ngừa.
3. Phát biểu bài toán
Bài toán là một hệ chuyên gia được xây dựng nhằm đoán một số bệnh
thông thường mà mọi người thường gặp trong cuộc sống. Với mong muốn một
phần nào đó có thể tư vấn cho người sử dụng hệ thống biết bệnh mình đang mắt
phải, một số thuốc thông thường có thể sử dụng, chương trình có thể đưa ra tên
bệnh và các loại thuốc tương ứng với bệnh đó. Người sử dụng chỉ cần trả lời
đúng hoặc sai các câu hỏi về triệu chứng của hệ thống và từ đó hệ thống sẽ đưa
ra tên bệnh và một số loại thuốc cụ thể.
Ví dụ: người sử dụng hệ thống sẽ nhận được câu trả lời là bị cảm nêu tất cả
các triệu chứng sau:nhức đầu, ho, sổ mũi, nóng sốt, đều được trả lời đúng
Để làm được các yêu cầu trên thì hệ thống cần có một cơ sở tri thức về các
triệu chứng, các bệnh, các loại thuốc thông thường. Trong chương trình này thì
chỉ có thể đoán được 7 bệnh được cho là thông thường nhất mà mọi người hay
gặp. Tương ứng với các bệnh đó thì có các triệu chứng và loại thuốc điều trị

tương ứng.
Sau đây là những dữ kiện về triệu chứng của các bệnh và thuốc điều trị
tương ứng:
a. Phát biểu về các bệnh
Nhóm : Vũ-Uyên-Thảo -13-
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
(1) Một người bị bệnh cảm khi có các triệu chứng có các triệu chứng của
bện cảm và các triệu chứng đó là: ho, nhức đầu, nóng sốt, sổ mũi
(2) Một người bị viêm phế quản khi có các triệu chứng của bệnh viêm phế
quản và các triệu chứng đó là: kéo dài, có đàm, gầy sút.
(3) Một người bị viêm phổi khi có các triệu chứng của bệnh viêm phổi và
các triệu chứng đó là: thở nhanh, ho, có đàm, đàm có máu.
(4) Một người bị viêm mũi có các triệu chứng của bệnh viêm mũi và các
triệu chứng đó là: hắt hơi, ngạt mũi, ngứa mũi, nhức đầu.
(5) Một người bị đau răng có các triệu chứng của bệnh đau răng và các
triệu chứng đó là: răng đau, nóng sốt.
(6) Một người bị viêm lợi có các triệu chứng của bệnh viêm lợi và các triệu
chứng đó là: lợi sưng, nóng sốt.
(7) Một người bị đau bụng có các triệu chứng của bệnh đau bụng và các
triệu chứng đó là: bụng đau, tiêu chảy.
b. Phát biểu các loại thuốc để điều trị các triệu chứng tương ứng
(1) Thuốc Naproxen, Aspirin, Ergotamin điều trị triệu chứng nhức đầu
(2) Thuốc Xiro ho, Bổ phế điều trị triệu chứng ho
(3) Thuốc Meclizin,Diazepam điều trị triệu chứng chóng mặt
(4) Thuốc Telphilin, Ephendrin điều trị triệu chứng thở nhanh
(5) Thuốc Xiro ho, Codien, Aspirin điều trị triệu chứng ho kéo dài
(6) Thuốc Phenergan, Pismanal điều trị triệu chứng hắt hơi
(7) Thuốc kháng sinh như: Penixilin hoặc Sunphamit điều trị triệu chứng
viêm nhiễm.
(8) Thuốc hạ sốt như: Penixilin hoặc Sunphamit điều trị triệu chứng nóng

sốt.
(9) Các loại thuốc giảm đau điều trị các chứng đau.
Nhóm : Vũ-Uyên-Thảo -14-
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
Có thể biểu diễn các mối quan hệ của các triệu chứng và thuốc của bệnh cảm
như sau:
II. Phân tích và thiết kế
1. Xây dựng các vị từ
Stt Vị từ Giải thích
1 TC_CAM(X) X là các triệu chứng của bệnh cảm
2 TC_BENH(X,Y) X là các triệu chứng của bệnh Y
3 TC_VPQ(X)
X là các triệu chứng của bệnh viêm phế
quản
4 TC_VIEMPHOI(X) X là các triệu chứng của bệnh viêm phổi
5 TC_VIEMMUI(X) X là các triệu chứng của bệnh viêm mũi
6 TC_DAURANG(X) X là các triệu chứng của bệnh đau răng
7 TC_VIEMLOI(X) X là các triệu chứng của bệnh viêm lợi
8 TC_DAUBUNG(X) X là các triệu chứng của bệnh đau bụng
9 THUOC_HO(X) X là thuốc trị triệu chứng ho
10 THUOC_KHANGSINH(X) X là các loại thuốc kháng sinh
11 THUOC_GIAMDAU(X) X là các loại thuốc giảm đau
Nhóm : Vũ-Uyên-Thảo -15-
Sunpamit
THUOCSOMUI THUOCNONGSOT
CAM
SOMUI NHUCDAU
HO NONGSOT
THUOCNHUCDAU THUOCHO
Naproxem

Aspirin
Xiro ho
Bophe
Penixilin
Ergotamin
Panadol
Paracetamol
Hình 1: Cây biểu thị mối quan hệ các triệu chứng cảm
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
12 THUOC_HASOT(X) X là các loại thuốc hạ sốt
13 THUOC_TIEUCHAY(X) X là các loại thuốc trị chứng tiêu chảy
14 THUOC_BO(X) X là các loại thuốc bổ
15 DIEUTRI(X,Y) Bệnh X điều trị thuốc Y
16 VIEM(X) X là các triệu chứng viêm nhiễm
17 DAU(X) X là các triệu chứng đau
18 THUOC_HATHOI(X) X là các loại thuốc trị chứng hắt hơi
19 THUOC_THONHANH X là các loại trị các chứng thở nhanh.
2. Xây dựng các logic vị từ về bệnh
(1) Bệnh cảm khi có biểu hiện của triệu chứng cảm

X TC_CAM(X)

TC_BENH(X, cam)
(2) Bệnh viêm phế quản khi có biểu hiện của triệu chứng viêm phế quản

X TC_VPQ(X)

TC_BENH(X, viemphequan)
(3) Bệnh viêm phổi khi có biểu hiện của triệu chứng viêm phổi


X TC_VIEMPHOI(X)

TC_BENH(X, viemphoi)
(4) Bệnh viêm mũi khi có biểu hiện của triệu chứng viêm mũi

X TC_VIEMMUI(X)

TC_BENH(X, viemmui)
(5) Bệnh đau răng khi có biểu hiện của triệu chứng đau răng

X TC_DAURANG(X)

TC_BENH(X, daurang)
(6) Bệnh viêm lợi khi có biểu hiện của triệu chứng viêm lợi

X TC_VIEMLOI(X)

TC_BENH(X, viemloi)
(7) Bệnh đau bụng khi có biểu hiện của triệu chứng đau bụng

X TC_DAUBUNG(X)

TC_BENH(X, daubung)
Nhóm : Vũ-Uyên-Thảo -16-
Bảng 1: Danh sách các vị từ
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
3. Xây dựng các logic vị từ về thuốc
(1) Nếu bị ho thì điều trị bằng các loại thuốc trị ho.

X THUOC_HO(X)


DIEUTRI(ho, X)
(2) Nếu bị viêm hiễm thì điều trị bằng thuốc kháng sinh.

X ,

Y THUOC_KHANGSINH(X)

VIEM(Y)

DIEUTRI(Y,X)
(3) Nếu bị nóng sốt thì dùng thuốc hạ sốt.

X THUOC_HASOT(X)

DIEUTRI(nongsot, X)
(4) Nếu bị tiêu chảy thì dùng thuốc trị tiêu chảy

X THUOC_TIEUCHAY(X)

DIEUTRI(tieuchay, X)
(5) Nếu bị các cơn đau thì dùng các loại thuốc giảm đau.

X,

Y THUOC_GIAMDAU(X)

DAU(Y)

DIEUTRI(Y, X)

(5) Nếu bị suy nhược cơ thể thì uống thuốc bổ

X THUOC_BO(X)

DIEUTRI(suynhuoc, X)
(6) Nếu bị hắt hơi thì dùng thuốc trị hắt hơi

X THUOC_HATHOI(X)

DIEUTRI(hathoi, X)
(7) Nếu bị chúng thở nhanh thì dùng thuốc trị thở nhanh.

X THUOC_THONHANH(X)

DIEUTRI(thonhanh, X)
Nhóm : Vũ-Uyên-Thảo -17-
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
4. Biểu diễn các luật và sự kiện trong ngôn ngữ Prolog
a. Các sự kiện
(1) Các sự kiện về thuốc:
thuoc_ho([xiro_ho,bo_phe]).
thuoc_somui([panadol,decolzen]).
thuoc_hasot([a,b]).
thuoc_thonhanh([teophylin,epledrin]).
thuoc_tieuchay([dd_arezol,pecperin]).
thuoc_giamdau([naproxen,aperin,ergotamin]).
thuoc_bo([vitaminA,vitaminB]).%cho gay sut
thuoc_khangsinh([penixilin,sunphamit]).
thuoc_hathoi([phenergan,pismanal]).
(2) Các sự kiện về triệu chứng:

tc_cam([somui,nongsot,ho,nhucdau]).
tc_viemphoi([thonhanh,ho,codam,damcomau]).
tc_viemphequan([gaysut,hokeodai,codam]).
tc_viemmui([ngatmui,nguamui,hathoi]).
tc_daurang([rangdau,nongsot]).
tc_viemloi([loisung,nongsot]).
tc_daubung([bungdau,tieuchay]).
tc_dau(X):-X=bungdau;X=rangdau.
b. Các luật về bệnh
(1) Bệnh cảm:
tc_benh(X, cam):-tc_cam(X).
Nhóm : Vũ-Uyên-Thảo -18-
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
(2) Bệnh viêm phế quản:
tc_benh(X, viemphequan):-tc_vpq(X) .
(3) Bệnh viêm phổi:
tc_benh(X, viemphoi):-tc_viemphoi(X) .
(4) Bệnh viêm mũi:
tc_benh(X, viemmui):-tc_viemmui(X) .
(5) Bệnh đau răng:
tc_benh(X, daurang):-tc_daurang(X) .
(6) Bệnh viêm lợi:
tc_benh(X, viemloi):-tc_viemloi(X) .
(7) Bệnh đau bụng:
tc_benh(X, daubung):-tc_daubung(X) .
c. Các luật về dùng thuốc điều trị cho mỗi triệu chứng
(1) Điều trị ho:
dieutri(ho, X) :- thuoc_ho(X) .
(2) Điều trị các chứng viêm nhiễm:
dieutri(Y,X) :- thuoc_khangsinh(X),viem(Y).

(3) Điều trị hạ sốt:
dieutri(nongsot, X) :- thuoc_hasot(X) .
(4) Điều trị tiêu chảy:
dieutri(tieuchay, X) :- thuoc_tieuchay(X) .
(5) Điều trị các cơn đau:
dieutri(Y, X) :- thuoc_giamdau(X)

dau(Y).
(5) Điều trị chứng suy nhược:
Nhóm : Vũ-Uyên-Thảo -19-
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
dieutri(suynhuoc, X):- thuoc_bo(X).
(6) Điều trị chứng hắt hơi:
dieutri(hathoi, X):-thuoc_hathoi(X) .
(7) Điều trị chứng thở nhanh:
dieutri(thonhanh, X):-thuoc_thonhanh(X) .
III. Một số kết quả đạt được
Để biết được ta mắc chứng bệnh gì thì hỏi hệ thống như sau:
?-chandoan.(Enter)
Hệ thống sẽ lần lượt hỏi ta các triệu chứng, từ đó hệ thống đưa ra bệnh và
các loại thuốc đặc trị cụ thể.
Minh họa bằng chương trình (chẩn đoán bệnh cảm).

Nhóm : Vũ-Uyên-Thảo -20-
Hình 2: Minh họa chẩn đoán bệnh cảm
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh
Minh họa bằng chương trình (chẩn đoán bệnh đau răng).
Nhóm : Vũ-Uyên-Thảo -21-
Hình 3: Minh họa chẩn đoán bệnh đau răng
Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh

Kết luận
Bài toán chỉ là một hệ chuyên gia nhỏ về chẩn đoán bệnh và hướng dẫn sử
dụng thuốc.Chương trình có thể chẩn đoán được bệnh với những triệu chứng
cho trước. Và với bệnh vừa chẩn đoán được chương trình có thể đưa ra một số
loại thuốc thông thường. Tuy nhiên, để xây dựng một hệ chuyên gia thực sự thì
chương trình cần phải hoàn thiện rất nhiều.
Một số vấn đề mà chương trình vẫn chưa giải quyết được đó là chương
trình chỉ mới chẩn đoán được một số bệnh thông thường, các thông tin về triệu
chứng cũng như là các loại thuốc vẫn chưa được phong phú. Nếu có thể, chương
trình có thể được phát triển theo hướng chẩn đoán bệnh cho những đối tượng
khác nhau, lứa tuổi khác nhau để việc chẩn đoán đưa ra bệnh cho người sử dụng
có thể được chính xác hơn, cụ thể hơn.
Nhóm : Vũ-Uyên-Thảo -22-

×