2. Giải quyết bài toán dịch ngôn ngữ tự nhiên sang ngôn ngữ đặc tả
3.2.5. Chuyển từ ngôn ngữ tiền đặc tả sang ngôn ngữ đặc tả bài toán
Đây là đích đến cuối cùng của bài toán “dịch từ ngôn ngữ tự nhiên sang ngôn ngữ đặc tả”. Sau khi chuyển từ ngôn ngữ tiền đặc tả sang ngôn ngữ đặc tả ta sẽ lưu vào file dacta.xml có cấu trúc như sau
<exsercise>
Mẫu câu và tiền đặc tả
Mẫu câu và tiền đặc tả
Tách câu chuyễn thành mẫu câu theo từ loại
Tách câu chuyễn thành mẫu câu theo từ loại
Đề bài toán
Đề bài toán
tách từ và gán nhãn từ loại
tách từ và gán nhãn từ loại
Tiền đặc tả tương ứng với mẫu câu
Tiền đặc tả tương ứng với mẫu câu
Duyệt tiền đặc tả lấy từ tương ứng với từ loại
Duyệt tiền đặc tả lấy từ tương ứng với từ loại
Ngôn ngữ tiền đặc tả bài toán
Ngôn ngữ tiền đặc tả bài toán
<problem> đề bài toán </problem>
<hypothesis> giả thiết bài toán cho </hypothesis> <goal> Yêu cầu bài toán (kết luận) </goal>
</exsercise >
Trước hết ta sẽ xem xét các ví dụ sau:
Ví dụ 1: cho tam giác ABC, cạnh AB = cạnh BC = 5 cm, góc BAC = 600. Tìm độ dài cạnh AC và chu vi tam giác ABC.
Qua các bước 4.2.3 và 4.2.4 ta được ngôn ngữ tiền đặc tả như sau:
cho|[ABC,“tam giác”]|[AB,“cạnh”]=[BC,“cạnh”]=5|[BAC,“góc”]=60|[[“tính”, [AC,“cạnh”].a], [“tính”, [ABC,“tam giác”].chu vi]]
từ ngôn ngữ tiền đặc tả trên ta phải chuyển sang ngôn ngữ đặc tả như sau:
giả thiết: [{},{[A,“DIEM”], [B,“DIEM”], [C,“DIEM”],[TAM_GIAC[A,B,C], “TAM_GIAC”]},{DOAN[A,B].a=DOAN[B,C].a=5,GOC[B,A,C].a=60}]
kết luận: [[“Tính”,DOAN[A,C].a],[“Tính”,TAM_GIAC[A,B,C].C]] kết quả đặc tả được lưu trữ vào file dacta.xml như sau:
<exsercise> <problem>
cho tam giác ABC, cạnh AB = cạnh BC = 5 cm, góc BAC = 600. Tìm độ dài cạnh AC và chu vi tam giác ABC.
</problem> <hypothesis> [{},{[A,“DIEM”],[B,“DIEM”],[C,“DIEM”], [TAM_GIAC[A,B,C],“TAM_GIAC”]}, {DOAN[A,B].a=DOAN[B,C].a=5,GOC[B,A,C].a=60}] </hypothesis>
<goal>
[[“Tính”,DOAN[A,C].a],[“Tính”,TAM_GIAC[A,B,C].C]]
</goal> </exsercise >
Ví dụ 2: Vẽ góc ABC có số đo bằng 560. Vẽ góc ABC’ kề bù với góc ABC. Hỏi số đo của góc ABC’?
Ngôn ngữ tiền đặc tả bài toán:
Vẽ|[ABC, “góc”].a=56|vẽ|[ABC’, “góc”],[“kề bù”, ABC, BAC’] | [“hỏi”, [ABC’, “góc”].a ] Ngôn ngữ đặc tả: Giả thiết: [{},{[A,“DIEM”],[B,“DIEM”],[C,“DIEM”],[C’,“DIEM”]},{GOC[A,B,C].a=56, [“KEBU”, GOC[A,B,C],GOC[A,B,C’]]}] Kết luận: [[“Hỏi”,GOC[A,B,C’].a]]
kết quả đặc tả được lưu trữ vào file Dacta.xml như sau:
<exsercise> <problem>
Vẽ góc ABC có số đo bằng 560. Vẽ góc ABC’ kề bù với góc ABC. Hỏi số đo của góc ABC’? </problem> <hypothesis> [{},{[A,“DIEM”],[B,“DIEM”],[C,“DIEM”],[C’,“DIEM”]},{GOC[A,B,C].a=56, [“KEBU”, GOC[A,B,C],GOC[A,B,C’]]}] </hypothesis> <goal>
[[“Hỏi”,GOC[A,B,C’].a]]
</goal> </exsercise >
Từ hai ví dụ trên ta đưa ra thuật toán sơ bộ như sau:
B1: tách chuỗi tiền đặc tả ra thành từng từ tại các kí hiệu đặc biệt trong chuỗi B2: duyệt từng từ trong chuỗi tiền đặc tả.
B3: định nghĩa các biến liên quan cấu thành đối tượng. B4: định nghĩa đối tượng theo dạng đặc tả
B5: định nghĩa các sự kiện của bài toán B6: định nghĩa các yêu cầu của bài toán
B7: duyệt đến hết chuỗi tiền đặc tả ta được các dữ kiện liên quan của bài toán theo ngôn ngữ đặc tả → lưu vào file Dacta.xml
Chuỗi tiền đặc tả
Chuỗi tiền đặc tả
Duyệt từng từ
Duyệt từng từ
Định nghĩa biến liên quan
Định nghĩa biến liên quan File lưu đặc tả bài File lưu đặc tả bài Tách chuỗi thành từng từ Tách chuỗi thành từng từ Định nghĩa đối tượng Định nghĩa đối tượng Định nghĩa các sự kiện Định nghĩa các sự kiện
Định nghĩa yêu cầu bài toán
Định nghĩa yêu cầu bài toán
Chuỗi đặc tả
Hình 3.4: sơ đồ giải thuật chuyển từ ngôn ngữ tiền đặc tả sang đặc tả