Đồ án Xây dựng ứng dụng phân tích ngữ nghĩa trong tìm kiếm tài liệu trực tuyến - Nguyễn Công Chính

doc 84 trang huongle 4470
Bạn đang xem 20 trang mẫu của tài liệu "Đồ án Xây dựng ứng dụng phân tích ngữ nghĩa trong tìm kiếm tài liệu trực tuyến - Nguyễn Công Chính", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • docdo_an_xay_dung_ung_dung_phan_tich_ngu_nghia_trong_tim_kiem_t.doc

Nội dung text: Đồ án Xây dựng ứng dụng phân tích ngữ nghĩa trong tìm kiếm tài liệu trực tuyến - Nguyễn Công Chính

  1. TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ──────── * ─────── ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG PHÂN TÍCH NGỮ NGHĨA TRONG TÌM KIẾM TÀI LIỆU TRỰC TUYẾN Sinh viên thực hiện: Nguyễn Công Chính . Lớp: HTTTA-K48 . Giáo viên hướng dẫn: TS. Lê Thanh Hương . Hà nội, tháng 6 năm 2008 1
  2. MỤC LỤC PHẦN 0: LỜI NÓI ĐẦU 10 1. MỤC TIÊU VÀ Ý NGHĨA CỦA ĐỀ TÀI 10 2. VẤN ĐỀ GIẢI QUYẾT 10 3. CÁCH GIẢI QUYẾT 11 3.1 Phân tách tài liệu thành các từ khóa (Filter) 11 3.2 Phân tích ngữ nghĩa tiềm ẩn (Latent Semantic Analystic-LSA) 12 3.3 Phân tích lịch sử truy cập của người dùng 12 5.1 Tách tài liệu thành các từ khóa. Tìm kiếm dựa trên từ khóa 14 5.2 Mô hình tìm tư vấn dựa trên phân tích ngữ nghĩa tiềm ẩn 15 6. GIAO DIỆN TRANG CHỦ CHƯƠNG TRÌNH 17 PHẦN I: VẤN ĐỀ VÀ THỰC TRẠNG 18 1. ĐẶT BÀI TOÁN 18 2. CÁC VẤN ĐỀ VÀ CÁC GIẢI PHÁP HIỆN TẠI 21 2.1 Các hệ thống gợi ý (recommender systems - RS) 21 2.1.1 Các khái niệm về Recommender System 21 2.1.2 Các hệ thống recommender tiêu biểu 22 2.2 Xử lý tài liệu tiếng Việt 26 2.2.1 Các nghiên cứu về cấu của các nhà nghiên cứu Việt Nam 26 2.2.2 Tóm tắt đặc trưng của cấu trúc ngữ pháp tiếng Việt, Anh 29 2.3 Xử lý tài liệu theo ngữ nghĩa 30 2.3.1Đặt vấn đề 30 2.3.2 Phân tích ngữ nghĩa tiềm ẩn (LSA) 31 2.3.3 Nhận xét, kết luận 31 2.4 Thu thập thông tin người dùng 32 2.4.1Ưu điểm của các hệ thống tự học 32 2.4.2 Phân tích logfile 32 2.4.3 Phân tích dựa thông tin người dùng 32 2.4.4Kết luận 33 2.5Vấn đề lưu trữ dữ liệu 33 PHẦN II: CƠ SỞ LÝ THUYẾT 34 2
  3. 1. CÁC BỘ MÁY TÌM KIẾM 34 1.1 Một số engine thông dụng 34 2.1 Chiến lược tìm kiếm 37 2.1.1 Công nghệ tìm kiếm ngữ nghĩa trên thế giới hiện nay 37 2.1.2 Chiến lược tìm kiếm 38 2.XỬ LÝ VĂN BẢN TIẾNG VIỆT 40 2.1 Từ và cấu trúc từ của tiếng Việt 40 2.1.1Định nghĩa từ 40 2.1.2 Cấu trúc từ tiếng Việt 40 2.1.3 Các phương pháp tách từ tiếng Việt đã được nghiên cứu 41 2.2 Thuật toán, otomat tách từ 44 PHẦN III: GIẢI PHÁP KỸ THUẬT 48 1. GIẢI PHÁP ĐỌC ĐỊNH DẠNG TÀI LIỆU 48 1.1 Giao diện Ifilter 48 1.2 Chương trình EPocalipse.IFilter 48 2. GIẢI PHÁP TÁCH TỪ 49 2.1 Giải pháp tách từ Tiếng Anh 49 2.2 Giải pháp cho Tiếng Việt 50 3. GIẢI PHÁP LSA 52 4. GIẢI PHÁP PHÂN TÍCH NGƯỜI DÙNG 52 5. GIẢI PHÁP CÔNG NGHỆ 52 PHẦN IV: XÂY DỰNG CHƯƠNG TRÌNH, CÀI ĐẶT CHẠY DEMO 53 1. PHÂN TÍCH HỆ THỐNG 53 1.1 Mô hình use-case và đặc tả use-case 53 1.2 Về cơ sở dữ liệu 66 2. CÁC MODUL 77 2.1 Modul đọc các định dạng tài liệu 77 2.2 Modul tách từ 77 2.3 Modul LSA 79 1. KẾT LUẬN 80 2. Hướng phát triển 82 3
  4. DANH MỤC HÌNH VÀ BẢNG DANH MỤC HÌNH VÀ BẢNG 7 Hình 1: Hình minh họa tập tách văn bản 14 Hình 2: Cấu trúc giải thuật LSA 15 Hình 3: Quy trình truy vấn 16 Hình 4: Giao diện chính trang chủ chương trình 17 Hình 5: Tìm kiếm thông tin – So sánh gợi ý của người và máy 18 Hình 6: Mô hình sơ đồ hệ thống gợi ý cho người dùng 20 Hình 7: Sơ đồ tổng quát hệ thống 21 Hình 8: Giao diện tìm kiếm của Amazone.com 22 Hình 9: Giao diện kết quả trả lại 23 Hình 10: Giao diện kết quả tìm kiếm của Amazone.com 24 Hình 11: Sơ đồ cấu trúc từ của Nguyễn Tài Cẩn 27 Hình 12: Giao diện tìm kiếm của Google 34 Hình 13: Giao diện tìm kiếm Yahoo 35 Hình 14 Giao diện tìm kiếm Ask Jeeves 36 Hình 15: Giao diện tìm kiếm All the web 36 Table 1: : Tần suất xuất hiện độ dài từ tiếng Việt trên trang Vdict.com 40 Table 2: Tần số tài liệu của một số từ thông dụng trong tiếng Việt 41 Table 3: Ví dụ về MI của n-gram 42 Hình 16: Xây dựng ôtômát âm tiết 44 Hình 17: Xây dựng ôtômát từ vựng 45 Hình 18: Một tình huống nhập nhằng 47 Hình 19: Giải thuật tách từ từ câu 50 Table 4: Bảng một số ví dụ về cấu trúc lưu trữ từ điển 51 Hình 20: Biểu đồ use-case hệ thống 53 Hình 21: Use-case tìm kiếm Hình 22: Biểu đồ cộng tác chức năng tìm kiếm 54 Hình 23: Biểu đồ tiến trình chức năng tìm kiếm 54 Hình 24: Use-case quản lý tài liệu 55 Hình 25: Biểu đồ cộng tác 55 Hình 26: Biểu đồ tiến trình chức năng thêm mới tài liệu 56 Hình 27: Biểu đồ tiến trình chức năng sửa tài liệu 56 Hình 28:Biểu đồ tiến trình chức năng xóa tài liệu 57 Hình 29: Biểu đồ cộng tác quản lý tài liệu 57 Hình 30: User-Case quản lý tác giả 58 Hình 31: Biểu đồ tiến trình thêm mới tác giả 58 Hình 32: Biểu đồ tiến trình sửa tác giả 59 4
  5. Hình 33: Biểu đồ tiến trình xóa tác giả 59 Hình 34: Biểu đồ cộng tác quản lý tác giả 60 Hình 35: User-Case quản lý NXBLớp biên: 60 Hình 36: Biểu đồ tiến trình thêm mới NXB 61 Hình 38: Biểu đồ tiến trình xóa thông tin NXB 62 Hình 39: Biểu đồ công tác quản lý NXB 62 Hình 40: Biểu đồ usercase quản lý thành viên 63 Hình 42: Biểu đồ tiến trình chỉnh sửa user 64 Hình 43: Biểu đồ tiến trình xóa user 64 Hình 44: Biểu đồ cộng tác quản lý user 65 Hình 45: Biểu đồ cộng tác quản lý user 66 Table 5: Bảng các thực thể chính 67 Table 6: Bảng quan hệ các thực thể 68 Table 7: Danh sách các bảng chính 71 Table 8: Mô tả bảng tài liệu A01 72 Table 9: Mô tả bảng Catalogue A02 73 Table 10: Mô tả bảng tác giả A04 73 Table 11: Mô tả bảng NXB A05 74 Table 12: Mô tả bảng User A06 74 Table 13: Mô tả bảng subCatalogue A07 75 Table 14: Mô tả bảng Child A08 75 Table 15: Mô tả bảng A11 76 Table 16: Mô tả bảng A12 76 5
  6. LỜI CÁM ƠN Lời đầu tiên, em muốn gửi lời cám ơn chân thành tới cô TS. Lê Thanh Hương, là người trực tiếp hướng dẫn em hoàn thành đồ án này. Em cũng muốn gửi lời cám ơn tới các thầy cô trong bộ môn Hệ thống Thông Tin, trong khoa Công nghệ thông tin và các thầy cô trong trường đã tận tình dạy dỗ trong suốt những năm học vừa qua. Tôi cũng xin gửi lời cám ơn đặc biệt đến bạn Kiều Văn Cường, người cùng chung đồ án với tôi, đã giúp tôi rất nhiều trong những lúc nghiên cứu, xây dựng chương trình. Tôi cũng xin cám ơn các bạn cùng lớp Tin 3 và HTTT A đã cung cấp các tài liệu, gợi ý các giải thuật để hoàn thành đồ án. Con cũng xin cảm ơn Bố, Mẹ, những người thân đã luôn bên cạnh động viên khích lệ về mặt tinh thần và cả vật chất để giúp con hoàn thành tốt những năm học đại học và đồ án này. Hà Nội Tháng 5 năm 2008 Sinh viên Nguyễn Công Chính 7
  7. NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Ngày tháng 05 năm 2008 Ký tên 8
  8. NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Ngày tháng 05 năm 2008 Ký tên 9
  9. PHẦN 0: LỜI NÓI ĐẦU 1. MỤC TIÊU VÀ Ý NGHĨA CỦA ĐỀ TÀI Máy tính hiện nay đã đóng góp một phần không nhỏ vào đời sống, và đã trở nên phổ dụng. Trong lĩnh vực lưu trữ dữ liệu, chỉ cần một ổ cứng 10x15x3 cm 3 là đã có thể lưu trữ được số lượng sách tương ứng với cả một thư viện sách khổng lồ. Theo đó, là vấn đề tra cứu dữ liệu trong kho dữ liệu như thế. Cũng như việc tổ chức trong thư viện, việc lưu trữ tài liệu điện tử trong máy tính cũng được chia thành các loại sách, và chủ đề lớn khác nhau. Hiện nay xu thế người đọc sách là coi sách là nguồn để tra cứu những vấn đề mình quan tâm, chứ không phải học một kiến thức mới do một cuốn sách mang đến. Vấn đề đặt ra là làm sao tư vấn cho người dùng những cuốn sách nào liên quan nhiều nhất tới chủ đề người dùng yêu cầu (thông qua các từ khóa được nhập) bằng phân tích nội dung và lịch sử truy cập của những người dùng trước. Luận văn này đực thực hiện nhằm đề xuất ra được một phương thức xây dựng hệ thống hỗ trợ tư vấn với các kết quả sau: - Tư vấn hoàn toàn tự động các tài liệu cho người dùng theo từ khóa, lịch sử truy cập của người dùng đó và những người dùng khác và sở thích của họ. Kết quả tư vấn ngày càng chính xác hơn vì hệ thống có phân tích và cập nhật lịch sử truy cập của người dùng. - Giới thiệu tài liệu có độ tương tự nhất định với tài liệu đang nghiên cứu để người dùng lựa chọn tài liệu tiếp theo nghiên cứu. - Hệ thống khảo sát (survey) để thu thập các ý kiến đánh giá của người dùng về sự tương tự của các tài liệu hệ thống gợi ý. Qua đó, càng thu thập nhiều sự đánh giá, kết quả tư vấn cho người dùng càng sát với vấn đề người ta đặt ra hơn. - Người dùng mới không nhất thiết phải đăng ký thông tin với hệ thống. Hệ thống vẫn gợi ý cho người dùng thông qua phân tích nội dung và lịch sử truy cập hệ thống. - Đáp ứng các yêu cầu tìm kiếm trên các trang web (tìm kiếm trong site riêng hoặc trên internet). Hệ thống hướng tới việc tìm kiếm và xây dựng cơ sở dữ liệu động từ internet. 2. VẤN ĐỀ GIẢI QUYẾT Có 2 phương pháp chủ đạo được dùng trong hệ tư vấn: Phương pháp lọc cộng tác: là phương pháp tập hợp các đánh giá hoặc các quan điểm của người dùng, nhận dạng sự tương đồng giữa các người dùng trên cơ sở các phiên giao dịch của họ. Phiên giao dịch của người dùng được bắt đầu từ khi người dùng đánh từ khóa và có tín hiệu search. Kết thúc phiên làm việc với một từ khóa mới được nhập. Phương pháp lọc cộng tác ước lượng hàm đánh giá R(u,i) của item i với user u dựa trên cơ sở đánh giá R(u’,i) của user u’ cho cùng item i mà trong đó u và u’ là tương tự nhau. Phương pháp lọc cộng tác có các vấn đề như: Sự thưa thớt: thực tế thì vấn đề của người dùng quan tâm (từ khóa) nó chiếm phần rất nhỏ và sự đánh giá sự tương đồng cho tài liệu là rất nhỏ so với rất nhiều tài liệu của hệ 10
  10. thống. Với hệ thống gợi ý trong luận văn này, các đánh giá, các nhận định sẽ được lưu lại dần dần, loại bỏ dần những kết quả không chính xác. Vấn đề tài nguyên mới: Hệ thống không ngừng cập nhật các tài liệu mới cho kho dữ liệu của mình. Mỗi lần thêm một tài liệu mới, hệ thống sẽ tính lại (off-line) là phân tích độ tương đồng về ngữ nghĩa giữa các văn bản (kỹ thuật LSA) để tìm ra tập các láng giềng gần của một cuốn sách. Vấn đề người dùng mới: Như đã đề cập, hệ thống sẽ phân tích và lưu trữ lại lịch sử của tất cả các phiên làm việc, kết hợp phân tích nội dung trong hệ thống để lọc ra sự tương đồng, liên quan chính xác nhất của các tài liệu. Nên hệ thống hoàn toàn có thể gợi ý tư vấn cho một người dùng mới. Khi người dùng cung cấp cho hệ thống các sở thích, hệ thống sẽ lọc tiếp theo sở thích đó, để cung cấp kết quả chính xác hơn. Phương pháp lọc dựa trên nội dung: là một giải thuật hướng về nghiên cứu lọc thông tin, phương pháp lọc dựa trên nội dung ước lượng hàm đánh giá R(u,i) của item i với user u được thiết lập dựa trên cơ sở đánh giá R(u,i’) của cùng user u cho item i’ mà trong đó i và i’ là tương tự nhau về mặt nội dung. Nhược điểm chính của phương pháp này là nó giả định các thuật ngữ là độc lập nhau. Trong thực tế, các thuật ngữ thường có liên quan với nhau và hiểu được điều này có thể dẫn đến việc tính độ liên quan tốt hơn. Tính đồng nghĩa: có nhiều cách để chỉ đến một đối tượng, ví dụ: car và automobile • Các sản phẩm tương tự được đối xử theo cách khác nhau • Tăng sự thưa thớt, làm mất tính chất bắc cầu giữa các từ khóa • Sinh ra kết quả có chất lượng thấp Tính nhiều nghĩa của từ: hầu hết các từ đều có nhiều nghĩa, ví dụ: model, python, chip. • Độ chính xác thấp 3. CÁCH GIẢI QUYẾT Sử dụng phương pháp lọc cộng tác, hệ thống đã đưa ra phương án giải quyết được các nhược điểm của nó như đã trình bầy ở trên. Về sử dụng phương pháp lọc dựa trên nội dung, hệ thống đang sử dụng các phương pháp: 3.1 Phân tách tài liệu thành các từ khóa (Filter) Các tài nguyên là các tài liệu được thể hiện dưới dạng văn bản như một cuốn sách, tạp chí, hay một bài báo, bài diễn văn điện tử nào đó. Với những tài liệu tiếng Anh, một từ thường có một âm tiết, ta có thể dễ dàng xác định một từ dựa vào dấu cách (space) hoặc dấu câu. Việc phân tách văn bản tiếng anh thành các từ khóa không khó khăn. Với những văn bản tiếng việt, mỗi từ nó có thể có một, hai hoặc nhiều hơn số lượng âm tiết. Việc phân tách thành từ khóa đối với văn bản tiếng việt phải dựa trên từ điển và các thuật toán đọc từ khóa sao cho đúng nghĩa nhất của câu. Thí dụ: Học sinh học sinh học thì hệ thống sẽ tách thành Học sinh, học, sinh học. Sau đó, loại bỏ các từ 11
  11. dừng (Stopword – Những từ mang ý nghĩa cảm thán, đại từ như anh, bạn, do đó ), những từ không mang nhiều ý nghĩa về nội dung. Bước tiếp theo, dùng kỹ thuật TF- IDF để lọc bỏ bớt số lượng từ khóa của tài liệu. 3.2 Phân tích ngữ nghĩa tiềm ẩn (Latent Semantic Analystic-LSA) Kỹ thuật LSA là những lý thuyết và phương thức cho việc trích rút và thể hiện ngữ cảnh sử dụng ngữ nghĩa của từ dựa trên việc tính toán thông kê. Kỹ thuật này cho phép ứng dụng trên một kho dữ liệu văn bản lớn. Ý tưởng cơ bản của kỹ thuật là tổng hợp tất cả các văn cảnh của từ, trong đó, một từ được đưa ra đã và không chỉ định biểu lộ những tập ràng buộc lẫn nhau. Những tập ràng buộc này cho phép xác định sự tương đồng về nghĩa của những từ và tập hợp mỗi từ khác. Tập các từ khóa của các tài liệu của bước phân tích trên được dùng làm đầu vào cho các hàng của ma trận. Theo đó, bộ từ khóa của một tài liệu được dùng làm cột, các tài liệu làm hàng, các cell của ma trận được khởi tạo là tần suất xuất hiện của từ khóa- thuật ngữ đó trong tài liệu. LSA dùng kỹ thuật phân tích giá trị riêng (SVD-singular value decomposition) để giảm bớt để giảm bớt kích thước ma trận thuật ngữ-tài liệu, không gian N-chiều sẽ được giảm bớt xuống một không gian K chiều, K<<N, không gian mới này được gọi là không gian khái niệm. Sử dụng kết quả bước này, ta thu được tập các tài liệu có sự tương đồng về ngữ nghĩa nhất định với tài liệu xét. Là nguồn quan trọng trong việc đưa ra gợi ý những tài liệu tương tự với tài liệu người dùng đang đọc. 3.3 Phân tích lịch sử truy cập của người dùng Một phiên làm việc của người dùng được đánh dấu bằng việc nhập một từ khóa và nhấn nút search. Các kết quả gợi ý được đưa ra, khi người dùng quyết định chọn một tài liệu (A), hệ thống gợi thống gợi ý các tài liệu có liên quan (dựa vào phân tích LSA trước và phân tích lịch sử phiên làm việc). Khi người dùng chọn một tài liệu (B) tiếp theo trong phần của hệ thống gợi ý để đọc, hệ thống ghi nhận tài liệu B có liên quan nhất trong phiên làm việc đó với tài liệu A. Và cứ thế, hệ thống sẽ cập nhật và đánh giá lại sự liên quan nhất định của các tài liệu qua các phiên làm việc của người dùng. Hệ thống còn đưa ra kỹ thuật khảo sát (survey) để thu thập ý kiến chính xác hơn của người dùng về sự tương đồng của các tài liệu. Hạn chế của phương pháp này, là khi có một tài liệu mới được cập nhật, chỉ số lịch sử truy cập của nó là 0, hoặc một giá trị âm nào đó. Có thể về cơ bản thì nó rất tương đồng với văn bản A trên chẳng hạn, nhưng phải qua nhiều lần, nhiều phiên làm việc thì nó mới đứng đầu trong các văn bản liên quan của A. 12
  12. 4. CÁC ĐÓNG GÓP CHÍNH CỦA LUẬN VĂN  Cung cấp bộ phân tách văn bản thành các từ khóa với văn bản tiếng Việt và văn bản tiếng Anh. Sử dụng bộ đọc văn bản đầu vào Ifilter để xử lý, kết hợp các file từ điển, file từ stopword để tách dữ liệu được đọc vào thành các từ khóa, đặc trưng cho tài liệu đó.  Kỹ thuật LSA, đánh giá độ tương đồng về mặt ngữ nghĩa giữa các tài liệu dựa trên kỹ thuật xử lý ma trận SVD. Phần này sẽ được trình bày chi tiết trong luận văn còn lại của dự án (Liên lạc với Mr Kiều Văn Cường)  Cung cấp kỹ thuật xử lý lịch sử phiên làm việc của một người dùng, cho phép các kết quả chính xác hơn sau nhiều phiên làm việc.  Đề xuất mô hình và phương thức triển khai cho phần mở rộng dự án, xây dựng hệ thống CSDL động trên Internet và đẩy hết các quá trình xử lý thành on-line (hệ thống như một tool tìm kiếm cho khách hàng. Hệ thống sẽ bắt đầu khi người dùng bắt đầu phiên làm việc) 13
  13. 5. CÀI ĐẶT 5.1 Tách tài liệu thành các từ khóa. Tìm kiếm dựa trên từ khóa Mô hình này áp dụng cho những lần gợi ý đầu tiên, cho khi người dùng nhập từ khóa. Giải thuật tách từ khóa (chạy off-line): Input: tập tài nguyên là sách, tạp chí, trang thông tin (html) ở các định dạng tài liệu. Output: Tập các từ khóa với rank tương ứng. Quá trình tìm kiếm sẽ ưu tiên với những khóa được lọc ra ở tập khóa có mức độ ưu tiên được đánh giá bằng rank tương ứng của chúng Giải thuật này được thiết kế để chạy offline trong phiên bản đầu tiên này. Quá trình cập nhật tài liệu được người quản trị nhập. Chi phí thời gian cho modul này là khá lớn, một cuốn sách điện tử tầm 200 trang tương ứng là 3 phút cho hệ thống đọc và tách thành từ khóa. Tập văn bản nguồn Tập văn bản đã được phân tách Hình 1: Hình minh họa tập tách văn bản 14
  14. 5.2 Mô hình tìm tư vấn dựa trên phân tích ngữ nghĩa tiềm ẩn Sau khi tách thành tập các từ khóa, modul này sẽ thực hiện việc cập nhật tiếp các tài liệu liên quan, có độ tương đồng nhất định về nội dung. Mỗi tài liệu sẽ được xác định cùng với nó một tập các tài liệu khác có tương đồng về mặt nội dung. Xử lý LSA Tập tài liệu (ma trận và giải (từ khóa) thuật SVD) Cập nhật CSDL Tập các tài liệu (dữ liệu tài liệu liên quan tới 1 tài liên quan ) liệu Hình 2: Cấu trúc giải thuật LSA 15
  15. 5.3 Mô hình tư vấn dựa trên lịch sử phiên truy cập của người dùng Kế thừa từ các hệ thống học thông minh, từ các phiên làm việc của người dùng, hệ thống sẽ tự động cập nhật để chính xác hơn những thông tin có trong cơ sở dữ liệu để phục vụ cho những lần tư vấn sau đó. Có rất nhiều mô hình khai thác trên lĩnh vực người dùng. Trong đồ án này, tôi chỉ khai thác trên khía cạnh sở thích và lịch sử các phiên làm việc của người dùng. Khi người dùng đăng ký thông tin, hệ thống ghi nhận ở tài khoản của họ, thông tin về các lĩnh vực người dùng quan tâm để lọc các kết quả tìm kiếm. Tại phiên làm việc của người dùng, khi người dùng click vào một tài liệu mà hệ thống đưa ra để gợi ý cho tài liệu đang đọc, hệ thống sẽ cập nhật hệ số tương quan giữa 2 tài liệu đó, phục vụ cho các kết quả tư vấn ở lần tiếp theo. Nhận và tiền xử lý query Hiển thị kết quả ra browser Câu truy vấn Tài liệu trả về Xử lý tác thao tác người dùng Xử lý query, tạo kết quả trả Tài liệu chứa từ Tài liệu có liên quan Các tài liệu liên quan khóa trong query với tài liệu kết quả Truy vấn Cập nhật tài CSDL (tài liệu) Tập tài liệu liệu liên quan Hình 3: Quy trình truy vấn 16
  16. 6.GIAO DIỆN TRANG CHỦ CHƯƠNG TRÌNH Hình 4: Giao diện chính trang chủ chương trình 17
  17. PHẦN I: VẤN ĐỀ VÀ THỰC TRẠNG 1. ĐẶT BÀI TOÁN Hiện nay, khoa học kỹ thuật ngày càng phát triển. Máy vi tính được phát triển từ năm 1980 đã ngày càng được sử dụng rộng rãi với các ứng dụng tiên tiến của nó. Theo đó, các hệ thống lưu trữ tài liệu dần chuyển sang lưu trữ số trên máy tính. Các hệ thống thư viện điện tử, thư viện trực tuyến ngày càng được sử dụng rộng rãi. Theo đó, là các vấn đề liên quan đến tìm kiếm, chia theo danh mục và gợi ý nội dung đọc Ebook cho người dùng. Trên internet, chúng ta đã có rất nhiều các công cụ tìm kiếm và gợi ý các tài liệu cần đọc và những tài liệu liên quan. Thí dụ như công cụ tìm kiếm của Google, ngoài những tài liệu có chứa từ khóa, nó còn gợi ý những tài liệu có độ tương đồng nhất định với nội dung người dùng tra cứu, thể hiện ở các liên kết cuối mỗi trang. Với amazon.co.uk, hệ thống recommender chỉ với những thành viên đăng ký tài khoản với hệ thống. Khi đăng ký tài khoản, user đăng ký luôn các sở thích và các lĩnh vực họ quan tâm. Với hệ thống mubu.com, họ gợi ý trong lĩnh vực âm nhạc. Người dùng cũng phải cung cấp thông tin về sở thích như ca sỹ, nhạc sĩ, thể loại nhạc quan tâm. Từ đó, hệ thống gợi ý cho người dùng không cần keyword Hình 5: Tìm kiếm thông tin – So sánh gợi ý của người và máy 18
  18. Rất nhiều người không có thời gian để lọc ra trong một tệp các cuốn sách được thông tin mình mong muốn. Thậm chí trong một cuốn sách dầy tới nghìn trang. Mục lục ở mỗi cuốn sách cũng là các tóm tắt ý, các chủ đề viết về cho cuốn sách. Người dùng có thể tìm trong các mục lục đó, cũng có thể tìm theo từ khóa (ứng với mỗi tài liệu, chúng được tìm theo từ khóa dựa vào chương trình đọc tài liệu đó). Như hình trên, vấn đề là, tìm được một cuốn sách chứa chủ đề của mình và có đủ lượng thông tin cần thiết cho vấn đề mình quan tâm. Hoặc khi chưa đủ thông tin, người dùng được gợi ý những cuốn sách viết về những chủ đề có liên quan mà người ta cần tra cứu thông tin về. Bài toán đặt ra là, trong kho dữ liệu, bao gồm rất nhiều cuốn sách, rất nhiều các tài liệu như bài báo, tạp chí. Người dùng cần tra cứu thông tin về một vấn đề nào đó. Hệ thống sẽ phải cung cấp những cuốn sách viết về vấn đề đó và sắp xếp theo thứ tự ưu tiên nhất định cho người đọc. Hơn nữa, hệ thống cũng cung cấp các tài liệu mà những người dùng trước đó đã sử dụng khi cần tra cứu vấn đề đó. Người dùng thiết lập một phiên giao dịch, bằng việc đăng nhập vào hệ thống hoặc có thể không cần đăng nhập (Tất nhiên, khi đăng nhập vào hệ thống sẽ được hỗ trợ một số tính năng tìm kiếm nâng cao). Bằng việc đánh một từ khóa người dùng quan tâm, hệ thống sẽ cung cấp hai loại kết quả: 1. Kết quả do truy vấn SQL trong cơ sở dữ liệu của hệ thống 2. Kết quả do phân tích qua lịch sử truy cập của những người dùng trước. Với loại kết quả đầu tiên, kết quả tìm được do việc truy vấn bằng các câu truy vấn SQL trong cơ sở dữ liệu. CSDL phải được thiết kế sao cho quá trình tìm kiếm là thuận lợi nhất. Khi tìm được các kết quả theo mức độ ưu tiên, người dùng sẽ chọn một văn bản nào đó để nghiên cứu. Hệ thống phải cung cấp tiếp cho người dùng những tài liệu liên quan tới tài liệu mà họ đang đọc. Việc tìm những văn bản liên quan là dựa trên sự tương đồng giữa hai văn bản. Với loại kết quả thứ hai, hệ thống sẽ cung cấp cho người dùng những văn bản mà qua những lần truy cập hệ thống trước đó, hệ thống ghi nhận những tài liệu mà các người dùng trước đã đọc khi đọc tài liệu này học tài liệu khác cùng chủ đề hay có độ tương đồng nhất định với tài liệu đó. Sơ đồ tổng quát giao dịch của hệ thống: 19
  19. Query search Phân tích phiên làm việc 1.Truy vấn theo từ khóa 2.Truy vấn theo tài liệu liên quan (LSA + phân tích lịch sử làm việc) Items Databases Hình 6: Mô hình sơ đồ hệ thống gợi ý cho người dùng Kết quả trả lại được sắp xếp theo thứ tự giảm dần của mức độ ưa thích. 20
  20. 2. CÁC VẤN ĐỀ VÀ CÁC GIẢI PHÁP HIỆN TẠI 2.1 Các hệ thống gợi ý (recommender systems - RS) 2.1.1 Các khái niệm về Recommender System Recommender Systems (RS) là một hế thống lọc thông tin đặc biệt, hệ thống cho phép lọc thông tin dựa trên sự quan tâm của người dùng và nội dung của văn bản. Điển hình, một hệ thống RS sẽ so sánh những thông tin người dùng với những đặc trưng liên quan. Những đặc trưng này có thể thu thập từ nội dung thông tin (Cách tiếp cận theo nội dung: Content - based approach) hoặc từ môi trường mạng xã hội của người sử dụng (Cách tiếp cận theo hướng lọc cộng tác: Collaborative filtering approach). Như vậy dựa vào khái niệm trên chúng ta có thể thấy hiện có hai kỹ thuật chính được sử dụng để xây dựng một hệ thống RS hiện nay. Một là kỹ thuật hướng nội dung – Content based approach, kỹ thuật này cho phép hệ thống đưa ra những gợi ý phù hợp nhất với những tiêu chuẩn đã được xác định. Hệ thống phải nắm được tất cả những đặc điểm chính được thể hiện trong đối tượng được quan tâm (Theo từ khoá của người dùng) và sắp xếp chúng theo những tiêu chuẩn tương ứng. Mặt khác , tiếp cận theo hướng lọc cộng tác – Collborative filtering CF lại làm việc dựa trên cơ chế tìm kiếm những sự đồng nhất của một cá nhân với cộng đồng mà họ tham gia để xác định gợi ý hơn là dựa trên việc xác thực nội dung của sự quan tâm. Tức là CF dựa trên sự công tác giữa một nhóm cá thể có chung một quan điểm hay một sự lựa chọn nào đó để đưa ra nhưng gợi ý cho người tìm kiếm. Hình 7: Sơ đồ tổng quát hệ thống 21
  21. Trong môt số hệ thống cũng thường áp dụng cả hai kỹ thuật này cách này gọi là hệ thống lai (Hybrid). Về căn bản mô hình bài toán được xây dựng như sau: - Gọi C là số thành viên của hệ thống: ci là tường người dùng cụ thể. - Gọi S là toàn bộ không gian đối tượng có thể đưa ra và si là một đối tượng cụ thể. - Gọi u là giá trị phù hợp của đối tượng s với người dùng c. Vậy bài toán là sự ánh xạ u: CxS R. Trong đó R chính là tập hợp các đối tượng được đưa ra giới thiệu. Tập R sẽ được sắp xếp theo thứ tự giảm dần của u.Công việc chính của giải thuật đơn giản chỉ là đi tìm giá trị hàm u=f(c, s) sao cho u (max) là giá trị được ưa thích nhất. Dễ thấy độ phức tạp của bài toán là rất cao bởi không gian S là rất lớn. Ví dụ như cách ứng dụng về gợi ý sách, số lượng sách có thể lên tới hàng triệu quyển. Hoặc hệ thống gợi ý về CDs Đồng thời không gian C cũng rất lớn nếu như mạng phát triển mang tính toàn cầu như Ebay, Google, Yahoo có thể lên đến hàng tỉ thành viên. 2.1.2 Các hệ thống recommender tiêu biểu Hệ thống bán hàng trực tuyến m a z o n e . Hình 8: Giao diện tìm kiếm của Amazone.com 22
  22. Đầu vào: Tên thiết bị, tên công ty, tên danh mục hay bất cứ từ khóa nào Đầu ra: Gợi ý cho người dùng các sản phẩm hiện có. Hình 9: Giao diện kết quả trả lại Kết quả trả về với đúng cuốn sách cần tìm. Ngoài ra, hệ thống còn tư vấn các sản phẩm khác tương tự 23
  23. Hệ thống tìm kiếm âm nhạc trực tuyến Chacha.vn. Hình 10: Giao diện kết quả tìm kiếm của Amazone.com Recommender System của ChaCha.vn là một hệ thống tư vấn âm nhạc độc đáo với nhiều tính năng nổi trội, là công cụ hỗ trợ bạn nghe nhạc một cách hữu hiệu nhất. Hệ thống Recommender tư vấn cho người dùng những thông tin mới như: Nghệ sĩ liên quan : Hệ thống này sẽ cho bạn biết sự liên quan giữa các nghệ sĩ với nhau, xét theo tiêu chí là mức độ yêu thích của người dùng đối với các nghệ sĩ đó. Người dùng hợp gu : Hệ thống đưa ra danh sách nhóm người dùng có cùng sở thích âm nhạc với bạn. Đồng thời cho biết thêm mức độ hợp “gu” của bạn với một người trong nhóm đó là thấp, trung bình, hay cao. Bài hát liên quan : Hệ thống sẽ đưa ra danh sách các bài hát có liên quan gần gũi đến một bài hát cụ thể nào đó để người dùng tham khảo. Giới thiệu các bài hát mới : Hệ thống tư vấn cho người dùng các bài hát mới mà theo dự đoán của hệ thống, đó là các bài hát người dùng sẽ thích nghe. 24
  24. Hoạt động của hệ thống Hệ thống tư vấn gồm 4 chức năng hoạt động như sau: Nghệ sĩ liên quan: Dựa trên các thông tin về nghệ sĩ (các bài hát, thể loại sáng tác hay trình bày, mức độ quan tâm của người dùng ), hệ thống sẽ tính toán để đo mức liên quan giữa các nghệ sĩ, sau đó đưa ra danh sách các nghệ sĩ có độ liên quan cao nhất. Người dùng hợp “gu”: Dựa trên các bài hát đã nghe qua của từng người dùng cụ thể, hệ thống tính toán mức độ hợp “gu” (hợp sở thích) giữa những người dùng khác nhau. Trên cơ sở đó đưa ra danh sách những người dùng có mức độ hợp “gu” cao nhất. Bài hát liên quan: Dựa vào thể loại, mức độ được ưa thích của bài hát, hệ thống tính toán độ liên quan giữa các bài hát khác nhau. Sau đó đưa ra danh sách bài hát có độ liên quan cao nhất đối với bài hát hiện tại. Giới thiệu các bài hát mới: Dựa vào tiểu sử người dùng (các bài hát đã nghe qua, đánh giá của người dùng về các bài hát đã nghe), hệ thống sẽ tiến hành dự đoán mức độ ưa thích của người dùng đối với các bài hát chưa nghe. Thông qua đó, sắp xếp các bài hát và đưa ra danh sách các bài hát có độ ưa thích cao nhất để tư vấn cho người dùng . Hệ thống này có ưu điểm nổi bật: Hệ thống giúp cho người dùng có thể tìm thấy các bài hát gần gũi với bài hát mà mình yêu thích thông qua các bài hát liên quan. Hệ thống Recommender cũng là kênh kết nối bạn với những người dùng khác có cùng sở thích âm nhạc. Bạn sẽ có nhiều cơ hội làm quen, khám phá những sở thích mới lạ từ những người cùng “gu” âm nhạc. Với các mục hỗ trợ tìm kiếm hiện nay, người dùng muốn tìm một bài hát buộc phải đưa thông tin nào đó về bài hát cần tìm (tên bài hát, một câu hát trong bài, tên ca sĩ, nhạc sĩ sáng tác ). Vì thế rất khó để tìm thấy một bài hát mới hoặc một bài hát hợp sở thích của mình, hoặc bạn sẽ gặp khó khăn nếu bạn không có thông tin về bài hát đó. Với chức năng tư vấn âm nhạc, hệ thống Recommender cho phép người dùng có thể khám phá các bài hát mới lạ, bất ngờ. Nhờ hệ thống Recommender, bạn có thể nghe nhạc chọn lọc theo đúng sở thích mà không mất nhiều thời gian tìm kiếm. Kết luận: Nhìn chúng các hệ thống truyền thống đều có mặt hạn chế nhưng chúng ta biết cách kết hợp các kỹ thuật phù hợp với từng hệ thống riêng biết. Trong nhiều hệ thống thực tế chúng ta đã thấy được khả năng mở rồng đầy tiềm năng đặc biệt trong hệ thống tìm kiếm. 25
  25. 2.2 Xử lý tài liệu tiếng Việt Tiếng nói và chữ viết là hai yếu tố cơ bản nhất của bất kỳ ngôn ngữ nào. Trong sự phát triển của công nghệ thông tin (CNTT) ở Việt Nam, một số việc liên quan đến “tiếng Việt” đã được làm và ít nhiều có kết quả ban đầu: (a) Trước hết là các bộ gõ chữ Việt và thành công của việc đưa được bộ mã chữ Việt vào bảng mã Unicode, cũng như việc chọn Unicode cho bộ mã chuẩn tiếng Việt (nhân đây cũng xin nói thêm, do chưa ý thức về chuẩn, rất nhiều cán bộ CNTT, nhiều cơ quan nhà nước vẫn chưa chịu đổi thói quen cũ để dùng bộ mã chuẩn Unicode, một việc rất quan trọng của xử lý tiếng Việt). Bảo tồn chữ Nôm trên máy tính cũng là một việc đầy nỗ lực và nhiều ý nghĩa được nhiều người theo đuổi lâu nay, cần được nhà nước tiếp tục ủng hộ lâu dài ( (b) Tiếp theo có thể kể đến các chương trình nhận dạng chữ Việt in (OCR: optical character recognition), như hệ VnDOCR của Viện Công nghệ Thông tin, Viện Khoa học và Công nghệ Việt Nam. Các chương trình nhận dạng chữ in nhằm chuyển các tài liệu in trên giấy thành các tài liệu điện tử (dưới dạng các tệp văn bản trên máy tính). (c) Các phần mềm hỗ trợ việc sử dụng tiếng nước ngoài, tiêu biểu là các từ điển song ngữ trên máy tính, thí dụ như các từ điển điện tử của Lạc Việt đã được dùng rộng rãi trên máy tính để tra cứu từ Anh-Việt, Việt-Anh. Điều ta cần phân biệt là các từ điển điện tử này dành cho con người sử dụng, khác với từ điển điện tử dành cho máy tính sử dụng trong xử lý ngôn ngữ tự nhiên (sẽ được đề cập ở phần sau). (d) Các nỗ lực trong việc làm các phần mềm dịch Anh-Việt,Việt-Anh, chẳng hạn như các hệ dịch EVTRAN và VETRAN. (e) Một loại việc nữa là Việt hóa các phần mềm mà gần đây tiêu biểu là kết quả Việt hóa Windows và Microsoft Office của Microsoft. Việc này có thể xem như việc “dịch” các thông báo tiếng Anh cố định trong các phần mềm thành các thông báo tiếng Việt. 2.2.1 Các nghiên cứu về cấu của các nhà nghiên cứu Việt Nam. Các quan điểm trong nghiên cứu về ngữ pháp tiếng Việt, chúng ta có thể thấy rằng chưa có một định nghĩa chuẩn thống nhất về cách gọi của từ loại cũng như cấu trúc các ngữ của tiếng Việt. Trong đồ án này, người viết luận văn sẽ chủtrương bám sát theo quan điểm được nhiều tác giảđã thống nhất, quan điểm này được đánh giá là khá phù hợp với ngữ pháp tiếng Việt hiện tại. Đồng thời, trong quá trình xây dựng đồ án, tác giả cũng tiến hành so sánh và bổ sung thêm những phần lý thuyết thuộc hai quan điểm của Nguyễn Tài Cẩn và Diệp Quan Ban. 26
  26. Nguyễn Tài Cẩn (1975) [14] cho rằng cụm danh từ (danh ngữ) gồm có ba phần : phần đầu, phần trung tâm và phần cuối như sơ đồ sau : Hình 11: Sơ đồ cấu trúc từ của Nguyễn Tài Cẩn Trong thực tế danh ngữ còn có thể xuất hiện cả dưới dạng những dạng chỉ có hai phần: phần đầu+phần trung tâm, phần trung tâm+phần sau hoặc phần đầu + phần sau. Phần trung tâm của danh ngữ không phải chỉ có một từ trung tâm mà bao gồm cả bộphận trung tâm ghép gồm hai trung tâm T1 và T2, với hai vị trí T1, T2 bộ phận trung tâm có thể xuất hiện dưới 3 biến dạng : o Có đầy đủ : T1T2, ví dụ : con chim ( này) o Dạng thiếu T1 : -T2, ví dụ : - chim (này) o Dạng thiếu T2: T1-, ví dụ : con – ( này) -Phần đầu của danh ngữ có tất cả 3 loại thành tố phụ (3 loại định tố) : o Định tố “cái”, ví dụ : cái cậu học sinh ấy o Định tố chỉ số lượng, ví dụ : mấy cái cậu học sinh ấy o Định tố chỉ ý nghĩa toàn bộ, ví dụ : tất cảmấy cái cậu học sinh ấy -Phần cuối của danh ngữ, có thể có 2 loại định tố có tổ chức hoàn toàn khác nhau: o Loại định tố chỉ gồm một từ, ví dụ : một quyển sách quý o Loại định tố do một mệnh đềđảm nhiệm, ví dụ : cuốn sách tôi vừa mua hôm qua Trong tiếng Việt có theer dùng những từ loại sau đây để làm định tố cuối : + Danh từ, ví dụ : vườn cau + Tính từ, ví dụ : ghế dài, một cái ghể rất tốt + Động từ, ví dụ : bàn học + Từ chỉ trỏ, ví dụ : sáng nay, người ấy + Từ chỉ vị trí, ví dụ : nhà trong, cổng trước + Từ chỉ con số : giường một, ngày 27 Hồ Lê (1992) [20] cho rằng vị trí của số lượng từ, đại từ chỉ định và sự kiện từ xoay xung quanh danh từ theo mô hình sau : 27
  27. Trong đó: D1: gồm những danh từ như : con, cái, ; ông, bà ; loại, thứ, hạng, ; phía, bên, nơi, chốn, buổi, hôm, ngày, giờ, khi, lúc . D2: gồm những danh từ còn lại. Ví dụ: - Con mèo đen lớn rồi - Cô y tá - Phía ngoài sân Nguyễn Kim Thản (1997) [20] cho rằng việc nghiên cứu cụm danh từ chính là việc nghiên cứu từ tổ danh từ, loại từ chiếm ưu thế tuyệt đối trong nhóm danh từ. Danh từcó thể ghép với danh từ, thời vị từ, số từ, động từ, tính từ, đại từvà một số từ phụ khác như : khi, lúc, hồi, dạo, thưở, khoảng, độ, bữa, buổi, đằng, phía, phương, nơi, bên, ngả, lối, hạng, cái, loại, cỡ, khổ, bậc, ngạnh -Từ tố danh từ + danh từ (N) : o Từ tố N1 N2, ví dụ : cân gạo, bó rau, hòm sách, chùm cau, tóc mây, tiền nghìn, sông Hồng, huyện Gia Lộc, nước Lào o Từ tố N1 z N2, ví dụ : quê của mẹ, nhà bằng gạch, kế hoạch vềkinh tế, sách cho thiếu nhi, nhãn ở Hưng yên oTừ tố N1 (z) N2, ví dụ : quê mẹ, nhà gạch, kế hoạch kinh tế sách thiếu nhi, nhãn Hưng yên . ( z : là giới từ). -Từ tố danh từ + thời vị từ (E): oTừ tổ N E, ví dụ : Ngoài nhà ngoài có cái giường mình nằm oTừ tổ N (z) E, ví dụ: ý định ( của) trên như thế nào ? -Từ tố danh từ + số từ ( F): từ chỉ số lượng bao giờ cũng đặt trước danh từ (FN), ví dụ : hai cái bàn. Từ chỉ thứ tự bao giờ cũng đặt sau danh từ ( NF), ví dụ : bàn số hai, quyển thứ năm o Từ tố danh từ + động từ, ví dụ : cá sống, nước sôi, gió lùa, kế hoạch làm việc . oTừ tố danh từ + tính từ, ví dụ: quả táo vàng, cái áo trắng oTừ tố danh từ + đại từ chỉđịnh, ví dụ: con mèo ấy, cái xe này, Diệp Quang Ban (1999) [1] đưa ra cấu tạo chung của cụm danh từ có ba phần: phần trung tâm, phần phụ trước, phần phụ sau. Phần trung tâm thường là một danh từ hoặc một ngữ danh từ. Trong phần phụ trước người ta đã xác định được ba vị trí khác nhau sắp xếp theo một trật tự nhất định. Ở phần phụ sau thường nhận được hai vị trí có trật tựổn định. Phần phụ trước cụm danh từ chuyên dùng chỉ mặt số lượng của sự vật nêu ở trung tâm, phần phụ sau chủ yếu dùng chỉ mặt chất lượng của sự vật nêu ở trung tâm. 28
  28. Phần phụ trước Phần phụ trung tâm Phần phụ sau -3 -2 -1 0 1 2 Ví dụ: tất cả những con mèo đen ấy -3 -2 -1 0 1 2 Vị trí 0 là vị trí của danh từ chính Vị trí -1 là vị trí của từ chỉ xuất cái Vị trí -2 là vị trí của từ chỉ số lượng, ví dụ: một, hai, ; vài, ba, dăm, dăm ba ; mỗi, từng, mọi ; những, các, một ; mấy Vị trí -3 là vị trí của từ chỉ tổng lượng, ví dụ : hết thảy, tất cả, cả Vị trí 1 là vị trí của từ nêu đặc trưng miêu tả có thể gặp nhiều loại từ khác nhau như : danh từ, động từ, tính từ, số từ, đại từ và thời vị từ. Ví dụ: phòng tạp chí, phòng đọc, phòng hẹp, phòng chúng tôi . Vị trí 2 là vị trí của từ chỉ định, ví dụ: cái máy này, quả táo kia 2.2.2 Tóm tắt đặc trưng của cấu trúc ngữ pháp tiếng Việt, Anh Các đặc điểm trong câu của tiếng Việt:  Câu được cấu tạo đa thành phần, có câu đơn, câu ghép, câu tối giản.  Các câu được phân tách bằng các dấu chấm câu.  Câu hoàn chỉnh có hoặc không sử dụng các trạng từ, từ cảm thán (các stopword, sẽ được loại bỏ khi phân tách để lọc thông tin)  Câu được hình thành từ các từ, hoặc các câu đơn.  Mỗi câu mang một ý nghĩa thông tin hoàn chỉnh. Như đã trình bày ở trên, ngày nay, các tài liệu viết tiếng Việt đang chuyển sang khai thác trên font chữ chung, tuân theo chuẩn unicode. Điều này có lợi rất nhiều cho việc đọc chính xác các tài liệu tiếng việt của các chương trình đọc. Với các tài liệu tiếng Anh, các từ được phân cách nhau bởi dấu cách. Việc xử lý phân tách từ từ các văn bản tiếng Anh tương đối dễ dàng. Trong tiếng Việt không thể phân tách được thành những từ riêng bởi dấu cách. Vì từ có thể gồm một, hai hoặc nhiều hơn số lượng âm tiết (số lượng từ ghép). Vì thế, việc tách từ để chính xác đòi hỏi giải thuật tách từ tốt. 29
  29. 2.3 Xử lý tài liệu theo ngữ nghĩa 2.3.1 Đặt vấn đề Trong xử lý ngôn ngữ tự nhiên, bài toán gán nhãn ngữ nghĩa hay còn gọi là “khử sự nhập nhằng ngữ nghĩa của từ” là bài toán khó khăn nhất và cũng là bài toán trọng tâm mà đến nay trên thế giới vẫn chưa giải quyết ổn thỏa. Hiện nay, có rất nhiều mô hình với nhiều hướng tiếp cận khác nhau, chủ yếu là: 1. Dựa trên trí tuệ nhân tạo (AI-based): Đây là cách tiếp cận sớm nhất (1960) với những lý thuyết rất hay về mạng ngữ nghĩa, khung ngữ nghĩa và các ý niệm nguyên thủy và các quan hện như IS- A,PART-OF Tuy nhiên, do hầu hêt các tri thức về ngữ nghĩa trong cách tiếp cận này đều được xây dựng bằng tay, vì vậy các mô hình đều dừng lại ở mức độ biểu diễn trên một vài câu. Vấn đề khó khăn của cách tiếp cận này là thiếu tri thức. 2. Dựa trên Cơ sở tri thức (Knowledge-Based): Vào đầu thập niên 80, người ta đã chuyển sang hướng khai thác tri thức tự động từ các từ điển điện tử (MRD: Machine – Readable Dictionaries) như các từ điển đồng nghĩa để có thể phần nào khắc phục hạn chế của hướng tiếp cận dựa trên trí tuệ nhân tạo (thiếu tri thức). Kết quả của hướng tiếp cận này là sự ra đợi của mạng WordNet – Một cơ sở tri thức khổng lồ về ngữ nghĩa theo hướng liệt kê nét nghĩa. Tuy nhiên, các cơ sở tri thức nói trên cũng chỉ là những nguồn thông tin để hệ thống chọn nghĩa tham khảo, còn chọn thông tin nào trong số những thông tin có liên quan đó thì ta phải tự xác định trong từng trường hợp cụ thể. 3. Dựa trên ngữ liệu (Corpus – Based) Hướng tiếp cận này sẽ rút ra các quy luật xử lý ngữ nghĩa (bằng thống kê, bằng máy học, ) từ những kho dữ liệu lớn đã có sẵn và áp dụng các luật này cho trường hợp mới. Thực ra, cách tiếp cận này đã được nêu ra rất sớm (1940), nhưng do nguồn dữ liệu hạn chế, thiết bị xử lý chưa hiện đại nên không có điều kiện phát triển. Mãi tới thập niên 1990, khi mà công nghệ phát triển mạnh, đã có thể vượt qua được khó khăn của mình, cách tiếp cận này được hồi sinh và phát triển mạnh tới ngày nay. Hiện nay, cách tiếp cận dựa trên ngữ liệu kết hợp với tri thức có sẵn là hướng tiếp cận đang được nhiều nhà ngôn ngữ học – máy tính quan tâm. 30
  30. 2.3.2 Phân tích ngữ nghĩa tiềm ẩn (LSA) Cũng liên quan tới mảng ngữ nghĩa của từ, trong đồ án tốt nghiệp này, chúng tôi khai thác chiều khác của phân tích về mặt ngữ nghĩa. Ngoài việc tương đồng từ khóa về mặt hình thức (về bản mặt từ), chúng tôi còn đề cập tới tương đồng về nội dung của tài liệu. Có nhiều phương pháp khác nhau để đánh giá sự tương đồng về nội dung như phương pháp Định chỉ số ngữ nghĩa tiềm ẩn (LSI – Latent Semantic Index), phương pháp Phân tích ngữ nghĩa tiềm ẩn (LSA – Latent Sematic Analys). Chỉ mục ngữ nghĩa tiềm ẩn (LSI) thêm một bước quan trọng cho việc xử lý chỉ mục tài liệu.Thêm vào việc ghi những từ khóa mà một tài liệu chứa. Phương pháp này khảo sát toàn bộ tập dữ liệu, để thấy những tài liệu khác chứa một số từ tương được với các từ đó. LSI được phát triển đầu tiên ở Bellcore trong cuối những năm 80. LSI xem các tài liệu có nhiều từ thông dụng là có nghĩa, và xem những tài liệu ít từ thông dụng là ít có nghĩa. Mặc dù thuật giải LSI không hiểu tí gì về nghĩa của các từ, nó nhận ra các khuân mẫu. Khi bạn tìm kiếm một CSDL chỉ mục LSI, công cụ tìm kiếm này xem xét những giá trị tương tự mà nó tính toán cho mỗi từ của nội dung, và trả về các tài liệu mà nó nghĩ là thích hợp nhất với câu truy vấn. Bởi vì hai tài liệu có thể rất gần nghĩa với nhau thậm chí nếu chúng không cùng chung một từ khóa đặc biệt, LSI không yêu cầu một sự phân tích lấy tương xứng để trả về các kết quả hữu dụng. Ở những vị trí mà một tìm kiếm theo từ khóa đơn giản sẽ không thực hiện được nếu không có phân tích lấy tương xứng, thì LSI sẽ thường trả về những tài liệu liên quan mà không chứa tất cả những từ khóa đó. Phương pháp đề cập nữa là phân tích ngữ nghĩa tiềm ẩn (LSA), là phần kia của đồ án. Xin vui lòng xem đồ án của Mr Cường sẽ có trình bầy chi tiết về phương pháp LSA, và áp dụng của nó trong việc phân tích nội dung của tài liệu. 2.3.3 Nhận xét, kết luận Phân tích ngữ nghĩa là một khâu rất quan trọng trong hệ thống gợi ý. Bước tách từ vựng đã tách tài liệu thành các từ khóa và nó đặc trưng cho tài liệu đó. Hệ thống sẽ tìm kiếm trong kết quả trả về cho người dùng lần đầu tiên bằng việc so khớp các từ khóa được nhập với các từ khóa trong phần từ khóa của các tài liệu. Khâu xử lý về nội dung sẽ xác định các tài liệu nào giống tài liệu nào. Giống ở đây chỉ mức độ tương đồng về mặt nội dung giữa các tài liệu đem gợi ý. Có thể hai tài liệu không có bộ từ khóa giống nhau, nhưng nó có thể sẽ giống về nội dung. 31
  31. 2.4 Thu thập thông tin người dùng 2.4.1 Ưu điểm của các hệ thống tự học Hệ thống tự học là hệ thống dựa vào thông tin của người dùng mà người dùng cung cấp những lần giao dịch với hệ thống để phát hiện ra những sở thích lĩnh vực người dùng quan tâm để cải thiện kết quả trả về cho người dùng cho sát với những yêu cầu thực tế. Hệ thống là một phần nhỏ của hệ chuyên gia-là hệ mà khai thác tri thức trong những lần “giao tiếp” với người dùng bằng các tập luật đã được định nghĩa sẵn. Những ưu điểm của hệ thống tự học chúng tôi tổng kết được.  Tri thức của hệ thống là tri thức mở. Các giao tiếp với người dùng có thể thay đổi sau những lần giao dịch để thích hợp với sở thích của người dùng hơn.  Cho phép người dùng lựa chọn bước tiếp theo của hệ thống.  Kết quả tìm kiếm đối với một hệ thống search engine ngày càng sát hơn với nhu cầu của người tìm kiếm.  Càng thông minh hơn sau nhiều lần giao dịch với người dùng.  Hệ thu nhận và tạo một profile cho người dùng (nếu họ đăng ký thông tin với hệ thống). Và sau những lần giao dịch với hệ, hệ sẽ học được và loại bỏ những thông tin không cần thiết, tăng bộ lọc cho kết quả trả về. 2.4.2 Phân tích logfile Logfile là file ghi nhận thông tin về lịch sử làm việc của người dùng với một hệ nào đó. Việc phân tích logfile sẽ góp phần quan trọng để xác định những sở thích của người dùng để thu hẹp phạm vi các kết quả trả về, đồng thời cũng thu thập để chính xác hơn những dữ liệu mà hệ thống có với những hệ gợi ý. Có rất nhiều các kỹ thuật phân tích logfile, trong phạm vi đồ án này, tôi chỉ giới thiệu mà không đi sâu vào phương pháp nào, để giới thiệu một ứng dụng nhỏ trong hệ thống về việc phân tích các thông tin trong các lần giao dịch với hệ thống. 2.4.3 Phân tích dựa thông tin người dùng Việc ghi nhận các thông tin của người dùng như địa điểm, độ tuổi, giới tính, hay một số các thông tin về sở thích sẽ giúp hệ thống lọc chính xác hơn các kết quả đưa lại cho người dùng. Thí dụ, một trang nhạc có thể đưa mặc định trong playlist của một người dùng có tuổi 13 những bài hát thiếu nhi. Những hệ thống đa người sử dụng, phân tích dựa trên thống tin người dùng thể hiện ở các nhóm quản trị hệ thống, nhóm các người dùng thông thường hay những khác vãng lai. Với những hệ thống đó, những thông tin về người dùng sẽ quyết định giao diện của hệ thống đối với người dùng đó. 32
  32. 2.4.4 Kết luận Một hệ thống recommender system cần phải kết hợp tối đa các phân tích để trả lại kết quả chính xác và phù hợp nhất cho yêu cầu của người dùng. Những thông tin do người dùng cung cấp sẽ là những bộ lọc cho kết quả, những nguồn thông tin đầu vào cho những gợi ý nâng cao. Hệ thống khai thác tri thức dựa trên thông tin được cung cấp bởi người được áp dụng rất nhiều ngay từ những năm 60 được thể hiện ở những hệ chuyên gia, hệ tư vấn. 2.5 Vấn đề lưu trữ dữ liệu Vấn đề lưu trữ dữ liệu cũng là bài toán không nhỏ với những bộ máy tìm kiếm. Ở phần dưới, tôi sẽ giới thiệu những công cụ tìm kiếm nổi tiếng trên internet hiện nay. Mỗi hệ thống đều có những giải pháp lưu trữ dữ liệu riêng phụ thuộc vào giải thuật tìm kiếm của mình. Với những search engine, phải có kế hoạch cập nhật thông tin định kỳ nhất định để cập nhật sự thay đổi (những hệ thống tìm kiếm online) hay khi cập nhật tài liệu mới (những hệ thống trên CSDL có sẵn). Trong đồ án này, chúng tôi cũng lựa chọn một phương thức lưu trữ dữ liệu sẽ được trình bày chi tiết trong phần sau. 33
  33. PHẦN II: CƠ SỞ LÝ THUYẾT 1. CÁC BỘ MÁY TÌM KIẾM 1.1 Một số engine thông dụng Sau đây là danh sách một số search engine. Tại sao chúng được gọi là các search engine “lớn”? Đó là vì chúng được biết đến nhiều và sử dụng tốt. Với các chuyên gia web, các công cụ tìm kiếm lớn là danh sách những nơi quan trọng nhất bởi chúng phát sinh ra một lượng lớn các trang web tiềm tàng. Đối với những người tìm kiếm, các công cụ tìm kiếm phổ biến thường trả lại kết quả đáng tin cậỵ Dưới đây là danh sách các search engine. 1. Hình 12: Giao diện tìm kiếm của Google Nguyên thủy, Google là một đề án của trường Đại học Stanford được thực hiện bởi hai sinh viên Larry Page và Sergey Brin gọi là BackRub. Đến năm 1998 thì đổi thành Google, và đồ án đó đã trở thành công ty riêng Google đặt tại khuôn viên trường đại học. Google là công cụ tìm kiếm nổi tiếng, tốt nhất hiện tại cho tìm kiếm thông tin trên web. Dịch vụ dựa vào crawler, spider cung cấp trang web với thông tin đưa ra toàn diện cùng mức độ liên quan tốt. 34
  34. 2. Hình 13: Giao diện tìm kiếm Yahoo Đưa ra năm 1994, yahoo là “thư mục” cũ nhất của web, một nơi các nhà tổ chức trang web thành các thư mục. Tuy nhiên, vào tháng 10 năm 2002, yahoo chuyển sang lập danh sách dựa vào crawler cho những kết quả chính của nó. Công cụ này sử dụng công nghệ từ Google cho tới 2/2004. Hiện nay, Yahoo sử dụng công cụ tìm kiếm riêng của mình. Yahoo Directory vẫn tồn tai. Bạn sẽ chỉ ra các liên kết “danh mục” phía dưới một số các trang web liệt kê trong kết quả trả về của một tìm kiếm từ khóa. Khi được đề xuất, những trang web này dẫn bạn đến một danh sách các trang web đã được xem xét và phê chuẩn bởi một nhà biên tập. Công nghệ Alta Vista và AllTheWeb được phối hợp với kỹ thuật Inktomi, một công cụ tìm kiếm dựa trên crawler, để tạo nên một Yahoo crawler hiện nay. Vừa qua, thương vụ mua bán Yahoo với Microsoft không thành, khiến nhiều chuyên gia đánh giá, trong thời gian tới, cả 2 hãng này sẽ có bước đột phá trong công nghệ tìm kiếm và đánh giá các site. 3. Ask Jeeves Ask Jeeves bắt đầu nổi tiếng từ năm 1998 và 1999, được biết như một công cụ tìm kiếm “ngôn ngữ tự nhiên” cho phép ta tìm kiếm bằng cách đặt câu hỏi và trả về kết quả với những gì có vẻ là trả lời đúng. 35
  35. Hình 14 Giao diện tìm kiếm Ask Jeeves Thực sự, công nghệ không phải là những gì làm cho Ask Jeeves thực thi tốt. Bên cạnh các bối cảnh, công vụ này tại một thời điểm có hơn 100 trình soạn thảo giám sát các log tìm kiếm. Sau đó, chúng vào trong web và định vị những site mà chúng cho là tốt nhất tương xứng với các truy vấn phổ biến nhất. 4. All the web Hình 15: Giao diện tìm kiếm All the web 36
  36. 2.1 Chiến lược tìm kiếm 2.1.1 Công nghệ tìm kiếm ngữ nghĩa trên thế giới hiện nay Hầu hết các hiệu quả gần đây của các công cụ tìm kiếm dựa vào ngữ nghĩa phụ thuộc vào công nghệ xử lý ngôn ngữ tự nhiên để phân tích và hiểu câu truy vấn. Một trong những công cụ tìm kiếm đầu tiên và thông dụng nhất là Ask Jeesves. Nó liên kết những điểm mạnh của phần mềm phân tích ngôn ngữ tự nhiên, xử lý khai khoáng dữ liệu và tạo cơ sở tri thức với những phân tích theo kinh nghiệm. Người dùng có thể gõ các truy vấn bằng ngôn ngữ tự nhiên và nhận được những trả lời thỏa đáng. Một kiểu nâng cao khác của công cụ tìm kiếm Internet là Cycorp ( Cyc liên kết cơ sở tri thức lớn nhất trên thế giới với Internet. Cyc là một cơ sở tri thức bao la và đa ngữ cảnh. Với Cyc Knowledge Server, nó cho phép các site Internet thêm vào tri thức ngữ nghĩa thông dụng và phân biệt những nghĩa khác nhau của khái niệm nhập nhằng. Bàn về hiệu quả của các tìm kiếm ngữ nghĩa. Nhiều công ty lớn đang thật sự hướng đến vấn đề của tìm kiếm ngữ nghĩa, sự phát triển của Microsoft về web có lẽ phụ thuộc vào khả năng của nó để hoàn thiện công cụ tìm kiếm mà dẫn đầu là Google. Kết quả là Microsoft đưa ra một chương trình tìm kiếm mới gọi là MSNBot, nó lướt Web để xây dựng một chỉ mục các liên kết HTML và các tài liệu. MSNBot được dự định như là một công nghệ mà kết hợp các ứng dụng cho hệ điều hành Windows. Sau đó Microsoft sẽ kết nối công cụ tìm kiếm của nó với cômg MSN trong phiên bản Wíndows kế tiếp của nó nhằm dễ dàng tìm kiếm e-mail, spreadsheets và các tài liệu trên PC. Về Công nghệ tìm kiếm. Tìm kiếm ngữ nghĩa giải quyết với các khái niệm và các mối quan hệ logic. Nếu xem xét các vấn đề thực tế của tìm kiếm ngữ nghĩa, chúng ta sẽ thấy rằng, cây tìm kiếm đứng trước tình trạng thiếu logic đưa đến vấn đề chưa hoàn tất hay “ngắc ngứ” (Incompleteness and Halting Problem). Đầu tiên, về vấn đề Incompleteness, kết luận có thể được xem như là một sự suy diễn của một dãy logic gắn lại với nhau. Ở mỗi điểm, có thể có nhiều hướng khác nhau để tới một suy diễn mới. Vì vậy, để đạt hiệu quả, có một nhóm các khả năng phân nhánh để bằng cách nào đó hướng tới một giải pháp đúng, và nhóm các phân nhánh đó có thể trải ra trong các hướng mới lạ. 37
  37. Trong một hệ thống logic phức tạp, có một số lượng lớn các chứng cớ tiềm tàng. Một số chúng dài và không rõ ràng nếu chỉ có một chứng cơ. Được chúng minh vào những năm 1930, một số hệ thống logic đủ phức tạp vốn đã là không đầy đủ. Nói cách khác, có các câu lệnh mà không thể được chứng minh một cách logic. Luận cứ của nó cho điều đó liên quan đến một vấn đề khác, vấn đề Halting. Vấn đề Halting suy ra rằng, các giải thuật hiện nay sẽ không bao giờ kết thúc trong một câu trả lời. Khi nói về Web, chúng ta nói tới hàng triệu các sự kiện và chục ngàn luật và có thể nối kết đan lại với nhau trong những hướng phức tạp. Vì thế, không gian của các chứng cứ tiềm tàng là vô tận, và cây này theo logic sẽ trở nên vô tận. 2.1.2 Chiến lược tìm kiếm Chiến lược tìm kiếm với thông tin trên Web ngữ nghĩa dựa trên nền tảng các công nghệ trên. Từ search engine thường được dùng rộng rãi để mô tả các công cụ tìm kiếm dựa trên crawler và các thư mục do con người cung cấp. Đây là hai loại của các search engine tập hợp các danh sách của chúng trong những cách khác nhau hoàn toàn. Search engine dựa vào crawler gồm 3 phần: 1. Bộ thu thập thông tin: Robot là một chương trình tự động duyệt qua các cấu trúc siêu liên kết để thu thập tài liệu và đệ quy nó để nhật về tất cả các tài liệu có liên quan với tài liệu này. Về bản chất, nó chỉ là một chương trình duyệt và thu thấp thông tin từ các site theo đúng giao thức web. Như trình duyệt thông thường không được gọi là robot do thiếu tính chủ động. Chúng chỉ duyệt web khi có sự tác động của con người. 2. Bộ lập chỉ mục - Index Hệ thống lập chỉ mục hay gọi là hệ thống phân tích và xử lý dữ liệu thực hiện việc phân tích, trích chọn những thông tin cần thiết (thường là các từ đơn, từ ghép, cụm từ quan trọng) từ những dữ liệu mà robot thu thập được và tổ chức thành cơ sở dữ liệu riêng để có thể tìm kiếm trên đó một cách nhanh chóng, hiệu quả. Hệ thống chỉ mục là danh sách các từ khóa, chỉ rõ các từ khóa nào xuất hiện ở trang nào, địa chỉ nào. 3. Bộ tìm kiếm thông tin Search engine là cụm từ để chỉ toàn bộ hệ thống bao gồm bộ thu thập thông tin, bộ lập chỉ mục và bộ tìm kiếm thông tin. Các bộ này hoạt động liên tục từ lúc khởi động hệ thống, chúng phụ thuộc lần nhau về mặt dữ liệu và độc lập về hoạt động. 38
  38. Search engine tương tác với user thông qua giao diện web, có nhiệm vụ nhận và trả về những tài liệu thỏa yêu cầu của user. Nói các khác, tìm kiếm từ là tìm kiếm các trang mà những từ trong câu truy vấn xuất hiện nhiều nhất, trừ stopword (những từ quá thông dụng, cảm thán ). Một từ trong câu truy vấn càng xuất hiện nhiều trong một trang thì trang đó càng được chọn để trả về. Một trang chứa tất cả các từ trong câu truy vấn thì tốt hơn là trang không chứa hoặc chỉ một số từ. Ngày nay, hầu hết các search engine đều hỗ trợ chức năng tìm kiếm cơ bản và nâng cao, từ đơn từ ghép, cụm từ, danh từ riêng Ngoài việc tìm chính xác theo từ khóa, các search engine còn cố gắng hiểu ý nghĩa thực sự của câu hỏi thông qua câu chữ do người dùng cung cấp. Điều này được thể hiện qua chức năng sửa lỗi chính tả. 1.2 Nguyên lý hoạt động Search engine điều khiển robot đi thu thập thông tin trên mạng thông qua các hyperlink. Khi robot phát hiện ra một site mới, nó gửi tài liệu về cho server chính để tạo cơ sở dữ liệu chỉ mục phục vụ cho nhu cầu tìm kiếm thông tin. Vì thông tin trên mạng luôn thay đổi nên robot phải cập nhật liên tục các site cũ. Mật độ cập nhật phụ thuộc vào từng hệ thống search engine. Khi search engine nhận câu truy vấn, nó tiến hành phân tích, tìm trong cơ sở dữ liệu chỉ mục và trả về những tài liệu thỏa yêu cầu. 39
  39. 2.XỬ LÝ VĂN BẢN TIẾNG VIỆT 2.1 Từ và cấu trúc từ của tiếng Việt 2.1.1 Định nghĩa từ Khái niệm từ nghe rất thông dụng dễ hiểu nhưng định nghĩa chính xác thế nào thì không đơn giản. Từ trước tới nay cũng có nhiều định nghĩa được đưa ra, tất cả đều đúng, nhưng chưa hoàn chỉnh. Dưới đây, tôi nêu ra một số định nghĩa về từ. Thời Hy Lạp cổ đại, trường phái ngôn ngữ Alexandre định nghĩa: “Từ là đơn vị nhỏ nhất trong chuỗi lời nói”. Theo E.Sapir: “Từ là một đoạn nhỏ nhất có ý nghĩa, hoàn toàn có khả năng độc lập và bản thân có thể làm thành câu tối giản. Còn với những nhà ngôn ngữ học tiếng Việt, thì theo Lê Văn Lý: “Từ là một tín hiệu ngữ âm có thể cấu tao bằng một âm vị hay sự kết hợp với âm vị, mà sự phát âm chỉ tiến hành trong một lần, hoặc là một âm tiết mà chữ viết biểu thị bằng một đơn vị tách rời có thể hiểu được.” Theo Nguyễn Kim Thản thì “Từ là đơn vị cơ bản của ngôn ngữ, có thể tách khỏi các đơn vị khác của lời nói để vận dụng một cách độc lập và là một khối hoàn chỉnh về mặt ý nghĩa và cấu tạo”. Quan niệm của ông về “đơn vị cơ bản” là những đơn vị có số lượng hữu hạn để thông báo, trao đổi tư tương cho nhau. Đơn vị này phải có ý nghĩa, và khi sử dụng, người dùng phải có ý thức về nó. Chính vì thế, từ không thể là câu, và không thể là âm tiết (vì nhiều khi âm tiết không có nghĩa và khi sử dụng, người dùng không ý thức về nó). 2.1.2 Cấu trúc từ tiếng Việt Từ của tiếng Việt không giống với những ngôn ngữ phương Tây khác là không thể tách để xác định từ loại. Từ trong tài liệu tiếng Việt có thể là từ đơn (1 từ) , từ ghép. Theo như thống kê trên trang thì độ dài của một từ tiếng Việt được thể hiệnt trong bảng: Độ dài của từ Tần số Tỉ lệ % 1 8933 12.2 2 48995 67.1 3 5727 7.9 4 7040 9.7 ≥ 5 2301 3.1 Tổng cộng 72994 100 Table 1: : Tần suất xuất hiện độ dài từ tiếng Việt trên trang Vdict.com 40
  40. 2.1.3 Các phương pháp tách từ tiếng Việt đã được nghiên cứu a. Nguyên lý thống kê dựa vào Internet Thông qua các search engine thương mại, chúng ta có thể rút trích những thông tin thống kê hữu ích từ Internet. Đó là tần số tài liệu (document frequency – df), số lượng các tài liệu đã được lập chỉ mục có chứa từ cần xét. Ta chuẩn hóa giá trị df bằng cách chia cho một hằng số MAX (là số lượng các tài liệu tiếng Việt đã được lập chỉ mục) để xấp xỉ xác suất xuất hiện của một từ trên Internet. Trên thực tế, chúng ta khó có thể biết được chính xác số lượng các tài liệu tiếng 1 Việt đã được lập chỉ mục, do đó, thông qua thực nghiệm giá trị df của các từ thông 9 dụng, chúng tôi chọn giá trị MAX là 10 . Tiếng Việt df có 21.3 × 106 của 20.4 × 106 một 14.4 × 106 Table 2: Tần số tài liệu của một số từ thông dụng trong tiếng Việt Do từ tiếng Việt gồm một (số) tiếng liên tiếp nhau, ta cần độ đo thông kê mức độ liên kết giữa các tiếng. Mutual information -MI là một khái niệm quan trọng trong lý thuyết thông tin, được dùng trong xử lý ngôn ngữ tự nhiên để thể hiện quan hệ giữa hai từ cụ thể x và y (Church et al [3]): Tuy nhiên, chúng tôi không chỉ xét các cặp tiếng mà còn xét nhóm n tiếng (n- gram). Tương tự Chien et al [3], chúng tôi mở rộng công thức tính MI của bigram cho n-gram: Với cw là chuỗi gồm n tiếng (cw = s1s2 sn), lw và rw là hai chuỗi con dài nhất (n- 1) của cw (lw = s1s2 sn-1 và rw = s2s3 sn). Nếu giá trị MI(cw) lớn thì lw và rw có khuynh hướng cùng xuất hiện chung trong tài liệu trên Internet (tức là cw có khả năng cao là từ ghép). Ví dụ: xét chuỗi “đại học khoa học tự nhiên”, ta so sánh khả năng chuỗi “khoa học tự nhiên” hay “học khoa học tự” là từ ghép. Ta thấy rằng “khoa học tự nhiên” có giá trị MI lớn hơn hẳn MI của “học khoa học tự” (không có ý nghĩa). 41
  41. Chuỗi Wf MI khoa học tự nhiên 39200 0.92 khoa học tự 41800 học tự nhiên 39900 học khoa học tự 14900 0.27 học khoa học 28600 Table 3: Ví dụ về MI của n-gram Trong phần tiếp theo, tôi sẽ giới thiệu hướng tiếp cận bằng giải thuật di truyền để xác định MI tối ưu toàn cục, tức là cách tách từ hợp lý nhất của câu b. Giải thuật di truyền Với mỗi câu, chúng ta sẽ xác định cách tách từ hợp lý nhất. Tuy nhiên, không gian tìm kiếm sẽ rất lớn do có nhiều cách tổ hợp các tiếng thành từ. Dựa vào nguyên lý tiến hóa và di truyền, giải thuật di truyền thích hợp cho việc xác định (xấp xỉ) các lời giải tối ưu hóa toàn cục trong không gian tìm kiếm rất lớn thay vì các lời giải tối ưu cục bộ (Michalewicz, [10]). Giải thuật di truyền sẽ tiến hóa một quần thể qua nhiều thế hệ nhằm tối ưu hóa toàn cục thông quá quá trình chọn lọc, lai, biến dị và tái sinh. Chất lượng của mỗi cá thể trong quần thể được xác định bằng hàm thích nghi và qua mỗi thế hệ, chúng ta sẽ chọn lại N cá thể tốt nhất sau khi thực hiện quá trình lai, biến dị và tái sinh. Giải thuật di truyền áp dụng cho bài toán tách từ tiếng Việt được tóm tắt như sau: Mục tiêu: Xét văn bản t gồm n tiếng t=s1s2 sn. Mục tiêu của quá trình GA là xác định những cách tách hợp lý nhất văn bản t thành m đọan t=w1w2 wm với wk=si sj (1 ≤ k≤ m, 1≤ i, j≤ n) có thể là từ đơn hay từ phức. Cách biểu diễn: Quần thể (pop) là tập hợp các cá thể (id) được biểu diễn bằng xâu nhị phân. Mỗi bit tương ứng với một tiếng. Vậy, một từ sẽ gồm các bit giống nhau liên tiếp. Ví dụ: học sinh học sinh học 0 0 1 0 0 học sinh # học # sinh học w1 w2 w3 Khởi tạo quần thể: Ở bước này, ta khởi gán các tham số như số lượng thế hệ, kích thước quần thể, tỉ lệ lai, tỉ lệ biến dị và tỉ lệ tái sinh. Các cá thể ban đầu của quần thể được phát sinh ngẫu nhiên. Tuy nhiên, chúng tôi áp dụng một số ràng buộc nhằm tối ưu hóa các chuỗi ngẫu nhiên được phát sinh ra. Dưới đây là thống kê rút ra từ từđiển trực 2 tuyến chưa 72994 từ và ngữ 42
  42. Thống kê theo độ dài của từ trong từ điển Độ dài của từ Tần số Tỉ lệ % 1 8933 12.2 2 48995 67.1 3 5727 7.9 4 7040 9.7 ≥ 5 2301 3.1 Tổng cộng 72994 100 Do hiện chưa có từ điển chuẩn dành cho xử lý ngôn ngữ nên chúng tôi quyết định chọn thống kê dựa trên một từ điển thông dụng. Dựa vào số liệu thống kê, ta thấy rằng có trên 67% các từ trong từđiển có độ dài là 2 tiếng, khoảng 30% là từ đơn hay từ gồm 3-4 tiếng. Các từ dài hơn chỉ chiếm khoảng 3% trong từđiển, trong đó thường là các thành ngữ. Phép lai: Chúng tôi áp dụng thao tác lai 1-điểm chuẩn trên hai xâu bit. Với cặp cá thể id1 id2, hai cá thể con được tạo ra bằng cách lấy phần đầu của id1 nối vào phần sau của id2 và ngược lại. Tuy nhiên, nếu cá thể con vi phạm các điều kiện giới hạn về kích thước (mỗi đoạn wk có kích thước tối đa là 4), ta sẽ chuẩn hóa cá thể này bằng cách đảo các bit gây ra vi phạm ở cuối đoạn này. Phép biến dị: Thay vì dùng phép biến dị đảo bit ngẫu nhiên, chúng tôi chỉ đảo các bit ở biên của mỗi phân đoạn. Tương tự phép lai, ta sẽ chuẩn hóa các cá thể để thỏa điều kiện giới hạn kích thước của phân đoạn. Tái sinh: Sau khi thực hiện phép lai và biến dị, ta chọn lại một số cá thể ở thế hệ trước (theo tỉ lệ đã chọn) đưa vào quần thể mới. Phép chọn: Ở mỗi thế hệ, chúng ta chỉ chọn giữ lại N cá thể tốt nhất. Hàm thích nghi của mỗi cá thể id được xác định như sau: với id=w1w2 wm là một cá thể trong quần thể pop = {id1, , idN} Hội tụ: Quá trình tiến hóa nhằm cải thiện độ thích nghi của các cá thể trong quần thể, tức là cải thiện chất lượng của việc tách từ. Do đó, chúng ta sẽ dừng quá trình tiến hóa nếu độ thích nghi của thế hệ sau không cao hơn thế hệ trước, hoặc số lượng thế hệ đạt ngưỡng cho trước. Giải thuật dùng trong bài toán sẽ dựa vào bộ từ điển ngôn ngữ tiếng Việt cho sẵn trước để xác định các từ loại. Giải thuật chúng tôi dùng sẽ được trình bày phần sau cố gắng phán đoán chính xác nhất ý nghĩa từ loại. 43
  43. 2.2 Thuật toán, otomat tách từ Trong phần này, tôi chỉ giới thiệu mang tính lý thuyết các giải thuật, các otomat tách từ tiếng Việt đã được nghiên cứu. 1. Xây dựng ôtômát âm tiết đoán nhận tất cả các âm tiết tiếng Việt 2. Xây dựng ôtômát từ vựng đoán nhận tất cả các từ vựng tiếng Việt. 3. Dựa trên các ôtômát nêu trên, xây dựng đồ thị tương ứng với câu cần phân tích và sử dụng thuật toán tìm kiếm trên đồ thị để liệt kê các cách phân tích có thể. Bảng chữ cái của ôtômát âm tiết là bảng chữ cái tiếng Việt, mỗi cung chuyển được ghi trên đó một ký tự. Ví dụ, với ba âm tiết phương, pháp, trình ta sẽ có ôtômát đoán nhận âm tiết như Hình 1. Hình 16: Xây dựng ôtômát âm tiết 44
  44. Thuật toán xây dựng ôtômát âm tiết Input: Từ điển âm tiết Output: Ôtômát âm tiết. Thuật toán: 1. Lập trạng thái khởi đầu ; 2. Vòng lặp đọc cho tới khi hết tệp dữ liệu, lấy ra từng âm tiết. Gọi các ký tự của âm tiết đó là a. b. Vòng lặp trong khi () i. Lấy ra ký tự ; ii. Tìm trong các cung chuyển từ trạng thái cung trên đó ghi ký tự . Nếu có cung như thế: 1. 2. iii. Nếu không có cung ( nào như thế thì thoát khỏi vòng lặp b. c. Với từ i đến i. Tạo mới trạng thái q, ghi nhận là trạng thái không kết; ii. Thêm cung chuyển trên đó ghi ký tự ; iii. d. Ghi nhận q là trạng thái kết; Ôtômát từ vựng được xây dựng tương tự, với điểm khác như sau: thay vì ghi trên mỗi cung chuyển một âm tiết, ta ghi số hiệu của trạng thái (kết) của ôtômát âm tiết tại đó đoán nhận mỗi âm tiết của từ nhằm giảm kích thước của ôtômát từ vựng. Ví dụ, với hai từ phương pháp và phương trình, giả sử khi đưa lần lượt các âm tiết phương, pháp, trình qua ôtômát âm tiết, ta đến được các trạng thái kết ghi các số n , n , n thì trên các 1 2 3 cung chuyển tương ứng ta ghi các số n , n , n (Hình 2). 1 2 3 Hình 17: Xây dựng ôtômát từ vựng 45
  45. Thuật toán xây dựng ôtômát từ vựng Input: Từ điển từ vựng, ôtômát âm tiết Output: Ôtômát từ vựng. Thuật toán: 1. Lập trạng thái khởi đầu ; 2. Vòng lặp đọc cho tới khi hết tệp dữ liệu, lấy ra từng mục từ word. Gọi các âm tiết của word là ; 3. Sử dụng ôtômát âm tiết để đoán nhận các âm tiết trên, được các số hiệu của trạng thái (kết) tương ứng là a. b. Vòng lặp trong khi ( ) i. Lấy ra số ; ii. Tìm trong các cung chuyển từ trạng thái cung trên đó ghi số . Nếu có cung như thế 1. 2. iii. Nếu không có cung ( nào như thế thì thoát khỏi vòng lặp b. c. Với từ i đến i. Tạo mới trạng thái q, ghi nhận là trạng thái không kết; ii. Thêm cung chuyển ( trên đó ghi số ; iii. d. Ghi nhận là trạng thái kết Sau khi đã xây dựng xong hai ôtômát, ta ghi chúng vào hai tệp định kiểu để dùng trong bước phân tách từ vựng. Nếu mỗi ký tự (char) được ghi vào tệp với kích thước 2 byte (mã Unicode), mỗi số nguyên (int) có kích thước 4 byte thì tệp lưu ôtômát âm tiết có kích thước 146KB, tệp ôtômát từ vựng có kích thước 1MB. Tư tưởng của thuật toán phân tách từ vựng là quy việc phân tách câu về việc tìm đường đi trên một đồ thị có hướng, không có trọng số. Giả sử câu ban đầu là một dãy gồm n+1 âm tiết s , s , , s . Ta xây dựng một đồ 0 1 n thị có n+2 đỉnh v , v , , v , v , sắp thứ tự trên một đường thẳng từ trái sang phải; 0 1 n n+1 trong đó, từ đỉnh v đến đỉnh v có cung (i < j) nếu các âm tiết s , s , , s theo thứ tự i j i i+1 j-1 lập thành một từ. Khi đó mỗi cách phân tách câu khác nhau tương ứng với một đường đi trên đồ thị từ đỉnh đầu v đến đỉnh cuối v . Trong thực tế, cách phân tích câu đúng 0 n+1 đắn nhất thường ứng với đường đi qua ít cung nhất trên đồ thị. 46
  46. Trong trường hợp câu có sự nhập nhằng thì đồ thị sẽ có nhiều hơn một đường đi ngắn nhất từ đỉnh đầu đến đỉnh cuối, ta liệt kê toàn bộ các đường đi ngắn nhất trên đồ thị, từ đó đưa ra tất cả các phương án tách câu có thể và để người dùng quyết định sẽ chọn phương án nào, tuỳ thuộc vào ngữ nghĩa hoặc văn cảnh. Ví dụ, xét một câu có cụm "thuộc địa bàn", ta có đồ thị như sau (Hình 3) Hình 18: Một tình huống nhập nhằng Cụm này có sự nhập nhằng giữa thuộc địa và địa bàn và ta sẽ có hai kết quả phân tách là "thuộc địa / bàn" và "thuộc / địa bàn". Ta có thể chỉ ra rất nhiều những cụm nhập nhằng trong tiếng Việt, chẳng hạn "tổ hợp âm tiết", "bằng chứng cớ", Trường hợp trong câu có âm tiết không nằm trong từ điển thì rõ ràng ôtômát âm tiết không đoán nhận được âm tiết này. Kết quả là đồ thị ta xây dựng từ câu đó là không liên thông. Dựa vào tính chất này, ta thấy rằng nếu đồ thị không liên thông thì dễ dàng phát hiện ra rằng đơn vị âm tiết không đoán nhận được không nằm trong từ điển âm tiết, tức nó bị viết sai chính tả hoặc là một đơn vị âm tiết (từ vựng) mới. 47
  47. PHẦN III: GIẢI PHÁP KỸ THUẬT 1. GIẢI PHÁP ĐỌC ĐỊNH DẠNG TÀI LIỆU 1.1 Giao diện Ifilter Giao diện Ifilter được thiết kế bởi Microsoft để sử dụng cho dịch vụ định chỉ số (Indexing Service). Mục đích chính của nó là trích rút phẩn text từ file để dịch vụ Định chỉ số có thể đánh chỉ số và tìm kiếm nó về sau. Một vài phiên bản của Windows có trình thực thi Ifilter cho các file office, cũng có những phiên bản miễn phí hoặc thương mại cho việc đọc các loại file khác (pdf có bộ lọc Adobe PDF là phổ biến nhất). Giao diện IFilter có thể được sử dụng trong các dạng không phải dạng text giống như các tài liệu office, tài liệu pdf hay cũng của dụng dạng file text như html, xml, để trích rút những phần quan trong của file. Mặc dù giao diện IFilter được sử dụng chủ yếu cho các mục đích trích rút text từ tài liệu, nó cũng được sử dụng trong các bộ máy tìm kiếm. Windows Desktop Search sử dụng các bộ lọc để đánh chỉ số cho file. Chi tiết công nghệ của giao diện IFilter không được tiết lộ bởi Microsoft. Phần sau đây, tôi giới thiệu cách phần mềm được chọn sử dụng giao diện IFilter để đọc file như thế nào. 1.2 Chương trình EPocalipse.IFilter Để thực hiện một việc tách từ, đơn giản sử dụng: TextReader reader=new FilterReader(fileName); using (reader) { textBox1.Text=reader.ReadToEnd(); } Với fileName là đường dẫn tuyệt đối của file được định vị trên ổ cứng. Quá trình thực thi nhận dạng extension của file được thực hiện như sau: Gọi phương thức LoadIFilter và truy tìm theo dấu vết của các keys đăng ký trong registry trong quá trình thực hiện đó. Chi tiết được thực hiện trong lớp FilterLoader. Khi một cặp lớp/DLL được tìm thấy cho mở rộng của file đó, các thông tin này được lưu lại trong cach để tránh việc phải đọc lại registry. Khi có tên của DLL và ID của lớp thực hiện cho bộ lọc, lớp ComHelper thực hện các công việc sau:  Tải dll sử dụng phương thức LoadLibrary trong API của Win32.  Gọi phương thức GetProcAddress để lấy một con trở tới hàm DllGetClassObject. 48
  48.  Sử dụng Marshal.GetDelegateForFunctionPointer() để chuyển con trỏ hàm tới một delegate. Chú ý, chỉ available trong .NET 2.0  Gọi hàm DllGetClassObject để nhận một đối tượng IclassFactory  Khi có một đối tượng IClassFactory , ta sử dụng nó để tạo một các instance của lớp thực thi filter private static IFilter LoadFilterFromDll(string dllName, string filterPersistClass) { //Get a classFactory for our classID IClassFactory classFactory=ComHelper.GetClassFactory(dllName, filterPersistClass); if (classFactory==null) return null; //And create an IFilter instance using that class factory Guid IFilterGUID=new Guid("89BCB740-6119-101A-BCB7-00DD010655AF"); Object obj; classFactory.CreateInstance(null, ref IFilterGUID, out obj); return (obj as IFilter); }  Cuối cùng, có một thực thể IFilter mà có thể thích hợp với lớp FilterReader IPersistFile persistFile=(filter as IPersistFile); if (persistFile!=null) { persistFile.Load(fileName, 0); IFILTER_FLAGS flags; IFILTER_INIT iflags = IFILTER_INIT.CANON_HYPHENS | IFILTER_INIT.CANON_PARAGRAPHS | IFILTER_INIT.CANON_SPACES | IFILTER_INIT.APPLY_INDEX_ATTRIBUTES | IFILTER_INIT.HARD_LINE_BREAKS | IFILTER_INIT.FILTER_OWNED_VALUE_OK; if (filter.Init(iflags, 0, IntPtr.Zero, out flags)==IFilterReturnCode.S_OK) return filter; } 2. GIẢI PHÁP TÁCH TỪ 2.1 Giải pháp tách từ Tiếng Anh Với các tài liệu tiếng Anh, từ của tiếng Anh được phân cách với nhau bằng dấu cách. Điều đó có nghĩa là chúng ta có thể tách từ tiếng Anh bằng dấu phân tách là dấu cách. Việc xử lý các stopword của tiếng anh thì chúng tôi cũng có một file gồm hơn 300 từ stopword của tiếng Anh để phục vụ cho việc loại bỏ stopword khỏi văn bản tách 49
  49. để tách ra những từ quan trọng, tránh những từ mang ý nghĩa chung, hay chỉ là cảm thán. 2.2 Giải pháp cho Tiếng Việt 2.1.1 Các giải pháp đã có Hiện có rất nhiều chương trình hỗ trợ việc phân tích cú pháp, tách từ, gán nhãn từ tiếng Việt cùng với các giải thuật thuật toán khác nhau. Những đồ án được tham khảo là chương trình Code_correct (chính xác loại văn bản dựa vào tập huấn luyện), chương trình VNSegment của tác giả Phương Thái (chương trình khá hoàn chỉnh trong việc tách từ và phân loại từ tiếng Việt. Chỉ có điều viết trên nền Java và không được cung cấp sourcode và file thư viện), chương trình VNTokenizer (đề cập tới một số nghiên cứu hữu ích cho việc tác từ). 2.1.2 Giải pháp sử dụng và nhận xét Giải pháp được sử dụng được mô tả bằng giải thuật phía dưới. Dựa trên một bộ từ điển tiếng Việt tương đối đầy đủ gồm hơn 99.000 từ và cụm từ. Câu cần tách Yes In Dictionary? Câu được cắt No No Cắt tiếng bên trái Còn 1 từ Giữ các từ đã cắt Yes Câu bên trái Thêm từ mới vào mảng từ tách Stack Hình 19: Giải thuật tách từ từ câu 50
  50. Tài liệu được tách thành các câu chuẩn (hoàn chỉnh). Giải thuật tách các từ khóa từ các câu đó. Các từ trong câu sẽ được kiểm tra xem có tồn tại trong từ điển không bằng các so sánh nó với các từ trong từ điển. Nếu nó “giống” từ trong từ điển, thì tách từ đó và kiểm tra tiếp. Giải thuật trên giảm thiểu tối đa tình huống nhập nhằng. Tuy nhiên trong trường hợp câu này thì giải thuật tách sai: Học sinh học sinh học Học|sinh học|sinh học. Nhưng như tình huống này (thuộc địa bàn) thì lại giải quyết tốt (thuộc|địa bàn). Chi phí về thời gian cho giải thuật trên là rất lớn ở bước kiểm tra từ tách ra có trong từ điển hay không. Từ điển với hơn 99.000 từ được load vào bộ nhớ trong dưới với kiểu dữ liệu được tổ chức theo 2 kiểu như sau:  Một là mảng các string. Mỗi phần tử là từ hay cụm từ của từ điển. Mảng này được sắp xếp theo thứ tự tăng dần của mã ASCII (Trong C#, kiểu dữ liệu mảng nó.  Tổ chức thành một arraylist mà mỗi phần tử của nó là mảng các string. Mảng các string thuộc 1 phần tử nó giống nhau về âm tiết đầu tiên của từ. Ví dụ ả ả đào ả đầu ả hoàn Nông nổi ái Ái Ái ân Ái chà Ái quốc Ái nam Ái thần Ái tình ái nữ an An cư lạc An An giấc nghiệp dưỡng Anh Anh chàng Anh hùng Anh hùng Anh kiệt Anh linh Anh vũ chủ nghĩa Ăn Ăn Ăn cắp Ăn trộm Table 4: Bảng một số ví dụ về cấu trúc lưu trữ từ điển Khi đọc một từ, ta tách âm tiết đầu tiên của nó và kiểm tra trước với các phần tử đầu tiên của mảng, sau đó, kiểm tra tiếp với các phần tử trong mảng của nó. Khi đó, nó sẽ tăng tốc độ tìm kiếm lên đáng kể. 51
  51. 3. GIẢI PHÁP LSA Giải pháp LSA là một trong các giải pháp xử lý tài liệu về mặt ngữ nghĩa. Sau khi các thu được bộ từ khóa cho từng văn bản, phương pháp LSA sẽ phân tích trên bộ từ khóa đó với các văn bản khác để tìm ra mức độ tương đồng. Bộ từ khóa của một tài liệu và các tài liệu còn lại sẽ hình thành ma trận độ tương đồng về nội dung. Phương pháp LSA sử dụng giải thuật SVD để giảm chiều cho ma trận trên. Chi tiết về giải pháp này xin tham khảo ở đồ án của bạn Cường. 4. GIẢI PHÁP PHÂN TÍCH NGƯỜI DÙNG Một phiên làm việc được bắt đầu từ khi người dùng search với một từ khóa và kết thúc bằng việc search bộ từ khóa mới. Phân tích lịch sử truy cập của người dùng là phân tích độ yêu thích của họ với các tài liệu khác khi đọc một tài liệu nào đó. Khi người dùng click vào những tài liệu gợi ý Cs (tài liệu được hệ thống đưa ra khi người dùng quyết định đọc một tài liệu nào đó - A), hệ thống sẽ cập nhật mức độ yêu thích với các tài liệu gợi ý C(một trong các Cs) của tài liệu A. Ngoài ra, hệ thống còn cung cấp chức năng khảo sát để thu thập ý kiến của người dùng về mức độ tương đồng của tài liệu C so với tài liệu A. Các dữ liệu này sẽ được hệ thống xử lý để quyết định các thứ tự ưu tiên cho các tài liệu gợi ý trong những lần làm việc sau. Một phương pháp nữa để thu hẹp bộ lọc là thu thập các thông tin về sở thích của người dùng về các tiêu chí lĩnh vực nào đó. Khi đăng ký tài khoản với hệ thống, hệ thống sẽ ghi nhận các sở thích ứng với người dùng đó, dùng làm các thông tin phục vụ cho bộ lọc các kết quả trả về trong màn hình tìm kiếm cho người dùng. 5. GIẢI PHÁP CÔNG NGHỆ Như tên đề tài đã phản ánh, hệ thống sẽ như một modul tích hợp trên trình duyệt web để hoạt động như bộ search engine. Nên giải pháp công nghệ được đề xuất là môi trường .NET 2.0, hệ quản trị cơ sở dữ liệu MS SQL server 2005 để lưu trữ các index của tài liệu thu thập được. Giao diện quản trị và người dùng được xây dựng dựa trên môi trường web với ngôn ngữ ASP.Net và mã nguồn C#. Chương trình cũng sử dụng kiến trúc 3 tầng để trao đổi với CSDL. Modul DAL xử lý các trao đổi Database và Dataset, dataadapter. Modul BLL thực hiện việc chuyển các đổ dữ liệu từ các dataset vào các kiểu dữ liệu của lớp giao diện xử lý. Các phương thức chức năng được thiết kế trong modul Utilities 52
  52. PHẦN IV: XÂY DỰNG CHƯƠNG TRÌNH, CÀI ĐẶT CHẠY DEMO 1. PHÂN TÍCH HỆ THỐNG 1.1 Mô hình use-case và đặc tả use-case Tìm kiếm tài liệu theo ngữ nghĩa RID «uses» «uses» «uses» Corr Tìm kiếm LSA «uses» Cập nhập tài liệu liên quan «uses» Phân tích logfile Quản trị người dùng Quản lý tài liệu Người dùng Cập nhập Thông tin người dùng Quản lý tác giả Quản trị Quản lý nhà xuất Đăng ký người dùng bản Quản trị danh mục RID: Module phân tích tài liệu thành từ khoá, và trích rút từ khoá đặc trưng cho nội dung văn bản. LSA: Module sử dụng để so sánh nội dung văn bản bằng ngữ nghĩa. Corr: Module dánh giá độ tương đồng nội dung văn bản. Hình 20: Biểu đồ use-case hệ thống 53
  53. Đặc tả use-case Use-case tìm kiếm / Hiển thị() Click on Tìm kiếm() W_Tìm kiếm QL_Tài liệu W_Tìm kiếm +Xem chi tiêt() : void +Tìm kiếm() : void () +Tìm kiếm() : void 1 () +Tài liệu tương đồng nội dung() : void Kết quả +Tìm kiếm nâng cao() : void * Actor1 Tìm ki Tìm ế m Lấy tài liệu() PageLoad TT_Tài liệu TT_Tài liệu QL_Tài liệu User Hình 21: Use-case tìm kiếm Hình 22: Biểu đồ cộng tác chức năng tìm kiếm Lớp biên: - W_Tìm kiếm - W_Tài liệu Lớp điều khiển: - QL_Tài liệu Lớp thực thể: - TT_Tài liệu Dưới đây là biểu đồ tiến trình. User W_Tìm kiếm QL_Tài liệu :Tài liệu Yêu cầu tìm kiếm(từ khoá) Tìm kiếm(từ khoá) Lấy tài liệu() kết quả kết quả Hiển thị() Hình 23: Biểu đồ tiến trình chức năng tìm kiếm 54
  54. Use-case quản lý tài liệu W_Danh sách tài liệu W_Tài liệu +Danh sách TL +Thông tin +Thêm() : int +Sửa() : int 1* +Chi tiết tài liệu() : void +Xoá() : int W_Admin TT_Tài liệu -username QL_Tài liệu Admin -pass -ID tài liệu : int +Đăng nhập() +Thêm() : int +Sửa() : int +Xoá() : int Hình 24: Use-case quản lý tài liệu Lớp biên: - W_admin - W_Danh sách tài liệu - W_Tài liệu Lớp điều khiển: - QL_Tài liệu Lớp thực thể: - TT_Tài liệu - Biểu đồ cộng tác: / Kiểm tra(user/pass) Đăng nhập(user/pass) W_Admin Danh sách TL PageLoad Thêm Sửa Xoá Kết quả () () () Admin QL_Tài liệu Kết quả () () () Xoá W_Tài liệu Xoá () ; Sửa () kết quả Thêm () () s ử a ; () Thêm TT_Tài liệu Hình 25: Biểu đồ cộng tác 55
  55. Chức năng thêm mới tài liệu: Admin W_Admin W_Tài liệu QL_Tài liệu TT_Tài liệu Đăng nhập(user/pass) kiểm tra(user/pass) yêu cầu chọn thao tác hiển thị danh sách TL() Thêm mới() Thêm mới() Thêm mới() kết quả Kết quả kết quả Hình 26: Biểu đồ tiến trình chức năng thêm mới tài liệu Chức năng sửa tài liệu: Admin W_Admin W_Tài liệu QL_Tài liệu TT_Tài liệu Đăng nhập(user/pass) kiểm tra(user/pass) yêu cầu chọn thao tác Chọn chỉnh sửa tài liệu Danh sách tài liệu() Chọn tài liệu() Lấy tài liệu(id) Lấy tài liệu(id) kết quả Kết quả hiển thị() Chỉnh sửa() Chỉnh sửa() Sửa() kết quả kết quả kết quả Hình 27: Biểu đồ tiến trình chức năng sửa tài liệu 56
  56. Chức năng xoá tài liệu: Admin W_Admin W_tài liệu QL_Tài liệu TT_Tài liệu Đăng nhập(user/pass) kiểm tra(user/pass) yêu cầu chọn thao tác Chọn chỉnh sửa tài liệu Danh sách tài liệu() Chọn tài liệu() Thao tác Xoá() Xoá(id) Xoá(id) kết quả kết quả kết quả Hình 28:Biểu đồ tiến trình chức năng xóa tài liệu - Biểu đồ cộng tác: / Kiểm tra(user/pass) Đăng nhập(user/pass) W_Admin Danh sách TL PageLoad Thêm Sửa Xoá Kết quả () () () Admin QL_Tài liệu Kết quả () () () Xoá W_Tài liệu Xoá () ; Sửa () kết quả Thêm () () s ử a ; () Thêm TT_Tài liệu Hình 29: Biểu đồ cộng tác quản lý tài liệu 57
  57. Use-case quản lý tác giả W_Tác giả QL_Tác giả +Thông tin -ID tác giả : int +Chi tiết tài liệu() : void +Thêm() : int 1 +Sửa() : int * +Xoá() : int W_Danh sách tác giả W_Admin +Danh sách TG -username Admin +Thêm() : int TT_Tác giả -pass +Sửa() : int +Đăng nhập() +Xoá() : int Hình 30: Use-Case quản lý tác giả Lớp biên: - W_admin - W_Danh sách tác giả - W_Tác giả Lớp điều khiển: - QL_Tác giả Lớp thực thể: - TT_Tác giả Biểu đổ trình tự: - Chức năng thêm mới tác giả: Admin W_Admin W_Tác giả QL_Tác giả TT_Tác giả Đăng nhập(user/pass) kiểm tra(user/pass) yêu cầu chọn thao tác hiển thị danh sách TG() Thêm mới() Thêm mới() Thêm mới() kết quả Kết quả kết quả Hình 31: Biểu đồ tiến trình thêm mới tác giả 58
  58. Chức năng sửa thông tin tác giả: Admin W_Admin W_Tác giả QL_Tác giả TT_Tác giả Đăng nhập(user/pass) kiểm tra(user/pass) yêu cầu chọn thao tác Chọn chỉnh sửa tác giả Danh sách tác giả() Chọn tác giả() Lấy tác giả(id) Lấy tác giả(id) kết quả Kết quả hiển thị() Chỉnh sửa() Chỉnh sửa() Sửa() kết quả kết quả kết quả Hình 32: Biểu đồ tiến trình sửa tác giả Chức năng xoá tác giả: Admin W_Admin W_Tác giả QL_Tác giả TT_Tác giả Đăng nhập(user/pass) kiểm tra(user/pass) yêu cầu chọn thao tác Chọn xoá tác giả Danh sách tác giả() Thao tác Xoá() Xoá(id) Xoá(id) kết quả kết quả kết quả Hình 33: Biểu đồ tiến trình xóa tác giả 59
  59. Biểu đồ cộng tác: / Kiểm tra(user/pass) Đăng nhập(user/pass) Danh sách TL W_Admin PageLoad Thêm Sửa Xoá Kết quả () () () () () Admin Kết quả W_Tác giả QL_Tác giả Thêm Xoá() () Sửa() ; sửa kết quả Thêm() () ; Xoá () TT_Tác giả Hình 34: Biểu đồ cộng tác quản lý tác giả Use-case quản lý nhà xuất bản W_Danh sách NXB W_NXB +Danh sách NXB +Thông tin QL_NXB 1 +Thêm() : int * +Chi tiết NXB() : void -ID NXb : int +Sửa() : int +Thêm() : int +Xoá() : int +Sửa() : int +Xoá() : int W_Admin Admin -username -pass TT_NXB +Đăng nhập() Hình 35: User-Case quản lý NXBLớp biên: - W_Admin - W_Danh sách NXB - W_NXB Lớp điều khiển: - QL_NXB Lớp thực thể: - TT_NXB 60
  60. Biểu đổ trình tự: Chức năng thêm mới NXB: Admin W_Admin W_NXB QL_NXB TT_NXB Đăng nhập(user/pass) kiểm tra(user/pass) yêu cầu chọn thao tác hiển thị danh sách NXB() Thêm mới() Thêm mới() Thêm mới() kết quả Kết quả kết quả Hình 36: Biểu đồ tiến trình thêm mới NXB Chức năng chỉnh sửa thông tin NXB: Admin W_Admin W_NXB QL_NXB TT_NXB Đăng nhập(user/pass) kiểm tra(user/pass) yêu cầu chọn thao tác Chọn chỉnh sửa NXB Danh sách NXB() Chọn NXB() Lấy NXB(id) Lấy NXB(id) kết quả Kết quả hiển thị() Chỉnh sửa() Chỉnh sửa() Sửa() kết quả kết quả kết quả Hình 37: Biểu đồ tiến trình chỉnh sửa thông tin NXB 61
  61. Chức năng xoá NXB: Admin W_Admin W_NXB QL_NXB TT_NXB Đăng nhập(user/pass) kiểm tra(user/pass) yêu cầu chọn thao tác Chọn xoá NXB Danh sách NXB() Thao tác Xoá() Xoá(id) Xoá(id) kết quả kết quả kết quả Hình 38: Biểu đồ tiến trình xóa thông tin NXB Biểu đồ cộng tác: / Kiểm tra(user/pass) Đăng nhập(user/pass) Danh sách TL W_Admin PageLoad Thêm Sửa Xoá Kết quả () () () () () Admin Kết quả W_NXB QL_NXB Thêm Xoá() kết quả Sửa() () ; () sửa Thêm () ; Xoá () TT_NXB Hình 39: Biểu đồ công tác quản lý NXB 62
  62. Use-case thành viên TT_User W_Danh sách User +Danh sách User +Xoá() : int 1 * QL_User W_Admin W_User -ID user : int -username : string Admin +Xoá() : int -pass : string +Thông tin : string +Thêm() : int +Chi tiết user() : void +Đăng nhập() : bool +Sửa() : int W_Đăng ký/đăng nhập -Thông tin User +Đăng ký() : bool +Đăng nhập() : bool User Hình 40: Biểu đồ usercase quản lý thành viên Lớp biên: - W_Admin - W_Danh sách User - W_User - W_Đăng ký/đăng nhập Lớp điều khiển: - QL_User Lớp thực thể: - TT_User Biểu đổ trình tự: Chức năng thêm mới User: User W_Đăng ký W_User QL_User TT_User Nhập thông tin() Có đăng ký không() kiểm tra(thông tin) Đăng ký() Kiển tra tồn tại() Thêm mới() Thêm mới() kết quả Kết quả kết quả Hình 41: Biểu đồ tiến trình thêm mới user 63
  63. Chức năng chỉnh sửa thông tin: User W_Đăng nhập W_User QL_User TT_User Đăng nhập(user/pass) kiểm tra(user/pass) yêu cầu chọn thao tác Chọn chỉnh sửa User Thông tin User() Lấy User(id) Lấy User(id) kết quả Kết quả hiển thị() Chỉnh sửa() Chỉnh sửa() Sửa() kết quả kết quả kết quả Hình 42: Biểu đồ tiến trình chỉnh sửa user Chức năng xoá User: Admin W_Admin W_User QL_User TT_User Đăng nhập(user/pass) kiểm tra(user/pass) yêu cầu chọn thao tác Chọn xoá User Danh sách User() Thao tác Xoá() Xoá(id) Xoá(id) kết quả kết quả kết quả Hình 43: Biểu đồ tiến trình xóa user 64
  64. Biểu đồ cộng tác: / Kiểm tra(user/pass) Đăng nhập(user/pass) W_Admin () PageLoad QL_User () Thêm Thêm Xoá Sửa () Kết quả Xoá () Kết quả () () ; sửa kết quả Admin () ; Xoá W_User () TT_User Thêm Sửa Kết quả () () Đăng nhập() Đăng ký() W_Đăng ký/Đăng nhập -Thông tin user +Đăng ký() : bool +Đăng nhập() : bool User / Kiểm tra(user/pass) Hình 44: Biểu đồ cộng tác quản lý user 65
  65. 1.2 Về cơ sở dữ liệu Biểu đồ quan hệ thực thể Hình 45: Biểu đồ cộng tác quản lý user Bảng các thực thể chính # Tên Tên thực thể Miêu tả A0 – Bảng chính 1 A01 Tài liệu Chứa các thông tin cơ bản của một tài liệu. 2 A02 Danh mục cấp 1 Chứa các thông tin về loại của tài liệu. Danh mục phân cấp 1- 2-3. Danh mục cấp 1 lớn nhất, 2 66
  66. # Tên Tên thực thể Miêu tả là danh mục con của danh mục cấp 1, 3 là danh mục con của danh muc cấp 2. 3 A03 4 A04 Tác giả Chứa các thông tin cơ bản về tác giả. 5 A05 Nhà xuất bản Chứa các thông tin cơ bản về nhà xuất bản. 6 A06 Người dùng Chứa các thông tin cơ bản của người dùng. 7 A07 Danh mục cấp 2 Chứa các thông tin về loại của tài liệu. Danh mục phân cấp 1- 2-3. Danh mục cấp 1 lớn nhất, 2 là danh mục con của danh mục cấp 1, 3 là danh mục con của danh muc cấp 2. 8 A08 Danh mục cấp 3 Chứa các thông tin về loại của tài liệu. Danh mục phân cấp 1- 2-3. Danh mục cấp 1 lớn nhất, 2 là danh mục con của danh mục cấp 1, 3 là danh mục con của danh muc cấp 2. 9 A09 10 A10 Cấu hình hệ thống Chứa các thông tin liên quan tới cấu hình hoạt động của hệ thống 11 A11 Tài liệu liên quan Chứa những tài liệu liên quan về mặt thống kế số lần được xem. 12 A12 Kết quả phân tích LSA Chứa kết quả của phép phân tích LSA. .Table 5: Bảng các thực thể chính 67
  67. Bảng các quan hệ thực thể # Parent Type Child Description 1 A01 N:N A04 Một tài liệu có thể có một hoặc nhiều tác giả, một tác giả có thể có một hoặc nhiều tài liệu. 2 A05 1:N A01 Một nhà xuất bản có thể xuất bản một hoặc nhiều cuốn sách. Một cuốn sách chỉ do một nhà xuất bản sản xuất. 3 A02 1:N A07 Danh mục cấp 1 có thể có một hoặc nhiều danh mục con cấp 2. 4 A07 1:N A08 Danh mục cấp 2 có thể có một hoặc nhiều danh mục con cấp 3 5 A01 1:N A11 Tài liệu có thể có nhiều tài liệu liên quan về mặt nội dung. 6 A01 1:N A12 Tài liệu có nhiều kết quả LSA với các tài liệu khác. Table 6: Bảng quan hệ các thực thể Danh sách bảng # Tên Mô tả Lệnh SQL 1 A01 Tài liệu: Chứa thông CREATE TABLE [dbo].[A01] ( tin cơ bản của một tài [A01_ID] [int] IDENTITY (1, 1) NOT NULL , liệu. [A01_Name] [nvarchar] (100) NULL , [A01_Code] [char] (8) NOT NULL , [A01_Description] [ntext] NULL , [A05_ID] [int] NOT NULL , [A01_DatePublished] [datetime] NULL , [IsActive] [bit] NULL , 68
  68. # Tên Mô tả Lệnh SQL [A01_LinkDown] [Varchar] NULL , [A01_RelatedDocs] [text] NULL , [A01_LSA] [text] NULL , [A01_KeyWords] [text] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO 2 A02 Danh mục cấp 1: CREATE TABLE [dbo].[A02] ( Chứa các thông tin về [A02_ID] [int] IDENTITY (1, 1) NOT NULL , loại của tài liệu. Danh [A02_Name] [nvarchar] (50) NULL , mục phân cấp 1-2-3. [A02_Code] [char] (3) NOT NULL , Danh mục cấp 1 lớn [IsActive] [bit] NULL nhất, 2 là danh mục con của danh mục cấp ) ON [PRIMARY] 1, 3 là danh mục con GO của danh muc cấp 2. 3 A04 Tác giả: Chứa các CREATE TABLE [dbo].[A04] ( thông tin cơ bản về [A04_ID] [int] IDENTITY (1, 1) NOT NULL , tác giả. [A04_Name] [nvarchar] (100) NULL , [A04_Birthday] [datetime] NULL , [A04_Address] [nvarchar] (100) NULL , [A04_NativePlace] [nvarchar] (100) NULL , [A04_Phone] [int] NULL , [A04_Email] [varchar] (100) NULL , [IsActive] [bit] NULL ) ON [PRIMARY] GO 4 A05 Nhà xuất bản: Chứa CREATE TABLE [dbo].[A05] ( các thông tin cơ bản [A05_ID] [int] IDENTITY (1, 1) NOT NULL , về nhà xuất bản. [A05_Name] [nvarchar] (100) NULL , [A05_Address] [nvarchar] (100) NULL , [A05_Phone] [int] NULL , [A05_Email] [varchar] (100) NULL , [A05_Remark] [ntext] NULL , 69
  69. # Tên Mô tả Lệnh SQL [IsActive] [bit] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO 5 A06 Người dùng: Chứa các CREATE TABLE [dbo].[A06] ( thông tin cơ bản của [A06_ID] [int] IDENTITY (1, 1) NOT NULL , người dùng. [A06_Name] [nvarchar] (100) NULL , [A06_UseName] [nvarchar] (100) NOT NULL , [A06_PassWord] [nvarchar] (100) NOT NULL , [A06_Phone] [int] NULL , [A06_Email] [varchar] (100) NULL , [IsActive] [bit] NULL ) ON [PRIMARY] GO 6 A07 Danh mục cấp 2: CREATE TABLE [dbo].[A07] ( Chứa các thông tin về [A07_ID] [int] IDENTITY (1, 1) NOT NULL , loại của tài liệu. Danh [A07_Name] [nvarchar] (100) NULL , mục phân cấp 1-2-3. [A07_Code] [char] (5) NOT NULL , Danh mục cấp 1 lớn [A02_ID] [int] NOT NULL , nhất, 2 là danh mục con của danh mục cấp [IsActive] [bit] NULL 1, 3 là danh mục con ) ON [PRIMARY] của danh muc cấp 2. GO 7 A08 Danh mục cấp 3: CREATE TABLE [dbo].[A08] ( Chứa các thông tin về [A08_ID] [int] IDENTITY (1, 1) NOT NULL , loại của tài liệu. Danh [A08_Name] [nvarchar] (100) NULL , mục phân cấp 1-2-3. [A08_Code] [char] (8) NOT NULL , Danh mục cấp 1 lớn [A07_ID] [int] NOT NULL , nhất, 2 là danh mục con của danh mục cấp [IsActive] [bit] NULL 1, 3 là danh mục con ) ON [PRIMARY] của danh muc cấp 2. GO 8 A09 Bảng quan hệ: Thành CREATE TABLE [dbo].[A09] ( lập quan hệ nhiều [A01_ID] [int] NOT NULL , nhiều giửa bảng A01 [A04_ID] [int] NOT NULL 70
  70. # Tên Mô tả Lệnh SQL và A04. ) ON [PRIMARY] GO 9 A10 Bảng chứa thông tin CREATE TABLE [dbo].[A10] ( hệ thống. [A10_ID] [int] IDENTITY (1, 1) NOT NULL , [A10_NumberOfDimensionReduce] [int] NOT NULL , [A10_MaxOfWords] [int] NOT NULL , [A10_MaxOfResultOfLSA] [int] NOT NULL , [A10_MaxOfRelatedDocs] [int] NOT NULL , [A10_DegreeOfAccuracy] [float] NOT NULL ) ON [PRIMARY] 10 A11 Bảng chứa thông tin CREATE TABLE [dbo].[A11] ( tài liệu liên quan tới [A11_ID] [int] IDENTITY (1, 1) NOT NULL , tài liệu. [A01_ID] [int] NOT NULL , [A11_RelatedID] [int] NOT NULL , [A11_Index] [float] NOT NULL , [A11_StandIndex] [float] NOT NULL ) ON [PRIMARY] 11 A12 Bảng chứa kết quả CREATE TABLE [dbo].[A12] ( của LSA. [A12_ID] [int] IDENTITY (1, 1) NOT NULL , [A01_ID] [int] NOT NULL , [A12_RelatedID] [int] NOT NULL , [A12_Index] [int] NOT NULL , [A12_StandIndex] [float] NOT NULL ) ON [PRIMARY] Table 7: Danh sách các bảng chính 71
  71. Mô tả chi tiết bảng Bảng A01 # Tên trường Kiểu dữ liệu Cho phép Giá Khoá Kho Ghi chú null trị chính á mặ ngoà c i địn h 1 A01_ID INT NOT Yes No NULL 2 A01_Name NVARCHA NULL No No R(100) 3 A01_Code CHAR(8) NOT No No NULL 4 A01_LinkDow VARCHAR( NULL No No Chứa link liên kết cho n 100) phép download tài liệu. 5 A01_Decriptio NTEXT NULL No No n 6 A05_ID INT NOT No Yes NULL 7 IsActive BIT NULL 1 No No 8 A01_KeyWord NTEXT NULL No No Chứa các từ khoá đại s diện cho nôi dung vb. 9 A01_RelatedD NTEXT NULL No No Chứa những tài liệu ocs liên quan tới tài liệu này về mặt nội dung. 10 A01_LSA NTEXT NULL No No Chứa kết quả của phân tích LSA. Table 8: Mô tả bảng tài liệu A01 72
  72. A02 # Tên trường Kiểu dữ liệu Cho phép Giá trị Kho Kho Ghi null mặc định á á chú chín ngo h ài 1 A02_ID INT NOT Yes No NULL 2 A02_Name NVARCHAR(100 NULL No No ) 3 A02_Code CHAR(3) NOT No No NULL 4 IsActive BIT NULL 1 No No Table 9: Mô tả bảng Catalogue A02 A04 # Tên trường Kiểu dữ liệu Cho Giá trị Kho Kho Ghi phép mặc á á chú null định chín ngo h ài 1 A04_ID INT NOT Yes No NULL 2 A04_Name NVARCHAR(100) NULL No No 3 A04_Birthday DATETIME NULL No No 4 A04_Address NVARCHAR(100) NULL No No 5 A04_NativePlace NVARCHAR(100) NULL No No 6 A04_Phone INT NULL No No 7 A04_Email NVARCHAR(100) NULL No No 8 IsActive BIT NULL 1 No No Table 10: Mô tả bảng tác giả A04 73
  73. Bảng A05 # Tên trường Kiểu dữ liệu Cho phép Giá Kho Kho Ghi null trị á á chú mặc chín ngo định h ài 1 A05_ID INT NOT NULL Yes No 2 A05_Name NVARCHAR(100) NULL No No 3 A04_Address NVARCHAR(100) NULL No No 4 A04_Remark NTEXT NULL No No 5 A04_Phone INT NULL No No 6 A04_Email NVARCHAR(100) NULL No No 7 IsActive BIT NULL 1 No No Table 11: Mô tả bảng NXB A05 Bảng A06 # Tên trường Kiểu dữ liệu Cho phép Giá Khoá Kho Ghi null trị chính á chú mặc ngo định ài 1 A06_ID INT NOT NULL Yes No 2 A06_Name NVARCHAR(100) NULL No No 3 A06_UseName NVARCHAR(100) NOT NULL No No 4 A06_PassWord NVARCHAR(100) NOT NULL No No 5 A04_Phone INT NULL No No 6 A04_Email NVARCHAR(100) NULL No No 7 IsActive BIT NULL 1 No No Table 12: Mô tả bảng User A06 74
  74. Bảng A07 # Tên trường Kiểu dữ liệu Cho phép Giá trị Khoá Kho Ghi null mặc chính á chú định ngo ài 1 A07_ID INT NOT Yes No NULL 2 A07_Name NVARCHAR(100) NULL No No 3 A07_Code CHAR(5) NOT No No NULL 4 IsActive BIT NULL 1 No No 5 A02_ID INT NOT No Yes NULL Table 13: Mô tả bảng subCatalogue A07 Bảng A08 # Tên trường Kiểu dữ liệu Cho phép Giá Kho Kho Ghi null trị á á chú mặc chín ngo định h ài 1 A08_ID INT NOT NULL Yes No 2 A08_Name NVARCHAR(100) NULL No No 3 A08_Code CHAR(3) NOT NULL No No 4 IsActive BIT NULL 1 No No A07_ID INT NOT NULL No Yes 5 Table 14: Mô tả bảng Child A08 75
  75. Bảng A11 # Tên trường Kiểu dữ liệu Cho phép Giá trị Kho Kho Ghi null mặc định á á chú chín ngo h ài 1 A11_ID INT NOT Yes No NULL 2 A01_ID INT NOT No Yes NULL 3 A11_RelatedID INT NOT No No NULL 4 A11_Index FLOAT NULL 0.0 No No A11_StandIndex FLOAT NULL 0.0 No No 5 Table 15: Mô tả bảng A11 Bảng A12 # Tên trường Kiểu dữ liệu Cho phép Giá trị Kho Kho Ghi null mặc định á á chú chín ngo h ài 1 A12_ID INT NOT Yes No NULL 2 A01_ID INT NOT No Yes NULL 3 A12_RelatedID INT NOT No No NULL 4 A12_Index INT NULL 0 No No A12_StandIndex FLOAT NULL 0.0 No No 5 Table 16: Mô tả bảng A12 76
  76. 2. CÁC MODUL 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.2 Modul 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: arl.Sort(); 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 77
  77. 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. 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. 78
  78. 2.3 Modul 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. 79
  79. PHẦN V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 1. KẾT LUẬN Ngày nay, internet đã chở thành cuộc cách mạng lớn của nhân loại mà động lực của nó chính là sự phát triển kinh tế mang tính toàn cầu. Nhưng sự phát triển đó cũng đòi hỏi ngày càng nhiều cơ sở lưu trữ dữ liệu hơn dẫn đến việc khai thác hiệu quả dữ liệu trở nên khó khăn. Để nâng cao khả năng sử lý dữ liệu thì dữ liệu phải được chọn lọc trước. Một hướng chọn lọc dữ liệu hiểu quả đó là phân tích ngữ nghĩa của văn bản. Toàn bộ văn bản được cô đọng trong ngữ nghĩa của nó. Chính vì vậy nếu phân tích được ngữ nghĩa của văn bản chúng ta sẽ giảm được một khối lượng lớn câu chữ không hàm chứa thông tin. Việc nghiên cứu ngữ nghĩa của văn bản mở ra một hướng phát triển mới trong khai thác thông tin trên dữ liệu. Ngữ nghĩa của văn bản mang lại nhiều thuận lợi như vậy nhưng để thật sự hiểu rõ được các phương pháp nghiên cứu phân tích ngữ nghĩa là không dễ dàng. Do vậy mục tiêu của đồ án đặt ra gồm hài vấn đề chính như sau: Về lý thuyết: Mục tiêu tìm hiểu, nghiên cứu về ngữ nghĩa của văn bản bao gồm các phần như: Phân tích, tách văn bản thành tập từ khoá, lọc tách từ khoá của văn bản nhằm cô đọng những từ khoá đặc trưng cho ngữ nghĩa của văn bản, thống kê và trích lọc những văn bản có ngữ nghĩa tương đồng. Về phần ứng dụng minh hoạ: Mục tiêu là xây dựng được một ứng dụng mang tính demo sự khả thi của các kỹ thuật phân tích ngữ nghĩa. Nội dung của đề tài đưa ra khá rộng và chỉ được thực thiện trong vòng 4 tháng do vậy để hoàn tất đề tài này chúng em gặp rất nhiều khó khăn về mặt tìm kiếm tài liệu, đọc hiểu tài liệu và một số kỹ thuật để vận dụng kiến thức mình đã tìm hiểu được. Nhưng bù đắp lại những khó khăn vất vả đó là chúng em đã tiếp thu được rất nhiều kiến thức mới lạ và rất bổ ích về ứng dụng ngữ nghĩa của văn bản trong công nghệ thông tin – mở ra một hướng phát triển mới trong thế giớ công nghệ thông tin. Kết quả xứng đáng đó chính là chúng em đã hoàn thành được những mục tiêu, yêu cầu đề ra của đồ án. 80
  80. Kết quả về mặt nghiên cứu Qua quá trình nghiên cứu và tìm hiều về lĩnh vực ứng dụng ngữ nghĩa của văn bản, chúng em đã hiểu được và ghi nhận lại một số kết quả đạt được như sau: Tìm kiếm được nhiều tài liệu hay và bổ ích về ngữ nghĩa của văn bản. Nắm được các kỹ thuật phân tích ngữ nghĩa của văn bản, một hướng nghiên cứu mới nhất của công nghệ thông tin hiện tại và trong tương lai. Đông thời những ý tưởng mới xuất phát có thể mang lại nhiều lợi ích cho con người cũng như phát triển kinh tế. Kết quả đạt được khi nghiên cứu về ngữ nghĩa của văn bản như sau:  Nắm rõ các kỹ thuật tách văn bản với các định dạng bất kỳ.  Nắm vững các kỹ thuật lọc tách từ khoá đặc trưng cho nội dung văn bản.  Tìm hiểu và nắm được các kỹ thuật thống kê trích lọc những văn bản có ngữ nghĩa tương đồng.  Tìm hiểu các kỹ thuật phân tích logfile. Kết quả về mặt phát triển ứng dụng Đối với ứng dụng minh hoạ chúng em đã hoàn tất được mục tiêu của đồ án đề ra là nắm vững các kỹ thuật: Tổ chức, lưu trữ dữ liệu và truy vấn dữ liệu trên SQL. Cách sử dụng các kỹ thuật tách văn bản để tách văn bản ở định dạng bất kỳ thành các tập từ khoá đại diện cho ngữ nghĩa của nó. Cài đặt và phát triển kỹ thuật lọc từ khoá cho phép loại bỏ những từ khoá ít hàm chứa ngữ nghĩa của văn bản. Cài đặt và phát triển kỹ thuật LSA cho phép so sánh độ tương đồng ngữ nghĩa của các văn bản. Về mặt chương trình kết quả thu được là hai phân hệ: Một phân hệ dành cho người sử dụng, một phân hệ dành cho người quản trị: Đối với phân hệ người dùng: Hệ thống hỗ trợ việc tìm kiếm tài liệu và gợi ý tài liệu dựa trên ngữ nghĩa vủa văn bản. Cho phép người dùng đăng ký thành viên nhắm nâng cao khả năng hỗ trợ của hệ thông đối với người dùng. Đối với phân hệ người quản trị: Hệ thống hỗ trợ việc cập nhập thông tin về các đối tượng trong hệ thống như thêm, sửa, xoá văn bản, thành viên, cấu hình hệ thống. Sau khi hoàn tất ứng dụng chúng em còn nắm thêm được các kiến thức về công nghệ: .Net, JavaScript, SQLserver, quan trọng hơn cả là chúng em nắm được khả năng phân tích ngử nghĩa của văn bản, từ đó tự động trích rút được những văn bản đồng nghĩa. 81
  81. 2. Hướng phát triển Vì thời gian phát triển đồ án không nhiều nên chúng em tập trung vào những vấn đề chính của đồ án đó là phân tích ngữ nghĩa của văn bản. Việc phát triển thuật toán so sánh độ tương đồng của văn bản và khai thác dữ liệu đã đạt được nhiều thành công. Dựa vào những thành quả đó chúng ta có thể mở ra những hướng mới nhằm tối ưu hoá thuật toán và nâng cao độ chính xác của kết quả. Đồng thời mở rộng nguồn dữ liệu nhờ trực tiếp tìm kiếm các dữ liệu trên mạng hay cải thiện tính năng tìm kiếm nhờ sử dụng các engine có sẵn. Dựa trên những khả năng phát triển đó, đồ án có thể hoàn thiện khi có thêm các tính năng sau: Thu thập dữ liệu trực tuyến Dữ liệu trực tuyến trên mạng là một tài nguyên gần như vô hạn. Nếu có một cơ chế cho phép khai thác dữ liệu trên mạng là đầu vào cho hệ thống thì các chức năng của hệ thống sẽ đạt hiệu quả cao và phong phú hơn. Hơn nữa, việc có một nguồn dữ liệu động như vậy thì công việc cập nhập dữ liệu sẽ không cần thiết, việc quả lý dữ liệu coi như tiến hành tự động. Tóm lại, hệ thống rất cần một module cho phép lấy dữ liệu trực tuyến. Đây chính là một hướng phát triển chủ chốt củ đồ án nhằm làm cho đồ án hoàn thiện hơn và có tính ứng dụng thực tế cao hơn. Thông tin người dùng Thông tin người dùng hiện tại ở các hệ thống website chỉ đơn thuần được tổ chức lưu trữ dưới dạng bảng dữ liệu. Thông tin người dùng chỉ đáp ứng vai trò xác thực trong hệ thống chưa góp phần thể hiện được nhu cầu của từng cá nhân. Việc nghiên cưa các thức tổ chức và lưu trữ thông tin người dùng hiệu quả sẽ đem lại một kết quả bất ngờ, giúp hệ thống có thể gợi ý tìm kiếm đối với từng các nhân người dùng. Đây cũng là một điển nhấn của thế hệ web mới, hướng tới cá nhân người dùng. Vậy cách thức tổ chức lưu trữ thông tin người dùng thế nào đó là một hướng mở ra của đồ án. Đồng thời việc thu thập thông tin người dùng thế nào cũng là một kỹ thuật cần phải nghiên cứu. Hiện tại chúng em chú ý tới hai cách thức thu thập thông tin người dùng. Một là thu thập tĩnh, dựa trên nhưng form đăng ký và feedback của người dùng. Hai là thu thập động, dựa trên các kỹ thuật trích lọc thông tin thông qua phân tích logfile. Các kỹ thuật phân tích logfile đã được phát triển và ứng dụng ngay từ khi internet ra đời. Tuy nhiên tuỳ vào mục đích của hệ thống việc phân tích logfile có thể sử dụng những kỹ thuật khác nhau. Ở đây chúng em muốn nhấn mạnh tới một khả năng mà phân tích logfile có thể đáp ứng đó chính là thu thập thông tin người dùng. Phát triển một module cho phép quản lý thông tin người dùng rất có ích cho một hệ thông tìm 82