) ON [PRIMARY] 10 A11 Bảng chứa thông tin
2.1 Modul đọc các định dạng tài liệu
Có thể xem lại phần trên để hiểu rõ về cách modul này đọc tài liệu thế nào. Modul này được thiết kế thành file dll để như hàm thư viện dùng trong chương trình.
Có một số điểm cần chú ý khi sử dụng modul này:
• Cú pháp sử dụng: Add reference file EPocalipse.Ifilter.dll Using EPocalipse.Ifilter
TextReader reader=new FilterReader(fileName); using (reader)
{
textBox1.Text=reader.ReadToEnd(); }
• fileName là đường dẫn tuyệt đối của file trên ổ đĩa bao gồm cả tên và phẩn mở rộng.
• Với file pdf, chú ý version của bản acrobat reader mà ta cài. Chú ý nên dùng file pdf với version 7.0.1
2.2Modul tách từ
Modul này gồm 4 lớp chính:
1. Lớp clsDictionary:
public static void Init(string path)
Lớp khởi tạo từ điển bằng phương thức Init với path là đường dẫn tuyệt đối file từ điển. Cũng chính trong phương thức này, ta định nghĩa cách lưu trữ từ điển (như đã trình bày ở trên) để tăng tốc độ cho các giải thuật tìm kiếm. Trong lớp này chú ý các phương thức sau:
Đọc file từ điển theo bảng mã Unicode:
StreamReader sr = new StreamReader(path, System.Text.Encoding.Unicode); Sắp xếp tăng dần để phục vụ cho giải thuật tìm kiếm nhị phân:
Page | 100
Phương thức này là phương thức sẵn có trong C# cho một mảng. Nó sẽ sắp xếp theo thứ tự tăng dần của mã ASCII của phần tử. Do đó, nó có thể sắp xếp mảng các số hoặc mảng các string.
public static int Term2Id(string Term)
Phương thức tiến hành tìm kiếm một xâu Term có thuộc từ điển hay không. Nếu có, trả lại Id, nếu không trả về 0. Trong phương thức này, tôi cài đặt thuật giải tìm kiếm nhị phân (một trong các giải thuật để tăng tốc độ tìm kiếm).
2. Lớp clsPunctuator.cs
Lớp này thực hiện các bước chuẩn hóa văn bản. Nhận biết các ký tự dấu chấm câu, dấu chấm trong mail, hay trong số hàng nghìn. Tách nhiều khoảng trống thành 1 khoảng duy nhất. Chia văn bản thành các đoạn và các câu.
3. Lớp clsSentence.cs
Lớp thể hiện cho một câu với các thuộc tính nhất định.
4. Lớp clsTermSplitter.cs
Lớp sẽ thể hiện giải thuật tách câu thành các từ, cụm từ để kiểm tra nó có trong từ điển hay không.
Thuật toán đọc từ là thuật “từ trái sang”, đã được trình bày ở phần trên. Có thể tối ưu giải thuật từ các phương thức trong lớp này.
5. Lớp clsStopWordRemover.cs
Lớp cuối cùng thực hiện phương thức tách câu. public clsStopWordRemover(string path)
Lớp được khởi tạo với phương thức này, với path là file+đường dẫn đầy đủ đến file stopword. Lớp sẽ lưu file này vào biến mảng trong lớp.
public string[] RemoveStopWord(string doc,string pathDic)
Lớp sẽ gọi tiếp các phương thức sau để thực hiện việc tách văn bản thành các từ khóa:
clsTermSplitter Splitter = new clsTermSplitter();
clsPunctuator Punctuator = new clsPunctuator();
clsDictionary.Init(pathDic);
Phương thức này trả về mảng các từ khóa của văn bản. Trong phương thức này cũng loại bỏ các từ stopword từ mảng các từ stopword được lưu trong phương thức khởi tạo stopword trên.
Page | 101
Modul tách từ sẽ được gọi bằng cách using Utils.Spliter;
clsStopWordRemover swr = new
clsStopWordRemover(this.lbStopFile.Text);
string[] result = swr.RemoveStopWord(detail, dicfile);
Với dicfile là file từ điển gồm cả đường dẫn. detail là string văn bản mà ta đọc vào từ bước trước. this.lbStopFile.Text là đường dẫn tuyệt đối đến file stopword.
Page | 102
2.3Modul LSA
Modul này được thiết kế ở lớp Util. Đầu vào của modul là tập tài liệu và tập các từ khóa, đầu ra là cập nhật cơ sở dữ liệu các thông tin về độ tương đồng giữa các tài liệu.
Thông tin chi tiết xin tham khảo bên đồ án của Mr Cường.
3. CÀI ĐẶT
Chương trình được thiết kế với giao diện website. Ta có thể cài đặt CSDL, với file backup được cung cấp, mã nguồn đưa vào IIS. Thư mục website trỏ tới thư mục SS01.
Page | 103