You are on page 1of 89

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
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

2
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

3
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

4
MỤC LỤC
PHẦN 0: LỜI NÓI ĐẦU........................................................................ ....................10
PHẦN I: VẤN ĐỀ VÀ THỰC TRẠNG..................................... ...............................18
PHẦN II: CƠ SỞ LÝ THUYẾT............................................................... .................36
PHẦN III: GIẢI PHÁP KỸ THUẬT............................................ ............................52
PHẦN IV: XÂY DỰNG CHƯƠNG TRÌNH, CÀI ĐẶT CHẠY DEMO.................57

5
DANH MỤC HÌNH VÀ BẢNG
DANH MỤC HÌNH VÀ BẢNG............................................................ .......................6
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
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.....................16
Hình 3: Quy trình truy vấn.......................................................................... ............17
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............................. .19
Hình 6: Mô hình sơ đồ hệ thống gợi ý cho người dùng.................................. .........21
Hình 7: Sơ đồ tổng quát hệ thống.................................................................... .........23
Hình 8: Giao diện tìm kiếm của Amazone.com.............................. .........................24
Hình 9: Giao diện kết quả trả lại.................................................................. ............25
Hình 10: Giao diện kết quả tìm kiếm của Amazone.com................................. .......26
Hình 11: Sơ đồ cấu trúc từ của Nguyễn Tài Cẩn.............................................. .......29
Hình 12: Giao diện tìm kiếm của Google................................................. ................36
Hình 13: Giao diện tìm kiếm Yahoo.............................................. ...........................37
Hình 14 Giao diện tìm kiếm Ask Jeeves.................................................... ...............38
Hình 15: Giao diện tìm kiếm All the web..................................................... ............39
Table 1: : Tần suất xuất hiện độ dài từ tiếng Việt trên trang Vdict.com................44
Table 2: Tần số tài liệu của một số từ thông dụng trong tiếng Việt........................45
Table 3: Ví dụ về MI của n-gram......................................................................... .....46
Hình 16: Xây dựng ôtômát âm tiết ........................................................ .................48
Hình 17: Xây dựng ôtômát từ vựng ....................................................................... .49
.............................................................................................................................. .......49
Hình 18: Một tình huống nhập nhằng.................................................................. ....51
Hình 19: Giải thuật tách từ từ câu................................................ ...........................55
Table 4: Bảng một số ví dụ về cấu trúc lưu trữ từ điển...........................................55
Hình 20: Biểu đồ use-case hệ thống.............................................................. ...........57
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. .58
Lớp biên:............................................................................................... ......................58
6
Hình 23: Biểu đồ tiến trình chức năng tìm kiếm...................................... ...............58
Hình 24: Use-case quản lý tài liệu........................................... ................................59
Lớp biên:............................................................................................... ......................59
Hình 25: Biểu đồ cộng tác................................................................ .........................59
Hình 26: Biểu đồ tiến trình chức năng thêm mới tài liệu.......................................60
Hình 27: Biểu đồ tiến trình chức năng sửa tài liệu............................................. ....60
Hình 28:Biểu đồ tiến trình chức năng xóa tài liệu................................................. ..61
Hình 29: Biểu đồ cộng tác quản lý tài liệu........................................ .......................61
Hình 30: Use-Case quản lý tác giả.................................................................. ..........62
Hình 31: Biểu đồ tiến trình thêm mới tác giả................................... .......................62
Hình 32: Biểu đồ tiến trình sửa tác giả...................................... ..............................63
Chức năng xoá tác giả:............................................................................... ................63
Hình 33: Biểu đồ tiến trình xóa tác giả........................................ ............................64
Hình 34: Biểu đồ cộng tác quản lý tác giả........................................................... .....64
Hình 35: User-Case quản lý NXBLớp biên:.............................. ..............................64
Hình 36: Biểu đồ tiến trình thêm mới NXB............................................... ..............65
Hình 38: Biểu đồ tiến trình xóa thông tin NXB.......................................... .............66
Hình 39: Biểu đồ công tác quản lý NXB.................................... .............................66
Hình 40: Biểu đồ usercase quản lý thành viên...................................................... ...67
Lớp biên:............................................................................................... ......................67
Chức năng chỉnh sửa thông tin:................................................ ................................68
Hình 42: Biểu đồ tiến trình chỉnh sửa user.................................................. ...........68
Hình 43: Biểu đồ tiến trình xóa user................................................. .......................69
Hình 44: Biểu đồ cộng tác quản lý user................................... ................................69
Hình 45: Biểu đồ cộng tác quản lý user................................... ................................70
.Table 5: Bảng các thực thể chính..................................................................... ........71
Table 6: Bảng quan hệ các thực thể................................................................... ......72
Table 7: Danh sách các bảng chính.............................................. .............................75
Mô tả chi tiết bảng....................................................................................... ...............76
Table 8: Mô tả bảng tài liệu A01.................................................................... ............76
7
Table 9: Mô tả bảng Catalogue A02................................................ ..........................77
Table 10: Mô tả bảng tác giả A04.................................................. ............................77
Table 11: Mô tả bảng NXB A05....................................................... ..........................78
Table 12: Mô tả bảng User A06............................................................................... ...78
Table 13: Mô tả bảng subCatalogue A07................................ .................................79
Table 14: Mô tả bảng Child A08................................................................ ................79
Table 15: Mô tả bảng A11........................................................................................ ...80
Table 16: Mô tả bảng A12............................................................. .............................80

8
9
PHẦN 0: LỜI NÓI ĐẦU
11. 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:

1- 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.
2- 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.
3- 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.
4- Đá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.
02. 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ư:
5 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
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.
6 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.
7 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

8• Các sản phẩm tương tự được đối xử theo cách khác nhau
9• 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
10• 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.
11• Độ chính xác thấp
12
23. CÁCH GIẢI QUYẾT
3Sử 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:
13.1 Phân tách tài liệu thành các từ khóa (Filter)
2Cá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ừ dừng
11
(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)
3Kỹ 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.
4Tậ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.
5Sử 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
6
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
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
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
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
(từ khóa) và giải

Cập nhật Tập các tài liệu


CSDL (dữ liên quan tới 1
liệu tài liệu tài liệu

Hình 2: Cấu trúc giải thuật LSA

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

Câu truy vấn Tài liệu trả về Xử lý tác thao


tác người

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
Tập tài liệu liệu liên quan

16
Hình 3: Quy trình truy vấn

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
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…

18
Hình 5: Tìm kiếm thông tin – So sánh gợi ý của người và máy

19
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:

20
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.

21
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). <Theo
wikipedia>

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.

22
Hình 7: Sơ đồ tổng quát hệ thống
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

23
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


Đầ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ó.

24
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ự

25
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.

26
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.
27
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 (http://nomfoundation.org).
(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.

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 :
28
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 :
ao Có đầy đủ : T1T2, ví dụ : con chim ( này)
bo Dạng thiếu T1 : -T2, ví dụ : - chim (này)
co 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ố) :

ao Định tố “cái”, ví dụ : cái cậu học sinh ấy


bo Định tố chỉ số lượng, ví dụ : mấy cái cậu học sinh ấy
co Đị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:
ao Loại định tố chỉ gồm một từ, ví dụ : một quyển sách quý
bo 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 :
1+ Danh từ, ví dụ : vườn cau
2 + Tính từ, ví dụ : ghế dài, một cái ghể rất tốt
3 + Động từ, ví dụ : bàn học
4+ Từ chỉ trỏ, ví dụ : sáng nay, người ấy
5+ Từ chỉ vị trí, ví dụ : nhà trong, cổng trước
6+ 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 :

29
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
1- Cô y tá
2- 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) :
ao 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…
bo 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…
coTừ 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):


aoTừ tổ N E, ví dụ : Ngoài nhà ngoài có cái giường mình nằm
boTừ 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...
ao 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….
boTừ tố danh từ + tính từ, ví dụ: quả táo vàng, cái áo trắng…
coTừ 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.

Phần phụ trước Phần phụ trung tâm Phần phụ sau
-3 -2 -1 0 1 2

30
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.

31
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.
32
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ề

33
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.

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

34
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 đó.

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.

35
PHẦN II: CƠ SỞ LÝ THUYẾT
1. CÁC BỘ MÁY TÌM KIẾM <SEARCH ENGINE>
1.1Mộ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. http://google.com

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

36
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.

2. http://yahoo.com

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.

37
3. Ask Jeeves http://www.ask.com

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.

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 http://www.alltheweb.com

38
Hình 15: Giao diện tìm kiếm All the web

39
2.1 Chiến lược tìm kiếm
2.1.1Cô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
(http://www.cyc.com). 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ạ.

40
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.2Chiế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.
41
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.2Nguyê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.

42
2. XỬ LÝ VĂN BẢN TIẾNG VIỆT
2.1Từ 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 http://Vdict.com thì độ dài của một từ tiếng Việt được thể
hiệnt trong bảng:

Tần
Độ dài của từ Tỉ lệ %
số
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

43
Table 1: : Tần suất xuất hiện độ dài từ tiếng Việt trên trang Vdict.com

44
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
Việt đã được lập chỉ mục, do đó, thông qua thực nghiệm 1 giá trị df của các từ thông
dụng, chúng tôi chọn giá trị MAX là 109.
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).

45
Chuỗi Wf MI
khoa học tự nhiên 39200 0
.92
khoa học tự 4180
0
học tự nhiên 39900
học khoa học tự 14900 0
.27
2860
học khoa học
0
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
00100
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
tuyến chưa 72994 từ và ngữ2
46
Thống kê theo độ dài của từ trong từ điển http://dict.vietfun.com
Độ 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.
47
2.2Thuậ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.

11. 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
22. 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.
33. 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

48
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:

11. Lập trạng thái khởi đầu ;


22. 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à
1a.
2b. Vòng lặp trong khi ()
3i. Lấy ra ký tự ;
4ii. 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ế:
51.
62.
7iii. Nếu không có cung ( nào như thế thì thoát khỏi vòng lặp b.
8c. Với từ i đến
9i. Tạo mới trạng thái q, ghi nhận là trạng thái không kết;
10ii. Thêm cung chuyển trên đó ghi ký tự ;
11iii.
12d. 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ố n1, n2, n3 thì trên các
cung chuyển tương ứng ta ghi các số n1, n2, n3 (Hình 2).

Hình 17: Xây dựng ôtômát từ vựng

49
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:

11. Lập trạng thái khởi đầu ;


22. 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à ;
33. 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à
1a.
2b. Vòng lặp trong khi ( )
3i. Lấy ra số ;
4ii. Tìm trong các cung chuyển từ trạng thái cung trên đó ghi số . Nếu có
cung như thế
51.
62.
7iii. Nếu không có cung ( nào như thế thì thoát khỏi vòng lặp b.
8c. Với từ i đến
9i. Tạo mới trạng thái q, ghi nhận là trạng thái không kết;
10ii. Thêm cung chuyển ( trên đó ghi số ;
11iii.
12d. 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 s0, s1, ..., sn. Ta xây dựng một đồ
thị có n+2 đỉnh v0, v1, ..., vn, vn+1, sắp thứ tự trên một đường thẳng từ trái sang phải;
trong đó, từ đỉnh vi đến đỉnh vj có cung (i < j) nếu các âm tiết si, si+1, ..., sj-1 theo thứ tự
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 v0 đến đỉnh cuối vn+1. Trong thực tế, cách phân tích câu đúng
đắn nhất thường ứng với đường đi qua ít cung nhất trên đồ thị.
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
50
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.

51
PHẦN III: GIẢI PHÁP KỸ THUẬT
1. GIẢI PHÁP ĐỌC ĐỊNH DẠNG TÀI LIỆU
1.1Giao 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.2Chươ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.

52
 Gọi phương thức GetProcAddress để lấy một con trở tới hàm
DllGetClassObject.

 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
53
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
để 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.1Cá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.2Giả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
Dictionar
Câu được cắt

No

No Cắt tiếng bên trái


Còn 1 Giữ các từ đã cắt
từ

Yes
Câu bên trái

Thêm từ mới vào


mảng từ tách 54
Stack
Hình 19: Giải thuật tách từ từ câu
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ể.

55
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…

56
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.1Mô 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


57
Đặ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 uả
tq

PageLoad()
+Tìm kiếm() : void 1

Tìm kiếm()
+Tìm kiếm nâng cao() : void
+Tài liệu tương đồng nội dung() : void Kế
*

Actor1
Lấy tài liệu()

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

58
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()

Kết quả
Xoá()

Admin QL_Tài liệu Kết quả


Thêm();sửa();Xoá()

Xoá W_Tài liệu


()
kết quả T Sửa()
h êm
()

TT_Tài liệu

Hình 25: Biểu đồ cộng tác


59
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

60
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ả


Thêm();sửa();Xoá()

Xoá W_Tài liệu


()
kết quả T Sửa()
h êm
()

TT_Tài liệu

Hình 29: Biểu đồ cộng tác quản lý tài liệu

61
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
Admin -username TT_Tác giả
+Thêm() : int
-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ả

62
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ả

63
Hình 33: Biểu đồ tiến trình xóa tác giả
Biểu đồ cộng tác:
/ Kiểm tra(user/pass)

Đăng nhập(user/pass)

Dan hêm()
W_Admin

Pag ch TL()
h sá
T

eLoa
Sửa
Xoá
Kết quả

d()
()
()
Admin
Kết quả
W_Tác giả
QL_Tác giả
Thêm();sửa();Xoá()

Xoá()
Sửa()
kết quả
T hêm()

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
64
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ả

65
Hình 37: Biểu đồ tiến trình chỉnh sửa thông tin NXB

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)
Dan hêm()

W_Admin
Pag ch TL(
h sá
T

eLo
Sửa
Xoá

Kết quả
ad()
()
()

Admin
Kết quả
W_NXB
QL_NXB

Xoá()
Th

kết quả Sửa()


êm

T hêm()
();s
ửa
();
Xo
á()

TT_NXB

Hình 39: Biểu đồ công tác quản lý NXB


66
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
Admin -username : string
+Thông tin : string +Xoá() : int
-pass : string
+Thêm() : int
+Đăng nhập() : bool +Chi tiết user() : void
+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ả

67
Hình 41: Biểu đồ tiến trình thêm mới user

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ả

68
Hình 43: Biểu đồ tiến trình xóa user
Biểu đồ cộng tác:
/ Kiểm tra(user/pass)

Đăng nhập(user/pass)

W_Admin ()
êm ) QL_User
T h ửa( )

Pag á()
S oá(

Thêm();sửa();Xoá()
Xo
eLoa
Kết quả X
Kết quả
kết quả

d()
Admin

W_User

TT_User
Kết quả

Thêm()
Sửa()
Đă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

69
1.2Về 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
70
# 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

71
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 ,
[A01_LinkDown] [Varchar] NULL ,
72
# Tên Mô tả Lệnh SQL
[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 ,
[IsActive] [bit] NULL

73
# Tên Mô tả Lệnh SQL
) 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
và A04.
) ON [PRIMARY]

74
# Tên Mô tả Lệnh SQL
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

75
Mô tả chi tiết bảng
Bảng A01

# Tên trường Kiểu dữ liệu Cho phép Giá Khoá K Ghi chú
null trị chính hoá
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

76
A02

# Tên trường Kiểu dữ liệu Cho phép Giá trị K K Ghi


null mặc định hoá hoá 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ị K K Ghi


phép mặc hoá hoá 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

Bảng A05
77
# Tên trường Kiểu dữ liệu Cho phép Giá K K Ghi
null trị hoá hoá 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á K Ghi


null trị chính hoá 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


Bảng A07

78
# Tên trường Kiểu dữ liệu Cho phép Giá trị Khoá K Ghi
null mặc chính hoá 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á K K Ghi


null trị hoá hoá 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

Bảng A11

79
# Tên trường Kiểu dữ liệu Cho phép Giá trị K K Ghi
null mặc định hoá hoá 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ị K K Ghi


null mặc định hoá hoá 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

80
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.2Modul tách từ
Modul này gồm 4 lớp chính:

1. Lớp clsDictionary:

 public static void Init(string path)

Lớp khởi tạo từ điển bằng phương thức Init với path là đường dẫn tuyệt đối file từ
điển. Cũng chính trong phương thức này, ta định nghĩa cách lưu trữ từ điển (như đã
trình bày ở trên) để tăng tốc độ cho các giải thuật tìm kiếm. Trong lớp này chú ý các
phương thức sau:

Đọc file từ điển theo bảng mã Unicode:


StreamReader sr = new StreamReader(path, System.Text.Encoding.Unicode);

81
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

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();
82
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.

83
2.3Modul LSA
Modul này được thiết kế ở lớp Util. Đầu vào của modul là tập tài liệu và tập các từ
khóa, đầu ra là cập nhật cơ sở dữ liệu các thông tin về độ tương đồng giữa các tài liệu.

Thông tin chi tiết xin tham khảo bên đồ án của Mr Cường.

3. CÀI ĐẶT

Chương trình được thiết kế với giao diện website. Ta có thể cài đặt CSDL, với file
backup được cung cấp, mã nguồn đưa vào IIS. Thư mục website trỏ tới thư mục SS01.

84
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.

85
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.

86
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

87
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
kiếm, gợi ý. Hệ thông sẽ mang tính hướng người dùng hơn bởi những kết quả của hệ
thống được lọc dựa trên thông tin quan tâm của người dùng.

Sử dụng search engine

Ngày nay, các kỹ thuật tìm kiếm không chỉ đạt độ chính xác cao mà còn đạt tốc độ
cao. Tốc độ đó chính là tiêu chuẩn cạnh tranh cho các hệ thống tìm kiềm. Google đã
nổi lên như là một site tìm kiếm toàn cầu với độ chính xác cao và nhanh. Không những
thế Google còn cho phép các hệ thống khác sử dụng thành quả của nó đó chính là
module search engine. Module này cho phép các hệ thống có thể lấy kết quả tìm kiếm
một cách nhanh chóng dựa trên những tài nguyên mà máy chủ google cung cấp. Nếu hệ
thống có thể sử dụng module này thì hiệu năng tìm kiếm sẽ được nâng cao hơn. Đây
cũng chính là một hướng phát triển của hệ thống trong tương lai.

88
TÀI LIỆU THAM KHẢO
[1] Cải tiến giải thuật CYK cho bài toán phân tích cú pháp tiếng Việt -Đinh
ThịPhương Thu, Huỳnh Quyết Thắng, Hoàng Vĩnh Sơn
[2] Gán nhãn từ loại cho tiếng Việt dựa trên văn phong - Nguyễn Quang Châu, Phan
Thị Tươi, Cao Hoàng Trụ
[3] Kết hợp xử lý ngôn ngữ tự nhiên và mạng Kohonen để nâng cao khả năng gom
cụm văn bản tiếng Việt -Đỗ Phúc, Mai Xuân Hùng, Nguyễn Thị Kim Phụng
[4] A case study of the probabilistic tagger QTAG for Tagging Vietnamese Texts
Nguyen Thi Minh Huyen,Vu Xuan Luong, Le Hong Phuong
[5] Dinh Dien, Từ tiếng Việt, Vietnam National University, HCMC, Vietnam, 2000.
[6] Dinh Dien, Hoang Kiem, Nguyen Van Toan, Vietnamese Word Segmentation, The
Sixth Natural Language Processing Pacific Rim Symposium, Tokyo, Japan 2001,
pp749-756.
[7] Automata and Formal Language. An Introduction – Dean Kelley – Prentice
Hall, Englewood Cliffs, New Jersey 07632.
[8] Compilers : Principles, Technique and Tools - Alfred V.Aho, Jeffrey D.Ullman -
Addison - Wesley Publishing Company, 1986.
[9] Compiler Design – Reinhard Wilhelm, Dieter Maurer - Addison - Wesley
Publishing Company, 1996.
[10] Design of Compilers : Techniques of Programming Language Translation
- Karen A. Lemone - CRC Press, Inc, 1992.
[11] Modern Compiler Implementation in C - Andrew W. Appel - Cambridge
University Press, 1997.
[12] Hoàng Văn Hành.1997. Ngữ nghĩa học – Các khuynh hướng và phương pháp
phân tích ngữ nghĩa. Hà nội.
[13] PTS. Vương Tất Đạt . Logich hình thức. Trường Đại học Sư Phạm Hà Nội 1
[14] Đặng Thị Hưởng. Semantics, TP.Hồ Chí Minh 1997 (Tài liệu lưu hành nội bộ)
[15]. Trương Gia Vinh. Những bài giảng Cơ sở Ngôn ngữ học. BXB Đại Học mở
Bán công TP.HCM.(Tài liệu lưu hành nội bộ)
[16]. Nguyễn Thiện Giáp (chủ biên) Dẫn luận Ngôn ngữ học. NXB Giáo dục. 2000
[17]. Trần Văn Cơ . Ngôn ngữ. Đại học sư phạm TP.Hồ Chí Minh.1986.
[18]. Roderick A. Jacobs. English syntax. A Grammar for English language
professionals. Oxford American English.
[19]. A.S. Hornby. Guide to patterns and usage in English. Second edition.

89

You might also like