Bài viết Xây dựng văn phạm tạo giao diện người dùng đề xuất xây dựng văn phạm dùng để lập trình thiết kế giao diện và từ đó người dùng có thể làm việc với các kho ngữ vựng đa ngữ tiếng Việt có cấu trúc thống nhất.
ISSN 1859-1531 - TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ - ĐẠI HỌC ĐÀ NẴNG, VOL 18, NO 5.1, 2020 117 XÂY DỰNG VĂN PHẠM TẠO GIAO DIỆN NGƯỜI DÙNG BUILDING THE GRAMMAR TO CREATE USER INTERFACE Hoàng Thị Mỹ Lệ , Trương Bách Tuệ Trường Đại học Sư phạm Kỹ thuật - Đại học Đà Nẵng; htmle@ute.udn.vn Đại học Đà Nẵng; tbtue@ac.udn.vn Tóm tắt - Trong xử lý ngơn ngữ tiếng Việt nói chung tiếng dân tộc thiểu số nói riêng, thao tác thường gặp p hải tạo công cụ để làm việc với kho ngữ vựng Người dùng cập nhật liệu, xem nội dung, tìm kiếm, hay triển k h c ác ứng dụng thông qua giao diện công cụ Cho đến nay, kho từ vựng đa ngữ tiếng Việt chưa có cấu trúc thống n hấ t, nội dung chưa phong phú không thuận tiện cho việc phát triển theo hướng mã nguồn mở Mặt khác, vấn đề xây dựng c ông cụ để thực truy cập liệu thường nhi ều th ời gian công sức Các kết nghiên cứu c c ác n hà khoa học khó trao đổi với Từ đó, báo đề xuất xây dựng văn phạm dùng để lập trình thiết kế giao diện từ người dùng làm việc với kho ngữ vựng đa n gữ ti ếng Việt có cấu trúc thống Abstract - One of the common operations in the Vietnamese language processing in general an d ethnic mi nor ity l anguage processing in particular is to bui ld tools to ac cess v ocabulary database Through the interface of the tool, users can view content, search the information, update data or deploy applications Currently, there are not many Vietnamese multilingual vocabula ry database with consistent structure, rich content, diversity and eas y exploitation in the direction of open source O n the o ther h and, building such tool to access data often takes a lot of time and effort, difficult to exchange between research groups and depending o n the nature of the vocabulary database From that the article proposed building the grammar for programmers to create interfaces so that users access to Vietnamese multilingual vocabulary database with predefined consistent structure Từ khóa - kho từ vựng đa ngữ; Xử lý dân tộc thiểu số; Giao diện người dùng; ANTRL; kho ngữ vựng Việt-Ê Đê Key words - Multilingual vocabulary database; eth nic mi nori ty language processing; user interface; ANTRL; vocabulary database Vietnamese Đặt vấn đề Văn phạm tạo giao diện người dùng với thành phần ứng dụng windows Trên giao diện này, cho phép người dùng thực kết nối, tương tác với kho ngữ vựng đa ngữ Việt - Dân tộc thiểu số tạ o k h ả làm việc có hiệu với kho ngữ vựng Văn phạm đề xuất xây dựng báo đặt tên VEDICL (Viet Ede Interface Creating Language) Yêu cầu đặt văn phạm VEDICL lập trình phải đơn giản, dễ hiểu, dễ học cho người lập trình, có tính trực quan, linh hoạt việc thiết kế giao diện không phụ thuộc vào kho n gữ vựng Văn phạm phải đầy đủ để xây dựng ứng dụng người dùng Trong nghiên cứu này, văn phạm VEDICL sử dụng phân tích cú pháp ANTLR (ANother Tool for Language Recognition) [1], để sinh mã từ chương trình thiết kế giao diện người dùng Giải pháp đề xuất có ưu điểm người dùng hồn to àn thiết kế giao diện theo ứng dụng để làm việc với kho ngữ vựng có cấu trúc thống Ngồi ra, người dùng thiết kế ứng dụng xử lý ngôn ngữ tự nhiên [2] Văn phạm VEDICL phát triển môi trường nhận dạng ngơn ngữ ANTLR để tích hợp cơng cụ lập trình, trình biên dịch để tạo mã Java, đóng gói sản phẩm, chạy thử nghiệm xây dựng cá c ứn g dụng theo mục đích người dùng thơng qua phân tích cú pháp LL Cơng cụ nhận dạng ngôn ngữ ANTLR dùng việc xây dựng trình biên dịch sử dụng kỹ thuật phân tích LL(k)[1] ANTLR đọc liệu từ tệp văn phạm, sau sinh tệp nguồn tệp trung gian khác, công cụ ANTLR tạo , gồm có: Tìm hiểu ANTLR Phiên 4.8 ANTLR phát hành đầu năm 2020 [1] Ngữ pháp ANTLR bao gồ m ngơn ngữ như: C, C#, Java Python Các công cụ xử lý ngôn ngữ tự động ANTLR hỗ trợ lập trình viên tiết kiệm thời gian cơng sức Các trình biên dịch tạo từ công cụ Ch ức ANTLR cơng cụ phân tích cú pháp - Phân tích cú pháp: Thực việc phân tích văn b ản , chuỗi token thực cho việc xác địn h cấ u trúc ngữ pháp dựa văn phạm Phân tích cú ph áp đ ược dùng thuật ngữ xử lý ngơn ngữ tự nhiên [3] - Phân tích từ vựng: Là trình thực đọc k í tự từ liệu đầu vào, sử dụng mẫu định để phân chia token tạo dòng token liệu Một số token đánh dấu kí tự trắng sử dụng chức phân tích cú pháp ANTLR để làm ẩn [3] 2.1 Phương pháp phân tích LL Ý tưởng phương pháp phân tích LL gặp kí hiệu không kết thúc, lựa chọn dẫn xuất để tránh việc quay lui làm thời gian Tức phải có phương pháp để xác định lựa chọn mà thử lựa chọn khác Thông tin để xác định lựa chọn dựa vào trạng thái kí hiệu kết thúc Phương pháp phân tích LL phương pháp phân tích hiệu Nó thuộc phương pháp phân tích topdown, tối ưu phương pháp phân tích khơng quay lui phương pháp phân tích topdown [4] L: Left to right (từ trái qua phải); L: Leftmost derivation (dẫn xuất bên trái); k số kí hiệu nhìn phía trước để đưa định phân tích Giả sử kí hiệu khơng kết thúc A có sản xuất: A → α1 | α2 | α3 | | αn thoả mãn tính chất xâu Hoàng Thị Mỹ Lệ, Trương Bách Tuệ 118 α1 , α2 , …, αn , suy dẫn xâu với kí hiệu vị trí kí hiệu kết thúc khác nha u Khi cần nhìn vào kí hiệu đầu vào xác định cần khai triển A theo α i Nếu cần tới k kí hiệu phân biệt xâu α , α2 , …, αn , để chọn luật sản xuất cho kha i triển A cần nhìn k kí hiệu đầu vào Văn phạm LL(k) cho phép xây dựng phân tích m việc, có đặc điểm chung xâu vào quét từ trái sang phải hoàn toàn xác định q trình phân tí ch , n ếu phân tích nhìn k kí hiệu nằm bên phải vị trí vào Ngôn ngữ sinh văn phạm LL(k) ngôn ngữ LL(k) 2.2 Phân tích từ vựng ANTLR Quy tắc từ vựng: Từ vựng qui định có tên phải bắt đầu kí tự chữ hoa Quy tắc từ vựng xử lý quy tắc phân tích cú pháp Do đó, đ ịn h giá trị trả đối số Quy tắc từ vựng có biến cục gọi đệ quy Bỏ qua kí tự: Để có kí tự phù hợp thiết lập kí t ự bỏ qua Bỏ qua ky tự hiệu lực cho từ vựng để thiết lập lại thử lại cho kí tự khác Kí tự bỏ qua khơng gửi lại để phân tích cú pháp Trả giá trị: Các quy tắc tự động trả mã thông báo với nội dung phù hợp với quy tắc kí tự Chuỗi kí tự từ khóa: Phần lớn ngơn ngữ có chung qui định nhận dạng từ khóa từ vựng Đây trường hợp đáng ý ngôn ngữ nhận dạng Vấn đ ề công cụ nhận dạng ngôn ngữ ANTLR xử lý b ằ n g cách đặt vào bảng chữ từ khóa cố định , b ảng ch ữ kiểm tra sau từ khóa phù hợp Do đó, chuỗi kí tự ghi đè lên mơ hình nhận dạng tổng qt Qt file nhị phân: Chuỗi kí tự khơng có giới hạn số kí tự có bảng mã ASCII Khi phân tích tệp nhị phân có chứa số ngun chuỗi lớp thiết lập từ vựng để có giá trị bit nhị phân xác định Quét kí tự bảng mã Unicode: Công cụ nhận dạng ngôn ngữ ANTLR nhận kí tự bảng mã Unicode kí tự đầu vào, có nghĩa khơng bị giới hạn byte kí tự bảng mã ASCII Tạo đối tượng Token: Cũng giống phân tích cú pháp, quy tắc lexer gọi quy tắc khác Công cụ ANTLR thực gán nhãn cho quy tắc lexer nhận token thay cho văn bản, loại thẻ, số dòng,… phù hợp với quy tắc tham chiếu Điều kiện kết thúc tệp: Hàm CharScanner.uponEOF() gọi từ nextToken() trước máy quét trả đối tượng EOF_TYPE, mã thông báo để thực phân tích cú pháp 2.3 Cây phân tích cú pháp ANTLR Quy tắc ngữ pháp cây: Là qui ước EBNF (Extended Backus-Naur Form) kết hợp với hành động, cú pháp vị ngữ Mỗi phương án thay danh sách yếu tố Các mục văn phạm ANTLR yếu t ố bổ sung thường xuyên yếu tố mô hình Cú pháp vị từ: Trong ANTLR phân tích cú pháp sử dụng lookahead Đây hình thức thiết kế trung gian Tuy nhiên, cấu trúc tương tự cần phải nhận Những hạn chế giới hạn cố định lookahead khắc phục cú pháp vị từ Dòng Token: Là lexer phân tích cú pháp đối tượng Tuy vậy, nhận dạng ngôn ngữ dịch kế thừa từ xử lý kết nối phân tích cú pháp qui tắc từ vựng dịng token Lọc dịng Token: Cơng cụ ANTLR có chức TokenStreamBasicFilter xử lý cho tình Do thơng báo để loại bỏ loại thẻ mà khơng phải sửa đổi lexer Tách dịng Token: Là gửi yêu cầu phân tích cú pháp dịng token, thơng báo đến phân tích cú pháp Trong trình thực nhận dạng, thao tác sau kiểm tra dịng ẩn để thu thập yêu cầu Cơ chế StringTemple: Là tạo cấu trúc liệu phân tích cú pháp sau trả cho ngơ n ngữ khác Có cấu trúc liệu tách từ phân tích cú phá p Xây dựng văn phạm VEDICL 3.1 Kiến trúc mơ hình lớp VEDICL Siêu mơ hình hố mơ tả hình thức khái niệm ngơn ngữ, cho phép xây dựng cơng cụ khơng có nhập nhằng Siêu mơ hình VEDICL phân lớp khái niệm ngôn ngữ theo mức độ trừu tượng lĩnh vực ứng dụng, đồng thời biểu diễn cấu trúc ngơn ngữ Kiến trúc mơ hình lớp VEDICL thể qua Bảng Bảng Mơ hình lớp VEDICL Khái niệm văn phạm VEDICL Ví dụ cài đặt Siêu mơ hình Định nghĩa ngơn ngữ đặc tả Giao diện, khung nhìn, nút cơng cụ siêu mơ hình hay nguồn ngữ liệu ANTLR Mơ hình Cá thể siêu mơ hình định nghĩa lớp đối tượng môi trường biên dịch (Java Eclipse) My_ConnectXML("Dulieu\\Viet_ Ede.xml"); My_Frame(f,"Chuongtrinh",700,7 00); My_Panel(pnCenter); Đối tượng người dùng Một khung nhìn (cửa sổ) Hình ảnh vật lý thao tác vật Một nút công cụ hay nguồn lý 3.2 Kịch sử dụng văn phạm VEDICL Người sử dụng thiết kế ứng dụng cách: - Lập trình tạo giao diện tương tác với kho ngữ vựng - Cung cấp nguồn liệu từ kho ngữ vựng - Tiến hành biên dịch dùng cơng cụ ANTLR Chạy chương trình biên dịch sinh mã nguồn để nhận ứng dụng mong muốn Trình biên dịch thực phân tích từ vựng cú pháp, kết hợp trình biên dịch JDK Java tạo mã bytecode chạy máy ảo Java [5] ISSN 1859-1531 - TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ - ĐẠI HỌC ĐÀ NẴNG, VOL 18, NO 5.1, 2020 Thực kết nối truy cập tới kho ngữ vựng theo yêu cầu Sau biên dịch, người sử dụng nhận cơng cụ theo ứng dụng lập trình Chương trình tạo giao diện viết với văn phạm VEDICL [6] { _Frame(f,"Giao dien",700,700); _MenuBar(m, {n,"New"},{o,"Open"},{s, Save"}, {e,"Edit"}, {f,"Find"}, {h,"Help"}); _Panel(pnCenter); _Panel(pn); _Panel(pnlabel); _TextField(tf,15); _Button(b, {search, "icon\\search.gif"}); _TextArea(ta,50,50); _List(lst); 119 ::=Keyword | [Identifier] ; | ; ::= {} ::= { | } ::= Left | Right | Top | Bottom ::= ‘A’ ’Z’ | ‘a’ ’z’ ::= '0' '9' - Cú pháp câu lệnh CorView thể Hình Corview { Body } Hình Cú pháp câu lệnh CorView Cài đặt CorView ANTLR CorView _Label(lb,"Nghĩa Ê Đê"); _ToolBar(tb,{open,"icon\\open.gif"}, {find, "icon\\find.gif"}, {edit,"icon\\edit.gif"}, {help,"icon\\help.gif"}); : "{" (fCorView=body) + "}" ; - Cú pháp câu lệnh Body thể Hình Body Statement Body } Kết biên dịch chương trình ta giao diện Hình TextField Menu Button Label TextArea Frame Listbox Hình Cú pháp câu lệnh Body Cài đặt Body ANTLR Body : ( : fbody=statement )+ ; - Cú pháp câu lệnh Statement thể Hình Hình Giao diện kết trình biên dịch Văn phạm VEDICL tương tác vào kho ngữ vựng Việt Ê Đê thể Hình Hình Cú pháp câu lệnh Statement Cài đặt Statement ANTLR Statement: "_Frame"^LPAREN!idframe:IDENT (vect=list_Identifier)*RPAREN! | "_Panel"^ LPAREN! idpanel:IDENT (vect=list_Identifier)* RPAREN! | "_MenuBar"^ LPAREN! idmenubar: IDENT (vBody = bodymenubar)* RPAREN! | " _Menu"^ LPAREN! idmenu:IDENT (vBodyItem = bodymenu)* RPAREN! Hình Văn phạm VEDICL tương tác với vào kho ngữ vựng 3.3 Các thành phần văn phạm VEDICL ::= ::= { } ::= [Body] | "_TextField"^ LPAREN! idtextfield:IDENT (vect=list_Identifier)+ RPAREN! | "_Label"^ LPAREN! idlabel:IDENT (vect=list_Identifier)+ RPAREN! | "_TextArea"^ LPAREN! idtextarea:IDENT (vect=list_Identifier)+ RPAREN! Hoàng Thị Mỹ Lệ, Trương Bách Tuệ 120 | "_ToolBar"^ LPAREN! idtoolbar:IDENT (vTool = bodytool)+ RPAREN! |"Right" |"Top" | " _Button"^ LPAREN! idbutton:IDENT (vect=list_Identifier)+ RPAREN! | " _List"^ LPAREN! idlist:IDENT (vect=list_Identifier)* RPAREN! |"Bottom" ; - Cú pháp câu lệnh List_Identifier thể Hình List_Identifier Identify Hình Cú pháp câu lệnh List_Identifier Cài đặt List_Identifier ANTLR List_Identifier :COMMA! ident:IDENT | COMMA! st:STRING | COMMA! in:INT |COMMA!po: position - Cú pháp câu lệnh Identify thể Hình Identify Letter Digit Hình Cú pháp câu lệnh Identify Cài đặt Identifier ANTLR identifier :id:IDENT | s:STRING| i:INT| p: position Kết luận Văn phạm VEDICL tạo sinh thành phần giao diện tiêu biểu thường gặp: Cửa sổ hội thoại (Frame, Panel, Menu, Toolbar), nút công cụ giao tiếp (Button, Listbox, Text Area, Text Field, Button, Label) Khả nhận biết KNL dạng XML có cấu trúc cấp Đây kết nghiên cứu bước đầu, nhóm tác giả tiếp tục nghiên cứu phát triển theo hướng: - Hoàn thiện văn phạm VEDICL để nhận biết cấu trúc liệu nhiều cấp, có độ lớn có nội dung phức tạp Lời cảm ơn: Nghiên cứu tài trợ Bộ Giáo dục Đào tạo đề tài Khoa học Cơng nghệ có mã số B2019-DNA-01 TÀI LIỆU THAM KHẢO Position Left Right Top Bottom Hình Cú pháp câu lệnh Position Cài đặt Position ANTLR :"Left" Giải pháp đề xuất có ưu điểm người sử dụng thiết kế giao diện theo nhu cầu chức triển khai ứng dụng, để làm việc với kho ngữ vựng hỗ trợ chức xác định cấu trúc kho ngữ vựng Người sử dụng xây dựng ứng dụng tốn xử lý ngơn ngữ tự nhiên môi trường Windows trang web liên quan đến xử lý tiếng dân tộc thiểu số như: Soạn thảo văn tiếng Ê Đê dùng phông chữ Unicode [7]; Quản lý kho từ vựng Việt-Ê Đê [8]; Dịch tự động văn từ tiếng Việt sang tiếng Ê Đê ngữ cảnh hạn chế; Tra cứu nghĩa; Kiểm tra lỗi tả; Tìm kiếm, xếp; Chuyển đổi văn (dạng Web, HTML, XML, …) - Hoàn thiện ứng dụng liên quan đến xử lý ngôn n gữ tiếng dân tộc thiểu số nói chung tiếng Ê Đê nói riêng - Cú pháp câu lệnh Position thể Hình position Đánh giá giải pháp [1] https://www.antlr.org/ [2] Phan Thị Tươi, Xử lý ngôn ngữ tự nhiên, NXB Đại học Qu ố c gia TP Hồ Chí Minh, 2012 [3] Trần Thị Bích Hằng, Nghiên cứu ứng dụng ANTLR đ ể xử lý cá c thông điệp phần mềm đa ngữ, Luận văn Thạc sĩ ngành Khoa học Máy tính, Đại học Đà Nẵng, 2013 [4] Phạm Hồng Nguyên, Giáo trình Chương trình dịch, Nhà xuất b ản Đại học Quốc gia Hà Nội, 2009 [5] Đồn Văn Ban, Lập trình Java nâng cao, NXB Kh o a h ọ c v k ỹ thuật, 2006 [6] Phan Huy Khánh, Văn Thị Thu Hương, Thái Thu Hà, Lê Thị Thanh Thủy, “Phát triển công cụ tương tác với kho ngữ liệu n hờ văn phạm tạo sinh giao diện”, Hội thảo Quốc gia lần thứ X Một số vấn đề chọn lọc Công nghệ Thông tin Truyền thơng, 2007 [7] Hồng Thị Mỹ Lệ, Phan Huy Khánh, Sou ksan Vilavong, “ Using Unicode in Encoding the Vietnamese Ethnic M inor ity languages, applying for the Ede language”, KSE 2013, số 1, Trang 137-148, 2013 [8] Hoàng Thị Mỹ Lệ, Phan Huy Khánh, “Xây dựng kho ngữ vựng song ngữ Việt-Ê Đê dựa mơ hình tương tác Việt-Ê Đê”, Tạp chí Khoa học Cơng nghệ - ĐHĐN, Số 5(114), 2, trang: 36-40, 2017 (BBT nhận bài: 02/4/2020, hoàn tất thủ tục phản biện: 20/5/2020) ... tượng người dùng Một khung nhìn (cửa sổ) Hình ảnh vật lý thao tác vật Một nút công cụ hay nguồn lý 3.2 Kịch sử dụng văn phạm VEDICL Người sử dụng thiết kế ứng dụng cách: - Lập trình tạo giao diện. .. ngữ vựng theo yêu cầu Sau biên dịch, người sử dụng nhận công cụ theo ứng dụng lập trình Chương trình tạo giao diện viết với văn phạm VEDICL [6] { _Frame(f, "Giao dien",700,700); _MenuBar(m, {n,"New"},{o,"Open"},{s,... s:STRING| i:INT| p: position Kết luận Văn phạm VEDICL tạo sinh thành phần giao diện tiêu biểu thường gặp: Cửa sổ hội thoại (Frame, Panel, Menu, Toolbar), nút công cụ giao tiếp (Button, Listbox, Text