Có thể giải quyết bài toán loại bỏ mẩu tin nhân bản thừa trong CSDL quan hệ bằng cách xây dựng hệ chuyên gia dựa trên các luật. Lý do cơ bản của đề xuất này:
Thứ nhất, khả năng thu thập và biểu diễn cở sở tri thức của hệ chuyên gia dựa trên
các luật rất cao. Hơn nữa theo mô hình hệ chuyên gia, cơ sở tri thức(các luật) là một tầng riêng biệt, do đó cơ sở tri thức được lưu trữ độc lập với phần xử lý của thuật toán, khả năng dùng lại rất cao.
Thứ hai, đối với từng bảng dữ liệu cụ thể, cần có những kiến thức chuyên gia cụ
bản. Mô hình hệ chuyên gia đáp ứng được yêu cầu này – hệ chuyên gia không giải quyết bài toán tổng quát, chung chung mà giải quyết những công việc cụ thể.
Với những lý do vừa nêu trên ta thấy mô hình hệ chuyên gia có thể áp dụng cho hệ thống loại bỏ mẩu tin nhân bản thừa trong cơ sở dữ liệu quan hệ. Tuy nhiên, khi áp dụng vào bài toán mô hình hệ chuyên gia cũng được cải biến cho phù hợp với mức độ và đặc thù của bài toán.
3.1.4 Sơđồ hệ thống
3.1.4.1 Thành phần cơ bản của hệ thống
Hệ thống có ba thành phần cơ bản: (1) Giao diện người dùng
(2) Thành phần loại bỏ nhân bản thừa(deduplicate) (3) Thành phần xử lý luật(Rule Engine)
Hình 3-1 Các tầng xử lý của hệ thống
(1) Giao diện người dùng
Giao diện là cầu nối giữa hệ thống và người dùng. Thông qua giao diện người dùng thiết lập các thông số cho hệ thống hoạt động, ví dụ: tên bảng cần thực hiện loại
Mô t ơ suy d i ễ n Luật Loại bỏ nhân bản thừa DB Giao d i ệ n
bỏ bản ghi nhân bản thừa, tên cơ sở dữ liệu cần kết nối, tên máy chủ lưu trữ cơ sở dữ liệu….
Ngược lại, giao diện phản ánh hoạt động và kết quả xử lý của hệ thống. Nó là căn cứ để người dùng đưa ra quyết định tiếp theo trong quá trình làm sạch dữ liệu – quyết định loại bỏ bản ghi nào.
(2) Thành phần loại bỏ bản ghi nhân bản thừa
Làm thế nào để biết được một bản ghi trong bảng cần xử lý có là nhân bản của bản ghi nào khác không hay làm thế nào để xác định được các cặp bản ghi nhân bản, đó là nhiệm vụ chính của thành phần này. Đây cũng là phần nhân, là linh hồn của toàn bộ hệ thống. Để làm được điều đó, trước hết phải áp dụng những thuật toán đã trình bày ở Chương 2, sau đó phải sử dụng đến kiến thức chuyên gia được cung cấp bởi thành phần phân tích luật.
(3) Thành phần xử lý luật
Hệ thống loại bỏ mẩu tin nhân bản thừa trong cở sở dữ liệu không xử lý dữ liệu tổng quát, chung chung mà đi vào xử lý từng quan hệ cụ thể. Không có luật nào chung chung áp dụng cho tất cả những bài toán cụ thể, không có kiến thức chuyên gia nào giải quyết được mọi lĩnh vực mà các quan hệ có thể liên quan tới. Đó là lý do tại sao lại có thành phần xử lý luật trong hệ thống. Nhiệm vụ trước hết của thành phần này là cung cấp kiến thức chuyên gia liên quan tới các quan hệ cụ thể để thành phần loại bỏ nhân bản ghi nhân bản thừa xử lý.
3.1.4.2 Sơđồ luồng xử lý
Sơ đồ luồng xử lý của hệ thống được xây dựng dựa trên các thành phần của hệ thống và mô hình hệ chuyên gia được trình bày như hình dưới đây.
Orig in a l re c o rd s C lean data re c o rd s B a cku p re cord s Hình 3-2 Luồng xử lý của hệ thống EDRS (1) Giai đoạn tiền xử lý(Pre-processing)
Dữ liệu là một trong các yếu tố ảnh hưởng tới tốc độ xử lý và độ chính xác của hệ thống. Đặc biệt với những bảng lưu trữ dữ liệu quan trọng như: thông tin khách hàng trong các hệ thống ngân hàng,….sự chính xác của dữ liệu luôn được đặt lên hàng đầu. Do vậy chỉ cần một sơ suất nhỏ hay một lỗi nào đó trong quá xử lý có thể gây ra những
tác hại ghê ghớm. Chính vì lý do đó, bước đầu tiên trong quá trình xử lý là tạo một bản sao lưu cho bảng cơ sở dữ liệu. Bảng sao lưu đặt tên theo quy tắc: tên bảng gốc + “_bak_MMDDYY_HHMMSS”, trong đó MMDDYY_HHMMSS là thời gian tạo ra bảng sao lưu. Mục đích của việc đặt tên này là tránh tình trạng có nhiều bản sao lưu của cùng một bảng tại những thời điểm gần sát nhau.
Đây là giai đoạn tùy chọn, nếu người dùng không muốn tạo dữ liệu backup thì hệ thống sẽ bỏ qua bước này.
(2) Giai đoạn xử lý(Processing)
Xử lý là giai đoạn quan trọng nhất của hệ thống. Nhiệm vụ của giai đoạn này là dựa vào kiến thức chuyên gia được cung cấp bởi thành phần xử lý luật và dùng thuật toán đã nêu ở Chương 2 để tìm ra những bản ghi nhân bản. Công việc chính của giai đoạn này bao gồm:
Bỏ những thuộc tính không liên quan tới các luật(Cut un-used attributes)
Một bảng cơ sở dữ liệu có thể bao gồm rất nhiều thuộc tính, tuy nhiên kiến thức chuyên gia dùng để phán đoán khả năng nhân bản thì chỉ sử dụng tập con các thuộc tính đó. Do vậy, để tối ưu bộ nhớ, trước khi thực hiện các thao tác tính toán khác hệ thống tiến hành phân mảnh dọc để loại bỏ các thuộc tính không cần thiết trong quá trình xử lý. Thuộc tính dùng để xử lý bao gồm: thuộc tính khóa và thuộc tính xuất hiện trong kiến thức chuyên gia.
Thành phần xử lý luật (Rule Engine)
Hệ thống loại bỏ mẩu tin nhân bản thừa trong CSDL quan hệ dựa trên mô hình hệ chuyên gia có cơ sở tri thức dựa trên các luật. Do vậy, trong hệ thống này Rule engine là đầu mối quan trọng trong quá trình phán đoán bản ghi nhân bản. Nhiệm vụ của rule engine là đọc các luật do chuyên gia cung cấp từ file chứa luật(file này lưu dưới dạng XML), phân tích cú pháp và cung cấp kiến thức chuyên gia để cho các thành phần khác phán đoán nhân bản thừa.
Nội dung file chứa luật lưu theo mẫu sau:
<ruleEngine>
<rule id ="1">
<condition>StudentID</condition>
<action>0.01</action>
</rule>
<rule id ="2">
<condition>StudentName AND DateBirth</condition>
<action>0.3</action>
</rule>
</ruleEngine>
Trong đó, id là số thứ tự của luật, condition là điều kiện, action là độ chắc chắn của luật.
Trong ví dụ trên, luật 1 có nghĩa là:
Luật 1(CF = 0.01). NẾU giá trị của StudentID giống nhau THÌ nó là nhân bản của nhau.
Tính toán hệ số chắc chắn(Calculate CF)
Căn cứ vào kiến thức chuyên gia mà Rule Engine trả về(bao gồm các luật và hệ số chắc chắn), module này thực hiện tính toán hệ số chắc chắn và gán hệ số đó cho từng bản ghi tương ứng. Một bản ghi có thể thỏa mãn nhiều luật, do vậy một bản ghi có thể có nhiều hệ số chắc chắn. Nhóm những bản ghi có khả năng là nhân bản thừa của nhau sẽ được đánh chỉ số để dễ phán đoán.
Ví dụ:
StudentID Name DateBirth CF1 DUP1 CF2 DUP2 151413097 Cao Thi Nham 1984/01/29 0.01 1
151413097 Cao Thi Nhan 1984/01/29 0.01 1 0.3 1 151413098 Cao Thi Nhan 1984/01/29 0.3 1 151413099 Hoang Tuyet 1983/10/07 0.3 2 151413199 Hoang Tuyet 1983/10/07 0.3 2
Sử dụng luật ví dụ ở mục trên, trong bảng dữ liệu này module tính hệ số chắn phải tính toán được hệ số chắc chắn cho từng bản ghi và gán chỉ số cho những nhóm nghi ngờ nhân bản. Ví dụ: bản ghi thứ nhất và bản ghi thứ hai thỏa mãn luật 1 nên có hệ số chắc chắn là 0.01 và cặp bản ghi này có chỉ số 1; bản ghi thứ 2 và bản ghi thứ 3 cùng thỏa mãn luật 2 nên có hệ số chắc chắn 0.3 và có chỉ số 1.
Kiểm tra xem bản ghi có là nhân bản thừa hay không(Check duplicate)
Sau khi tính toán được hệ số chắc chắn cho các bản ghi, module này có nhiệm vụ phỏng đoán bản ghi đó có là nhân bản thừa hay không. Để làm được điều này, module phải nhờ tới Rule Engine để lấy cận trên và cận dưới tương đối cho phỏng đoán bản ghi nhân bản thừa. Những bản ghi có hệ số chắc chắn(CF) càng nhỏ thì khả năng nhân bản thừa càng cao.
9 Những bản ghi nào có CF nhỏ hơn cận dưới thì đánh dấu là nhân bản.
9 Những bản ghi có giá trị CF lớn hơn hoặc bằng cận dưới và nhỏ hơn hoặc bằng cận trên(những bản ghi thuộc diện nghi ngờ) thì đánh dấu là nghi ngờ nhân bản. 9 Những bản ghi có giá trị CF lớn hơn cận trên thì không đánh dấu gì cả.
Đối với những nhóm bản ghi có nhiều hơn một hệ số chắc chắn, ta áp dụng quy tắc kết hợp như thuật toán đã nêu ở Chương 2.
Ví dụ 1:
Cặp bản ghi (A, B) có CF = 0.08, ngưỡng dưới THdưới = 0.1. Vì CF < THdưới nên hai bản ghi này là nhân bản thừa của nhau. Do vậy sẽ loại bỏ bản ghi A hoặc B.
Ví dụ 2:
Cặp bản ghi (A, B) có CF = 0.39, ngưỡng trên là THtrên = 0.25. Vì CF > THtrên nên
CFmin CFmax
0 1
hai bản ghi này không phải là nhân bản thừa của nhau, hệ thống sẽ giữ lại cả hai bản ghi này.
Ví dụ 3:
Cặp bản ghi (A, B) có CF = 0.39, ngưỡng dưới là THdưới = 0.15, ngưỡng trên là THtrên = 0.56. Nhận thấy THdưới ≤ CF ≤ THtrên nên hai bản ghi này được xếp vào diện nghi ngờ. Hệ thống sẽ hiển thị bản ghi nghi ngờ này để người dùng tự xác minh.
(3) Giai đoạn xác minh(Verifying)
Như đã trình bày ở phần mô tả bài toán, hệ thống loại bỏ mẩu tin nhân bản thừa là hệ thống bán tự động. Hệ thống tìm ra những nhóm bản ghi nhân bản hoặc những nhóm bản ghi nghi ngờ nhân bản và hiển thị kết quả cho người dùng xác minh. Có xóa bản ghi nhân bản thừa hay không hoặc xóa bản ghi nào trong nhóm bản ghi nhân bản là quyền quyết định của người dùng. Giai đoạn này, người dùng căn cứ vào các giá trị trong bản ghi, dựa vào kiến thức, kinh nghiệm chuyên gia trong lĩnh vực đang xét để xác minh nhóm nào là nhân bản thừa, nhóm nào không phải là nhân bản thừa của nhau. Đối với những trường hợp không thể xác minh dựa vào dữ liệu hiện có thì phải tiến hành xác minh trong thực tế rồi mới đưa ra kết luận.
3.2 THIẾT KẾ HỆ THỐNG LOẠI BỎ MẨU TIN NHÂN BẢN THỪA TRONG CSDL QUAN HỆ TRONG CSDL QUAN HỆ
3.2.1 Xây dựng các lớp đối tượng
3.2.1.1 Mô hình tương tác lớp
Căn cứ vào luồng xử lý hệ thống và các tầng xử lý của hệ thống đã xây dựng ở mục 5.1 ta xác định được các lớp đối tượng như sau.
(1) Gói Rule engine
Gói Rule engine bao gồm những lớp chuyên xử lý việc đọc, phân tích và xử lý các luật. Các luật được lưu dưới dạng file XML.
STT Tên lớp Mô tả
01 clsRuleReader Lớp chuyên xử lý việc đọc các luật từ file XML
02
clsRuleEngine Tách luật lấy từ file XML thành các toán tử, toán hạng
03
clsExpressionEvaluator Phân tích cú pháp các luật
04 clsProxy Giao tiếp giữa gói rule engine với các gói khác
Bảng 3-2 Các lớp thuộc gói Rule Engine
(2) Gói Process
Gói Process chứa các lớp thực hiện giải thuật nhận diện bản ghi nhân bản thừa như thuật toán đã trình bày ở Chương 2. Gói Process gồm các lớp như bảng dưới đây.
STT Tên lớp Mô tả
01 clsDAO Xử lý các thao tác liên quan tới CSDL như: lấy dữ liệu, cập nhật dữ liệu, mở kết nối…
02 clsDeduplicate Thực hiện thuật toán đã nêu ở Phần 2
03 frmExecute Giao diện chính thực hiện nhận diện bản ghi nhân bản thừa.
04 frmSetting Giao diện dùng để thiết lập thông số cho hệ thống
05 frmSuspectRecords
Giao diện hiển thị những bản ghi nghi ngờ nhân bản thừa và thực hiện xóa bản ghi nếu người dùng yêu cầu.
Bảng 3-3 Các lớp thuộc gói Process
3.2.1.2 Mô tả chi tiết các lớp đối tượng
(1) Lớp clsRuleReader
STT Thuộc tính Kiểu dữ liệu Phạm vi Mô tả
01 Rules clsRule private Các luật lấy từ file XML 02 FileName String private Tên file XML có chứa các luật
Bảng 3-4 Bảng thuộc tính của lớp clsRuleReader
STT Tên phương
thức
Kiểu trả về Phạm vi Mô tả
01 GetRules N/A public Lấy các luật từ file XML
Bảng 3-5 Bảng các phương thức của lớp clsRuleReader
(2) clsRuleEngine
STT Thuộc tính Kiểu dữ liệu Phạm vi Mô tả
01 Expression clsExpressionEvaluator private Các luật đã được phân tích
02 Rules clsRules private Các luật chưa được phân tích
STT Tên phương thức Kiểu trả
về
Phạm vi Mô tả
01 SortRules N/A private
Sắp xếp các luật theo thứ tự giảm dần của hệ số chắc chắn
02 CompareRulesByActions int private So sánh hệ số chắc chắn của các luật
03 GetAttributes string public Lấy các thuộc tính có trong các luật
04 GetRules string public Lấy các luật
05 GetUperThreshold float public
Lấy cận trên tương đối để xác định nhân bản thừa.
06 GetLowerThreshold float public
Lấy cận dưới tương đối để xác định nhân bản thừa.
(3) clsExpressEvaluator
STT Tên phương thức Kiểu trả về Phạm vi Mô tả
01 Parse clsSymbol public Phân tích cú pháp của luật
02 IsComplicate bool private
03 IsFactAtt bool private Kiểm tra xem có phải là toán hạng hay không 04 IsBoolean bool private Kiểm tra xem có phải là giá
trị boolean hay không 05 IsNumber bool private Kiểm tra xem có phải là số
hay không
06 IsString bool private Kiểm tra xem có phải là chuỗi hay không
07 IsOpenParanthesis bool private Kiểm tra xem có phải là dấu mở ngoặc đơn hay không 08 IsCloseParanthesis bool private Kiểm tra xem có phải là dấu
đóng ngoặc đơn hay không 09 IsOperator bool private Kiểm tra xem có phải là
phép toán hay không
10 IsFunction bool private Kiểm tra xem có phải là một hàm hay không
(4) clsProxy
Lớp clsProxy có vai trò trung gian, là lớp để gói Rule engine giao tiếp với các gói khác. STT Tên phương thức Kiểu trả về Phạm vi Mô tả
01 GetAttributes string public Lấy các thuộc tính có trong các luật
02 GetRules string public Lấy các luật
03 GetUperThreshold float public Lấy cận trên tương đối để xác định nhân bản thừa.
04 GetLowerThreshold float public Lấy cận dưới tương ứng để xác định nhân bản thừa.
Bảng 3-9 Bảng các phương thức của lớp clsProxy
(5) clsDeduplicate
STT Thuộc tính Kiểu dữ liệu Phạm vi Mô tả
01 Tables Dataset private Dữ liệu cần được làm
sạch
STT Tên phương thức Kiểu trả về
Phạm vi Mô tả
01 CalculateCF N/A private Tính toán hệ số chắc chắn của mỗi bản ghi
02 ProcessDuplicate N/A public Phương thức chính xử lý các thao tác liên quan tới xác định bản ghi nhân bản thừa.
03 WriteLogFile N/A public Ghi những bản ghi nghi ngờ ra log file
04 FetchData N/A private Lấy dữ liệu từ CSDL để xử lý 05 DetermineDuplicate N/A private Thực hiện thuật toán nhận
diện bản ghi nhân bản thừa trình bày ở Phần 2
06 CheckSingleRecord int priavte Kiểm tra xem bảng cần xử lý có những bản ghi nghi ngờ là nhân bản hay không.
07 RemoveRedundantCols N/A private Xóa bỏ những cột tạm sinh ra trong quá trình xử lý
08 GetRules string private Gọi hàm GetRues của lớp clsProxy
09 GetAttributes string private Gọi hàm GetAttributes của lớp clsProxy
Bảng 3-11 Bảng các phương thức của lớp clsDeduplicate
(6) clsDAO
STT Thuộc tính Kiểu dữ liệu Phạm vi Mô tả