Những hạn chế và hướng giải quyết

Một phần của tài liệu đồ án tốt nghiệp mô hình maximum entropy (Trang 52 - 59)

Qua những thống kê thực nghiệm của chương trình phân loại văn bản. Một hướng giải quyết mới giúp nâng cao khả năng gán nhãn sẽ là việc thay đổi các tham số điều khiển (khởi tạo λ, lựa chọn đặc trưng và giá trị hội tụ của Δλ). Bằng việc thay đổi đó sẽ giúp tìm ra được mô hình hoàn thiện nhất ứng với những tập dữ liệu huấn luyện khác nhau.

Do thời gian có hạn nên trong khuôn khổ luận văn mới chỉ phát triển được những tính năng cở bản của chương trình chặn nội dung web nhằm ứng dụng bài toán phân loại văn bản. Chương trình vẫn còn nhiều hạn chế như: chương trình mới chỉ làm việc trên trình duyệt Internet Explorer và cơ chế chặn truy cập hoạt động chưa được tốt.

Tài liệu tham khảo

Tài liệu tiếng Anh

[1] Adam Berger; The Improved Iterative Scaling Algorithm: A Gentle

Introduction; 1997

[2] Adam L. Berger & Stephen A. Della Pietra & Vincent J. Della Pietra; A Maximum Entropy Approach to Natural Language Processing; 1996

[3] Adwait Ratnaparkhi; A Simple Introduction to Maximum Entropy Models

for Natural Language Processing; 1997

[4] Adwait Ratnaparkhi; Maximum Entropy Models for Natural Language

Ambiguity Resolution; 1998

[5] Blue Coat; Blue Coat WebFilterTMTechnology.

[6] Christopher D. Manning & Hinrich Schutze; Foundations of Statistical

Natural Language Processing; 1999; 612 - 645

[7] Jeffrey C. Reynar & Adwait Ratnaparkhi;A Maximum Entropy Approach to identifying sentence boundaries; 1997.

[8] Jun’ichi Kazama & Jun’ichi Tsujii; Evaluation and Extension of Maximum

Entropy Models with Inequality Constraints; 2003

[9] Kamal Nigam & John Lafferty & Andrew McCallum; Using Maximum

Entropy for Text Classification

[10] Radu Ioan Bot & Sorin Mihai Grad & Gert Wanka; Maximum Entropy

Optimization for Textclassification problems; 1999

[11] RobertMalouf; A comparison of algorithms for maximum entropy

parameter estimation

[12] Ronald Rosenfeld; A Maximum Entropy Approach to Adaptive Statistical

Language Modeling

[13] Stanley F. Chen & Ranald Rosendfeld; A Gausan Prior for smoothing

[14] Thorsten Joachims; A probabilistic analysis of the Rocchio algorithm with

TFIDF for text categorization; 1997

Tài liệu tiếng Việt

[1] Hồ Quốc Bảo, Đông Thị Bích Thủy; Ứng dụng xử lý ngôn ngữ tự nhiên

trong tìm kiếm thông tin trên văn bản tiếng việt;

[2] Nguyễn Lính Gian, Nguyễn Mạnh Hiển; Phân loại văn bản tiếng việt với bộ

phân loại vector hỗ trợ SVM; 2005

[3] Nguyễn Thị Ngọc Hợp; Phân loại văn bản sử dụng hạt nhân của chuỗi; [4] Vũ Thanh Nguyên, Trang Nhật Quang; Ứng dụng thuật toán phân lớp rút

trích thông tin văn bản FSVM trên Internet; 2008

[5] Đỗ Phúc, Mai Xuân Hùng, Nguyễn Thị Kim Phụng; Gom cụm đồ thị và ứng

dụng vào việc rút trích nội dung chính của khối thông điệp trên diễn đàn thảo luận; 2008

[6] Phạm Thị Thơm; Ứng dụng phương pháp phân loại văn bản Naive Bayes

vào việc xây dựng chương trình mail client với khả năng lọc thư rác tự động;

Phụ lục

Chức năng của các các lớp sử dụng trong chương trình phân loại văn bản:

Tên lớp Mô tả

EmpiricalDistribution Lớp bao gồm các hàm: get_distribution_xy,

get_distribution_x. Được dùng để tính xác suất thực nghiệm và xác suất ngữ cảnh

Feature Lớp bao gồm các hàm: set_feature, get_c. Dùng để gán giá trị {0,1} cho các đặc trưng và tính giá trị C (giá trị tổng các đặc trưng của từng nhãn lớn nhất)

IIS Lớp bao gồm các hàm: get_z, get_p_yx,

get_empirical_expectation, get_model_expectation,

delta_lamda, lamda, write_lamda, write_all. Dùng để cài đặt thuật toán IIS cho việc tính toán trọng số cho từng đặc trưng InputFile Lớp bao gồm các hàm: read_input, write_input, set_lamda,

set_model_distribution. Dùng để tính trọng số của từng đặc trưng cho file cần gán nhãn và đưa ra tên nhãn được gán LamdaFile Lớp bao gồm các hàm: cut_tag_name, read_lamda_file,

read_all. Dùng để đọc nội dung của các file đã được huấn luyện gồm các từ và trọng số vào các mảng

NonsensicalWord Lớp bao gồm các hàm: read_nonsensical_word,

nonsensical_word. Dùng để đọc vào nội dung file chứa các từ stop-word và kiểm tra một từ nào đó có phải là stop-wrod hay không

Test Lớp bao gồm các hàm: cut_tag_name, test_event, set_tag. Dùng để kiểm thử dữ liệu đã được huấn luyện và gán nhãn cho văn bản bất kỳ

Training Dùng cho chức năng huấn luyện

set_frequency, set_frequency_all_data, feature_selection, write_train, write_all, update_training. Dùng để đọc nội dung các file trong dữ liệu huấn luyện, gán tần số xuất hiện cho từng từ và lọc những từ có tần số nhỏ hơn mức tối thiểu (mặc định là 10)

Main Lớp là giao diện đồ họa của chương trình, xử lý các sự kiện ứng với từng chức năng của chương trình

Chức năng các hàm cụ thể được sử dụng trong chương trình phân loại văn bản:

Tên hàm Mô tả

double get_distribution_xy(int context_arg, int tag_arg)

Tính xác suất thực nghiệm của cặp ngữ cảnh (context_arg, tag_arg) và kết quả trả lại kiểu double

double get_distribution_x(int context_arg, int tag_arg)

Tính xác suất ngữ cảnh của ngữ cảnh contex_arg

void set_feature() Hàm gán giá trị cho mảng đặc trưng. Có giá trị 1 nếu đặc trưng xuất hiện trong dữ liệu huấn luyện, 0 nếu ngược lại

double get_c() Trả lại giá trị tổng các đặc trưng của từng nhãn lớn nhất

double get_z() Trả lại giá trị Z trong công thức tính các giá trị tham số của thuật toán IIS

double get_p_yx(int tag) Trả lại giá trị xác suất p(y|x) double

get_empirical_expectation(int tag, int context)

Trả lại giá trị kỳ vọng thực nghiệm ứng của cặp đặc trưng với nhãn tag và ngữ cảnh context

double get_model_expectation(int tag, int context)

Trả lại giá trị kỳ vọng mô hình của cặp đặc trưng với nhãn tag và ngữ cảnh context

double delta_lamda(int tag, int context)

Trả lại giá trị Δλ của cặp đặc trưng (tag, context)

void lamda(double

delta_lamda_init, int loop)

Tính trọng số λ cho các cặp đặc trưng với giá trị hội tụ là delta_lamda_init và số lần lặp tối đa là loop

void write_lamda(String

path_lamda, ArrayList <String> variable, ArrayList <Double> lamda_arg)

Ghi 2 mảng variable (các từ) và mảng trọng số lamda_arg thành file với đường dẫn là path_lamda

write_all(String path_lamda) Ghi toàn bộ các giá trị trọng số ứng với từng cặp đặc trưng thành file với đường dẫn path_lamda boolean read_input(String

path_test_file, boolean tieng_viet)

Đọc file đầu vào cần gán nhãn. Trong đó path_test_file là đường dẫn của file đầu vào và tieng_viet là biến điều khiển dữ liệu đầu vào là tiếng việt (nếu true) hay tiếng anh. Trả lại là true nếu tồn tại file và false nếu ngược lại

void set_lamda(LamdaFile lamda_arg)

Gán giá trị trọng số λ cho từng đặc trưng tương ứng của văn bản cần gán nhãn

void

set_model_distribution(LamdaFile lamda_arg)

Tính xác suất mà file đầu vào cần gán nhãn thuộc vào các các nhãn tương ứng. Và đưa ra nhãn có xác suất là lớn nhất. Nghĩa là nhãn được gán cho văn bản đó

void cut_tag_name(String path) Từ đường dẫn path (chỉ ra các file đã được huấn luyện), hàm sẽ gán tên các nhãn có thể được gán cho văn bản cần phân loại vào một mảng

path_lamda_file, int tag_arg) path_lamda_file và có nhãn là tag_arg rồi lưu vào mảng

void read_all() Đọc tất cả các file đã được huấn luyện với đường dẫn tới các file huấn luyện đã được chỉ ra

boolean

read_nonsensical_word(String fileName)

Đọc file stop-word với đường dẫn file stop-word là fileName

boolean nonsensical_word(String word)

Kiểm tra xem từ word có phải là stop-word không. Nếu đúng kết quả trả lại là true và false nếu ngược lại

void test_event() Thực hiện chức năng kiểm thử void set_tag() Thực hiện chức năng gán nhãn boolean read_training(String path,

ArrayList <String> variable, boolean tieng_viet)

Đọc file có trong dữ liệu huấn luyện với đường dẫn path vào mảng variable

void read_all(String path, boolean tieng_viet)

Đọc toàn bộ các file có trong dữ liệu huấn luyện với đường dẫn path. Biến tieng_viet để thông báo dữ liệu huấn luyện là tiếng việt (true) hay tiếng Anh (false)

void set_frequency(ArrayList <String> tag_arg, ArrayList <Double> frequency_arg)

Gán giá trị tần số cho từng từ trong dữ liệu huấn luyện

void set_frequency_all_data() Gán giá trị tần số cho toàn bộ các nhãn trong tập dữ liệu huấn luyện

void feature_selection(double feature_selection)

Lọc bỏ những đặc trưng có tần số xuất hiện nhỏ hơn feature_selection

void write_all(String path_frequency)

Một phần của tài liệu đồ án tốt nghiệp mô hình maximum entropy (Trang 52 - 59)

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

(59 trang)
w