Tải bản đầy đủ (.pdf) (35 trang)

(Tiểu luận) tiểu luận chuyên ngành khoa học máy tính môn cơ sở tri thứcbiểu diễn cơ sở tri thứ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 (4.94 MB, 35 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

BỘ GIÁO DỤC VÀ ĐÀO TẠO

<b>ĐẠI HỌC MỞ THÀNH PHỐ HỒ CHÍ MINH</b>

<b>TIỂU LUẬN</b>

CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH MƠN: CƠ SỞ TRI THỨC

<b>BIỂU DIỄN CƠ SỞ TRI THỨC</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>MỤC LỤC</b>

<b><small>GIỚI THIỆU HỆ CƠ SỞ TRI THỨC...4</small></b>

<b><small>I. ĐỒ THỊ TRI THỨC (KNOWLEDGE GRAPH)...4</small></b>

<small>1.CƠ SỞ DỮ LIỆU TRI THỨC YAGO...4</small>

<small>2.BIỂU DIỄN TRI THỨC...5</small>

<b><small>II. CÁC KỸ THUẬT SUY DIỄN VÀ LẬP LUẬN...9</small></b>

<small>1.CÁC LUẬT DẪN...9</small>

<small>2.ĐỒ THỊ LUẬT SUY DIỄN...10</small>

<small>3.ĐỒ THỊ LUẬT SUY DIỄN...12</small>

<small>4.BIỂU DIỄN ĐỒ THỊ LUẬT SUY DIỄN VÀ LẬP LUẬN TIẾN...14</small>

<small>5.BIỂU DIỄN ĐỒ THỊ LUẬT SUY DIỄN VÀ LẬP LUẬN LÙI...19</small>

<b><small>IV. LẬP LUẬN KHÔNG CHẮC CHẮN - HỆ MYCIN...21</small></b>

<small>1.LUẬT ĐƠN GIẢN...22</small>

<small>2.LUẬT PHỨC TẠP...22</small>

<small>3.KẾT HỢP NHIỀU LUẬT CĨ CÙNG KẾT LUẬN...23</small>

<small>4.CHƯƠNG TRÌNH TRIỂN KHAI LẬP LUẬN MYCIN...24</small>

<b><small>IV. LẬP LUẬN MỜ VÀ FUZZY LOGIC CONTROLLER...26</small></b>

<b><small>1.</small></b> <small>LẬP LUẬN MỜ...26</small>

<b><small>2.</small></b> <small>FUZZY LOGIC CONTROLLER...27</small>

<b><small>3.</small></b> <small>VÍ DỤ CHƯƠNG TRÌNH ĐIỀU KHIỂN TỰ ĐỘNG HỆ THỐNG TƯỚI NƯỚC VÀ BÓN PHÂNDỰA VÀO FUZZY LOGIC CONTROLLER...28</small>

<b><small>3.</small></b> <small>VÍ DỤ CHƯƠNG TRÌNH ĐIỀU KHIỂN TỰ ĐỘNG HỆ THỐNG BƠM NƯỚC VỚI CHỈ SỐ 3 BIẾN BẤT KỲ NHẬP TỪ BÀN PHÍM...30</small>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>Tài liệu tham khảo</b>

- Giáo trình các hệ cơ sở tri thức. Biên soạn: GS.TSKH Hoàng Kiếm, TS. Đỗ Phúc và TS. Đỗ Văn Nhơn.

- Clojure for Machine Learning ISBN: 978-1-78328-435-1 Paperback: 292 pages.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>GIỚI THIỆU HỆ CƠ SỞ TRI THỨC.</b>

Cơ sở tri thức là một hệ thống thông tin được thiết kế để lưu trữ, quản lý và truy xuất kiến thức và thơng tin có liên quan. Nó bao gồm các phần tử cơ bản như dữ liệu, thông tin, khái niệm, quy tắc và mối liên hệ giữa chúng. Các thơng tin này có thể được sắp xếp và tổ chức theo các chủ đề, lĩnh vực hoặc mục đích sử dụng khác nhau. Cơ sở tri thức cung cấp một nền tảng để lưu trữ, quản lý và truy xuất các thông tin và kiến thức có liên quan đến một lĩnh vực hay ngành nghề cụ thể. Điều này giúp tăng tính hiệu quả, độ chính xác và độ tin cậy trong việc quản lý và sử dụng thông tin. Các hệ cơ sở tri thức có thể được sử dụng để giải quyết các vấn đề phức tạp bằng cách kết hợp các thông tin và kiến thức từ nhiều nguồn khác nhau. Chúng có thể được sử dụng trong các lĩnh vực khác nhau, bao gồm y tế, giáo dục, kinh doanh, khoa học và công nghệ.

Cơ sở tri thức là một phần của khoa học máy tính và trí tuệ nhân tạo, nghiên cứu về việc xây dựng và sử dụng các hệ thống thông minh, tự động học để tự động hóa các tác vụ thơng tin, tiếp cận thơng tin, phân tích, tư duy và ra quyết định, giúp con người giải quyết các vấn đề phức tạp và đưa ra các phán đốn chính xác dựa trên các luật, quy tắc và tri thức có được.

Các đối tượng nghiên cứu của cơ sở tri thức bao gồm phương pháp biểu diễn, lưu trữ và xử lý tri thức; các hệ thống hỗ trợ ra quyết định, khai thác dữ liệu và khai phá tri thức; các phương pháp học máy, trí tuệ nhân tạo và khai phá dữ liệu để xác định các mối quan hệ, kết luận và dự đoán.

Hệ cơ sở tri thức (Knowledge base system) là một hệ thống phần mềm được thiết kế để tổ chức, lưu trữ và truy xuất các thông tin tri thức về một lĩnh vực cụ thể nào đó. Hệ thống này bao gồm các thành phần như cơ sở dữ liệu tri thức, các quy tắc suy luận, các phương pháp truy xuất tri thức và các chức năng xử lý tri thức.

Mục đích chính của một hệ cơ sở tri thức là cung cấp cho người sử dụng một nguồn thông tin tri thức tổng hợp, đáng tin cậy và dễ tiếp cận để hỗ trợ trong việc đưa ra quyết định và giải quyết các vấn đề trong lĩnh vực đó.

Một hệ cơ sở tri thức có thể được sử dụng trong nhiều lĩnh vực khác nhau, chẳng hạn như y tế, kinh tế, tài chính, khoa học máy tính, robot học, tự động hóa,... Ví dụ, một hệ cơ sở tri thức trong lĩnh vực y tế có thể cung cấp thơng tin về các bệnh, thuốc và các chế độ dinh dưỡng khác nhau, cung cấp giải đáp các câu hỏi liên quan đến chẩn đoán và điều trị bệnh.

Hệ cơ sở tri thức ngày càng được sử dụng trong lĩnh vực trí tuệ nhân tạo, tự động hóa và học máy để tăng cường khả năng suy luận và xử lý thơng tin của máy tính.

<b>I.ĐỒ THỊ TRI THỨC (KNOWLEDGE GRAPH)1.CƠ SỞ DỮ LIỆU TRI THỨC YAGO</b>

YAGO là một cơ sở dữ liệu tri thức đại diện cho nhiều lĩnh vực tri thức, được sử dụng rộng rãi trong các ứng dụng như truy vấn thông minh, suy luận, phân giải giải thích và xử lý ngơn ngữ tự nhiên. Phát triển của YAGO bắt đầu từ năm 2006 và do các nhà khoa

<b>Too long to read onyour phone? Save to</b>

read later on your computer

Save to a Studylist

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

học của Đại học Max-Planck ở Đức xây dựng. YAGO sử dụng một số nguyên tắc để biểu diễn thông tin tri thức về thế giới thực là các đối tượng tham chiếu đơn giản và rõ ràng (như tên của một quốc gia hoặc một diễn viên) và sử dụng nhiều nguồn dữ liệu khác nhau (như Wikipedia, WordNet) để giúp xác định quan hệ giữa các thực thể khác nhau.

YAGO được tổ chức dưới dạng một danh sách các đối tượng khác nhau (như con người, đất nước, sự kiện, văn hóa) và các quan hệ giữa chúng (như là chủ đề sáng tác, quốc tịch, thành phố sinh sống). Các mối quan hệ này được biểu diễn bằng cách sử dụng các bộ ba (triples) có định dạng (subject, predicate, object). YAGO đã được sử dụng rộng rãi trong các lĩnh vực như trí tuệ nhân tạo, xử lý ngôn ngữ tự nhiên, web sematic, hệ thống hỏi đáp và nhiều ứng dụng khác. Các tính năng của YAGO - chẳng hạn như phong phú về thơng tin, độ chính xác cao cùng về định dạng dữ liệu được tổ chức rõ ràng - đã giúp YAGO trở thành một trong những nguồn tri thức phổ biến nhất được sử dụng trong lọc thông tin và hệ thống hỏi đáp.

<b>2.BIỂU DIỄN TRI THỨC</b>

Đồ thị tri thức trong YAGO được biểu diễn bằng các bộ ba (triples) gồm ba thành phần chính: đối tượng nguồn (subject), quan hệ (predicate) và đối tượng đích (object).

YAGO biểu diễn đồ thị tri thức thông qua các bộ ba như trên, trong đó thực thể và lớp được đại diện bằng các đối tượng trong bộ ba. Những đối tượng này sẽ được định danh đầy đủ để loại bỏ mọi sự không rõ ràng trong việc xác định thực thể, giúp cho đồ thị tri thức trở nên dễ hiểu và ln chính xác.

YAGO xây dựng lên đồ thị tri thức với quan hệ được định nghĩa bằng lĩnh vực khác nhau như kiến trúc, giải trí, địa lý, lịch sử, kinh doanh,... thông qua việc tổng hợp thông tin từ các nguồn dữ liệu như Wikipedia, WordNet và các nguồn dữ liệu khác.

Cấu trúc đồ thị tri thức trong YAGO cho phép các ứng dụng xử lý tri thức, ví dụ như tìm kiếm tri thức, suy luận, trích xuất thơng tin, phát hiện thơng tin mới và nhiều ứng dụng khác.

Sau đây là một ví dụ về biểu diễn đồ thị tri thức chứa 50 triple về lĩnh vực dạy học của giáo viên Võ Thị Thu Liểu của trường THPT TP Cao Lãnh. Sau đó đưa vào máy tính và xử lý tìm đường đi:

import networkx nxas import matplotlib.pyplot pltas KG = nx.DiGraph()

KG.add_edge('Sở GDĐT Đồng Tháp','Bộ GDĐT', label='trực thuộc')

KG.add_edge('Sở GDĐT Đồng Tháp','Trường Chuyên NQD', label= 'có trường chuyên là') KG.add_edge('Trường THPT TP Cao Lãnh' 'Sở GDĐT Đồng Tháp', , label='trực thuộc') KG.add_edge('Trường THPT TP Cao Lãnh' '8 tổ CM', , label='có')

KG.add_edge('Trường THPT TP Cao Lãnh' 'TP Cao Lãnh Tỉnh Đồng Tháp', , label='có địa chỉ ở')

KG.add_edge('Trường THPT TP Cao Lãnh' 'Mơn Tin học', , label='có 4 giáo viên') KG.add_edge('Trường THPT TP Cao Lãnh' 'Lê Văn Lộc', , label='có Hiệu trưởng là')

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

KG.add_edge('Trường THPT TP Cao Lãnh' 'Phòng Giáo dục và Đào tạo thành phố Cao L, ãnh', label='liên kết')

KG.add_edge('Trường THPT TP Cao Lãnh' 'Hội đồng tư vấn giáo dục trường THPT TP C, ao Lãnh', label='hỗ trợ')

KG.add_edge('Trường THPT TP Cao Lãnh' 'Công ty XKLĐ Đồng Tháp', , label='hợp tác') KG.add_edge('Trường THPT TP Cao Lãnh' 'Hiệp hội giáo dục Đồng Tháp', , label='thành viên')

KG.add_edge('Trường THPT TP Cao Lãnh' 'Công ty du lịch Tâm Sen', , label='hợp tác') KG.add_edge('Trường THPT TP Cao Lãnh' 'Phòng Giáo dục và Đào tạo huyện Cao Lãnh', , label='hợp tác')

KG.add_edge('Trường THPT TP Cao Lãnh' 'Trung tâm ĐT và PT giáo dục nghề nghiệp Đ, T', label='tham gia')

KG.add_edge('Trường THPT TP Cao Lãnh' 'Hội đồng Khoa học và Công nghệ trường TH, PT TP Cao Lãnh', label='tổ chức')

KG.add_edge('Trường THPT TP Cao Lãnh' 'Trường TC Nghề Thanh Bình', , label='liên kế t')

KG.add_edge('Trường THPT TP Cao Lãnh' 'Trường ĐH Đồng Tháp', , label='đối tác') KG.add_edge('Trường THPT TP Cao Lãnh' 'Trung tâm DVVL ĐT', , label='hỗ trợ') KG.add_edge('Trường THPT TP Cao Lãnh' 'Hội cựu sinh viên trường THPT TP Cao Lãn, h', label='hỗ trợ')

KG.add_edge('Trường THPT TP Cao Lãnh' 'Trường Chuyên NQD', , label='hỗ trợ') KG.add_edge('Trường THPT TP Cao Lãnh' 'Phòng GD&ĐT huyện Thanh Bình', , label='li ên kết')

KG.add_edge('Trường THPT TP Cao Lãnh' 'Lớp 10A1', , label='có')

KG.add_edge('Trường THPT TP Cao Lãnh' 'Võ Thị Thu Liểu', , label='có giáo viên') KG.add_edge('Võ Thị Thu Liểu' 'Trường THPT TP Cao Lãnh', , label='giảng dạy ở') KG.add_edge('Võ Thị Thu Liểu' 'Môn tin học', , label='giảng dạy')

KG.add_edge('Võ Thị Thu Liểu' 'TP Cao Lãnh Tỉnh Đồng Tháp', , label='có địa chỉ ở') KG.add_edge('Võ Thị Thu Liểu' 'học sinh trường THPT TP Cao Lãnh', , label='dạy') KG.add_edge('Võ Thị Thu Liểu' 'Trường ĐH Đồng Tháp', , label='tốt nghiệp từ') KG.add_edge('Võ Thị Thu Liểu','Khoa CNTT', label='trực thuộc')

KG.add_edge('Võ Thị Thu Liểu' 'Lớp 10A1', , label='chủ nhiệm') KG.add_edge('Võ Thị Thu Liểu' 'Môn Tin học', , label= 'giảng dạy')

KG.add_edge('Võ Thị Thu Liểu' 'Trung tâm DVVL ĐT', , label='là giáo viên thỉnh giảng c ủa')

KG.add_edge('Võ Thị Thu Liểu' 'Trường Chuyên NQD', , label='là giáo viên thỉnh giảng c ủa')

KG.add_edge('Môn Tin học' 'CTR GDPT', , label='là môn tự chọn của') KG.add_edge('Môn Tin học' 'Võ Thị Thu Liểu', , label='có gv là')

KG.add_edge('Mơn Tin học' 'Võ Thị Thu Liểu', , label='được giảng dạy bởi') KG.add_edge('Lớp 10A1' 'Võ Thị Thu Liểu', , label='có gv chủ nhiệm là') KG.add_edge('Lớp 10A1' 'Môn Tin học', , label='có học mơn')

KG.add_edge('Lớp 10A1' 'Trường THPT TP Cao Lãnh', , label='có 40 HS thuộc')

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

KG.add_edge('Trường Chuyên NQD' 'Võ Thị Thu Liểu', , label= 'mời gv thỉnh giảng là') KG.add_edge('Trường Chuyên NQD' 'Môn Tin học', , label='có dạy mơn')

KG.add_edge('Trường Chun NQD' 'Sở GDĐT Đồng Tháp', , label= 'trực thuộc') KG.add_edge('Trường Chuyên NQD' 'Sở GDĐT Đồng Tháp', , label= 'là 1 trong 2 trường

KG.add_edge('Trung tâm DVVL ĐT' 'Bộ lao động TB&XH', , label= 'trực thuộc') KG.add_edge('Trung tâm DVVL ĐT' 'Võ Thị Thu Liểu', , label='mời gv thỉnh giảng là') KG.add_edge('Trung tâm DVVL ĐT' 'Môn Tin học', , label= 'có dạy mơn')

KG.add_edge('Trường ĐH Đồng Tháp' 'Khoa CNTT', , label='có')

KG.add_edge('Trường ĐH Đồng Tháp' 'TP Cao Lãnh Tỉnh Đồng Tháp', , label='có địa chỉ ở')

# Print the nodes and edges in the knowledge graph

print("Nodes:", KG.nodes())

print("Edges:", KG.edges())

# Draw the knowledge graph using matplotlib pos = nx.spring_layout(KG)

nx.draw(KG, pos, with_labels=True)

edge_labels = {(u, v): d['label'] for u, v, d KG.edges(data=in True)} nx.draw_networkx_edge_labels(KG, pos, edge_labels=edge_labels) # DỮ LIỆU VỀ TRƯỜNG THPT TP CAO LÃNH:

for triple in KG.edges():

triple[if 0]=='Trường THPT TP Cao Lãnh': print(triple)

# Tìm đường đi ngắn nhất giữa 'Trường THPT TP Cao Lãnh'và 'Bộ lao động TB&XH shortest_path = nx.shortest_path(KG, 'Trường THPT TP Cao Lãnh' 'Bộ lao động TB&XH', )

# Print the shortest path

print("\n Đường đi ngắn nhất giữa 'Trường THPT TP Cao Lãnh'và 'Bộ lao động TB&XH' : \n", shortest_path, "\n")

# Tìm tất cả đường dẫn của 'Trường THPT TP Cao Lãnh' với 'Võ Thị Thu Liểu'"

print("Tất cả đường đi giữa 'Trường THPT TP Cao Lãnh' và 'Võ Thị Thu Liểu':") paths = nx.all_simple_paths(KG, 'Trường THPT TP Cao Lãnh' 'Võ Thị Thu Liểu', )

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

# Print all paths for path in paths:

# Create an empty list to store node and edge labels labels = []

for i inrange len( (path) ):-1

# Get the edge label between two adjacent nodes edge_label = KG.get_edge_data(path[i], path[i+1])['label'] # Append node label and edge label to the list

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>II.CÁC KỸ THUẬT SUY DIỄN VÀ LẬP LUẬN1.CÁC LUẬT DẪN</b>

Luật là cấu trúc tri thức dùng để liên kết thông tin đã biết với các thông tin khác giúp đưa ra các suy luận, kết luận từ những thông tin đã biết.

Trong hệ thống dựa trên luật, ta thu thập các tri thức lĩnh vực trong một tập và lưu chúng trong cơ sở tri thức của hệ thống.

Việc xử lý các luật trong hệ thống dựa trên các luật được quản lý bằng một module gọi là bộ suy diễn.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

IF Xe không khởi động được THEN Đầu tiên hãy kiểm tra hệ thống nhiên liệu, sau đó kiểm tra hệ thống điện

IF Là nữ AND Da sáng THEN Nên chọn Xe Honda Lead AND Chọn màu sáng

<b>2.ĐỒ THỊ LUẬT SUY DIỄN</b>

Đồ thị luật (rule graph) là một dạng đồ thị biểu diễn một tập hợp các luật logic trong lĩnh vực trí tuệ nhân tạo. Đồ thị luật cho phép biểu diễn các quan hệ giữa các luật trong một mạng lưới và cho phép áp dụng nhiều luật đồng thời để giải quyết các vấn đề phức tạp.

Mỗi nút trong đồ thị biểu diễn một luật, với các cạnh nối giữa các nút để biểu diễn mối quan hệ giữa các luật. Các cạnh có thể biểu diễn rằng một luật phụ thuộc vào các luật khác để có thể thực hiện được. Hoặc một luật có thể được áp dụng nếu một số điều kiện được thỏa mãn do mã các luật khác trong đồ thị.

Cách biểu diễn đồ thị luật cơ bản bao gồm các bước sau: 1. Xác định các nút để biểu diễn các luật trong thư viện của bạn.

2. Xác định mối quan hệ giữa các luật để hướng dẫn luật được áp dụng khi nào? 3. Xác định các điều kiện để áp dụng các luật thông qua các đường nối giữa các nút. 4. Thực hiện suy luận bằng cách điều hướng đồ thị và áp dụng các quy tắc biểu diễn các nút và các đường nối với nhau.

Cách biểu diễn đồ thị luật là một trong các cơng cụ giúp trí tuệ nhân tạo có thể hỗ trợ cho việc suy luận, quyết định, tư vấn và giúp đưa ra những kết quả hiệu quả và chính xác hơn trong lĩnh vực kinh tế, y tế, cơng nghệ và giáo dục.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Có 3 loại node trên đồ thị luật:

- Node kết luận: Node khơng có cung đi ra (node A) - Node lá: Khơng có cung đi vào (Node Q, D, J)

- Node trung gian: Vừa có cung đi ra vừa có cung đi ra vừa có cung đi vào (Node B, C)

Các nút lá cần phải được cung cấp giá trị đúng hoặc sai. Chính giá trị đó kết hợp với đồ thị luật sẽ cho ra kết quả đầu ra là node kết luận.

<b>3.ĐỒ THỊ LUẬT SUY DIỄN1. LẬP LUẬN TIẾN</b>

Giả thuyết từ giá trị các node lá, khi hệ thống thấy giả thuyết của luật khớp với với thông tin trong bộ nhớ, câu kết luận của luật được bổ sung vào bộ nhớ.

* Ưu điểm:

Làm việc tốt khi bài toán về bản chất đi thu thập thông tin rồi thấy điều cần suy diễn. Suy diễn tiến cho ra khối lượng lớn các thông tin từ một số thơng tin ban đầu. Nó sinh ra nhiều thông tin mới

Suy diễn tiến là tiếp cận lý tưởng đối với loại bài toán cần giải quyết các nhiệm vụ như lập kế hoạch, điều hành điều khiển và diễn dịch.

* Nhược điểm:

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Một nhược điểm chính của hệ thống suy diễn tiến là không cảm nhận được rằng chỉ một vài thông tin là quan trọng. Hệ thống hỏi các câu hỏi có thể hỏi mà khơng biết rằng chỉ một ít câu đã đi đến kết luận được.

Hệ thống có thể hỏi cả câu khơng liên quan. Có thể các câu trả lời cũng quan trọng, nhưng làm người dùng lúng túng khi phải trả lời các câu khơng dính đến chủ đề.

<b>2. LẬP LUẬN LÙI</b>

Xác định kết luận trước sau đó xây dựng các nút lá nào liên quan đến kết luận. * Ưu điểm:

Một trong các ưu điểm chính của suy diễn lùi là phù hợp với bài toán đưa ra giả thuyết rồi xem hiệu qủa giả thiết đó có đúng khơng.

Suy diễn lùi tập trung vào đích đã cho. Nó tạo ra một loạt câu hỏi chỉ liên quan đến vấn đề đang xét, đến hoàn cảnh thuận tiện đối với người dùng.

Khi suy diễn lùi muốn suy diễn cái gì đó từ các thơng tin đã biết, nó chỉ tìm trên một phần của cơ sở tri thức thích đáng đối với bài toán đang xét

* Nhược điểm:

Nhược điểm cơ bản của suy diễn này là nó thường tiếp theo dịng suy diễn, thay vì đúng ra phải đúng ở đó mà sang nhánh khác. Tuy nhiên có thể dùng nhân tố tin cậy và các luật meta để khắc phục

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>4.BIỂU DIỄN ĐỒ THỊ LUẬT SUY DIỄN VÀ LẬP LUẬN TIẾN</b>

<b>Yêu cầu: Hãy cho 10 luật suy diễn trong lĩnh vực làm việc của cá nhân, sau đó vẽ đồ thị </b>

luật đó. Dùng kỹ thuật lập luận tiến để từ các giá trị của node lá đưa ra giá trị của node kết luận.

<b>Chương trình:</b>

# Write a Python Code to implement a forward chaining reasoning of a rule based inferen ce engine of expert system 'P': 'Không vi phạm nội qui', 'Q':'Đạt huy chương thể thao', 'R': 'Sức Khỏe tốt',

'S': 'Năng khiếu chơi thể thao', 'T': 'Tập thể thao thường xuyên', 'U': 'Ăn, uống đủ chất',

'V': 'Làm việc, nghỉ ngơi khoa học'} #for k in DS:

# print(DS[k])

rules = {'rule1' 'antecedent' 'B' 'C' 'consequent' 'A'},: { : [ , ], : 'rule2': {'antecedent' 'Q' 'D' 'consequent' 'B'},: [ , ], :

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

'rule3': {'antecedent' 'E' 'F' 'consequent' 'G'},: [ , ], : 'rule4': {'antecedent' 'G' 'H' 'O'], : [ , , 'consequent' 'N'},: 'rule5': {'antecedent' 'N' 'K' 'I'], : [ , , 'consequent' 'D'},: 'rule6': {'antecedent' 'D' 'J' 'consequent' 'C'},: [ , ], : 'rule7': {'antecedent' 'L' 'M' 'consequent' 'I'},: [ , ], : 'rule8': {'antecedent' 'P' 'consequent' 'O'},: [ ], : 'rule9': {'antecedent' 'R' 'S' 'T': [ , , ], 'consequent' 'Q'},: 'rule10': {'antecedent' 'U' 'V' 'consequent' 'R'}}: [ , ], : # Vẽ đồ thị

KG = nx.Graph() # Add triples to the graph

KG.add_edge( , ,label='A' 'B' "_______") KG.add_edge( , ,label='A' 'C' "_______") KG.add_edge( , ,label='I' 'L' "_______") KG.add_edge( ,'I' 'M',label="_______") KG.add_edge( , ,label='O' 'P' "_______") nx.draw(KG, pos, with_labels=True)

edge_labels = {(u, v): d['label'] for u, v, d KG.edges(data=in True)} nx.draw_networkx_edge_labels(KG, pos, edge_labels=edge_labels) # Show the plot

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

# Define the facts or initial state of the system #facts = {'A': True, 'B':True}

#facts = {'A': True, 'B': False, 'C': True}

facts = { : 'U' True, 'V': True, 'S': True,'T': True, 'E': True, 'F': True, 'P': True, 'H': True, ' M': True ,'L': True, 'K': True, : True}

# Initialize an empty list to store the inferred facts inferred_facts = []

# Hàm kiểm tra xem một quy tắc có thể được áp dụng hay khơng

defcheck_rule(rule, facts): antecedent = rule['antecedent']

# Hàm để áp dụng quy tắc và thêm các dữ kiện được suy luận vào danh sách

defapply rule_ (rule, inferred_facts, facts): consequent = rule['consequent']

rules[r][if 'consequent'] notin facts and check_rule(rules[r], facts): apply_rule(rules[r], inferred_facts, facts)

new_fact = True

ifnot new_fact: break

# Print the inferred facts

print("Inferred Facts:")

print(inferred_facts) for k in inferred_facts:

</div>

×