Thuật toán

Một phần của tài liệu Nghiên cứu cải tiến một số phương pháp phân loại văn bản tự động và áp dụng trong xử lý văn bản tiếng Việt (Trang 78)

3. Bố cục và cấu trúc của luận văn

6.4. Thuật toán

Thuật toán chiết xuất thuộc tính thuộc tính nhóm xâu con chính đƣợc Dell Zhang đƣa ra và giới thiệu năm 2006, dựa trên cây hậu tố. Thuật toán cho phép chuyển đổi một corpus D sang tập các nhóm xâu con chính. Thuật toán gồm các bƣớc sau:

Sau đó có thể áp dụngphƣơng pháp SVM [14] hoặc TSVM [27] để huấn luyện, kiểm thử và đoán nhận.

Đầu vào:

+ Corpus D

+ Các tham số lm h, b, pq nhƣ trên, tính theo (7.1), (7.2), (7.3), (7.4)

Đầu ra:

+ Một tập các thuộc tính nhóm xâu con chính cho mỗi văn bản d của

D.

Bƣớc 1: Sử dụng thuật toán Ukkonen [31] tạo cây hậu tố cho Corpus D.

Bƣớc 2: Xác định các thuộc tính nhóm xâu con.

Bƣớc 3: Lựa chọn thuộc tính theo các tiêu chí trình bày ở 7.3.2

Bƣớc 4: Chuyển từng văn bản d của D thành tập các thuộc tính nhóm xâu con chính. Hình 6-2: Thuật toán chiết xuất thuộc tính nhóm xâu con chính

Mã giả (pseudo code) của thuật toán trính chọn thuộc tính xâu con chính:

// Sử dụng thuật toán Ukkonen để tạo cây hậu tố cho corpus D

construct the suffix tree T for D; // Giả sử nút gốc của T là r void count_freq(tree T, node v) {

freq[v] = stree_get_num_leaves(T, v); for (each child c of node v) {

count_freq(T, c); freq[v] += freq[c]; }

}

count_freq(T, r); // đệ quy

void select_feature(tree T, node v) { selected[v] = 1; if (v is the root of T) { selected[i] = 0; } else { if ((freq[id] < l) || (freq[id] >= h)) selected[v] = 0; if (stree_get_num_children(T, v) < b) selected[v] = 0; node p_v = stree_get_parent(T, v); if (freq[v]/freq[p_v] >= p) selected[p_v] = 0; node s_v = stree_get_suffix_link(T, v); if (freq[v]/freq[s_v] >= q) selected[s_v] = 0; }

for (each child c of node v) select_feature(c); }

select_feature(T, r); // đệ quy

void accumulate_feature(tree T, node v) {

if (selected[v])

add i to feature_set[v]; for (each child c of node v) { if (selected[v]) add i to feature_set[c]; accumulate_feature(T, c); } } accumulate_feature(T, r); // đệ quy

// chuyển thành tập thuộc tính nhóm xâu con chính for (each d in D) {

// match the whole string d to T to get to // the node where the first suffix ends stree_match(T, d, length(d), &v, &pos); output feature_set[v];

for (int i=2; i<=length(d); i++) { next_v = stree_get_suffix_link(T, v);

// next_v is the node where the i-th suffix ends v = next_v;

output feature_set[v]; }

}

Định lý 7: [30]

Thuật toán trích nhóm xâu con chính có độ phức tạp thời gian là O(n), với n

là số ký tự trong corpus.

Một phần của tài liệu Nghiên cứu cải tiến một số phương pháp phân loại văn bản tự động và áp dụng trong xử lý văn bản tiếng Việt (Trang 78)

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

(119 trang)