Thể hiện kết quả phân tích

Một phần của tài liệu XỬ LÝ NGÔN NGỮ TỰ NHIÊN (Trang 52 - 57)

Để thể hiện kết quả phân tích ở dạng cây, ta dùng cấu trúc JTree của Java. Cây phân tích được xây dựng từ dãy trái, trong quá trình chèn các nút mới, ta sử dụng thuật toán tìm kiếm theo chiều sâu để tìm nút cha của nút mới cần chèn vào. Phương thức xây dựng cây phân tích như sau:

public JTree createParsingTree(Vector parsingOrder) { JTree tree;

rootNode = new DefaultMutableTreeNode(new ParsingTreeNode("S", "S"));

int q;

Enumeration e; String s;

for (int i = 0; i < parsingOrder.size(); i++) {

q = ((Integer)parsingOrder.elementAt(i)).intValue()-1; e = rootNode.depthFirstEnumeration(); DefaultMutableTreeNode treeNode; while (e.hasMoreElements()) { treeNode = (DefaultMutableTreeNode)e.nextElement(); s = ((ParsingTreeNode)treeNode.getUserObject()).getKey(); if ((s.compareTo(left[q]) == 0) && (treeNode.isLeaf())) { DefaultMutableTreeNode tempNode = null;

for (int j = 0; j < right[q].length(); j++) { String key = "" + right[q].charAt(j);

tempNode = new DefaultMutableTreeNode(new

ParsingTreeNode(key, (String)partOfSpeechMap.get(key))); treeNode.add(tempNode); } break; } } } e = rootNode.depthFirstEnumeration(); DefaultMutableTreeNode treeNode; int j = 0; while (e.hasMoreElements()) { treeNode = (DefaultMutableTreeNode)e.nextElement(); if (treeNode.isLeaf()) {

DefaultMutableTreeNode tempNode = null;

tempNode = new DefaultMutableTreeNode(tokens[j]); treeNode.add(tempNode);

j++; }

}

tree = new JTree(rootNode); tree.setEditable(true); tree.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION); tree.setShowsRootHandles(true); return tree; }

Hình 14 là giao diện của chương trình và thể hiện cây phân tích của câu "The green water evaporated" nhập từ một hộp soạn thảo.

Hình 14. Giao diện chương trình phân tích cú pháp tiếng Anh

được. Dưới đây là kết quả phân tích của chương trình với một số câu nhập vào khác nhau:

Để thử nghiệm chương trình phân tích cú pháp tiếng Việt, ta có thể nhập vào một số câu có cấu trúc khác nhau. Nếu dùng ký hiệu [w*] để chỉ từ w có thể xuất hiện hoặc không xuất hiện trong câu thì những câu có dạng:

1. Cô [ấy*] [rất*] tốt [nết*]

2. Cô [ấy*] tốt [cực kỳ*]

đều được phân tích đúng. Để thử nghiệm danh ngữ làm chủ ngữ, ta có thể thay đại từ “cô” bằng các tổ hợp: mèo, mèo ấy, con mèo, con mèo ấy, những con mèo ấy và chọn tính ngữ làm vị ngữ cho phù hợp.

Có thể nhập vào một số câu như sau để thử nghiệm động ngữ làm vị ngữ:

Anh [này*] [đang*] ăn [cơm* | ngon*]

Tương tự, có thể thay đại từ “anh” bằng một danh ngữ. Để thử nghiệm từ quan hệ, ta có thể dùng một số câu như:

1. Tôi là sinh viên

2. Nó bằng nhôm

3. Anh ấy là sinh viên

4. Họ là các sinh viên

Một phần của tài liệu XỬ LÝ NGÔN NGỮ TỰ NHIÊN (Trang 52 - 57)

Tải bản đầy đủ (PDF)

(63 trang)