1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thuật toán K-Means và ứng dụng gom cụm tài liệu văn bản Tiếng Việt

16 2,7K 26

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 1,08 MB

Nội dung

Trường Đại học Công nghệ thông tinChương trình đào tạo thạc sĩ CNTT qua mạng Lớp Cao học khóa 6 Bộ môn: Khai phá dữ liệu Bài tiểu luận: Thuật toán K-Means và ứng dụng gom cụm tài liệu vă

Trang 1

Trường Đại học Công nghệ thông tin

Chương trình đào tạo thạc sĩ CNTT qua mạng

Lớp Cao học khóa 6

Bộ môn: Khai phá dữ liệu

Bài tiểu luận:

Thuật toán K-Means và ứng dụng gom cụm

tài liệu văn bản Tiếng Việt.

Giáo viên hướng dẫn: PGS.TS Đỗ Phúc

Học viên: Lê Hoài Nam

MSHV: CH1101106

Tháng 11 / 2012

Trang 2

M c l c ục lục ục lục

I Giới thiệu chung 3

1 Bài toán gom cụm 3

2 Thuật toán K-Means 4

3 Ví dụ minh họa thuật toán K-Mean: 5

II Chương trình gom cụm văn bản tiếng Việt 9

1 Đặt bài toán 9

2 Cài đặt chương trình bằng thuật toán K-Means 9

a Từ điển key words và stop words 9

b Vector hóa văn bản 10

c Cài đặt thuật toán K-Means 10

3 Ứng dụng demo 12

4 Đánh giá ứng dụng demo 15

III Kết luận và hướng phát triển 15

1 Kết luận 15

2 Hướng phát triển 15

IV Tài liệu tham khảo 16

Trang 3

I Giới thiệu chung

1 Bài toán gom cụm

Phân cụm là kỹ thuật rất quan trọng trong khai phá dữ liệu, nó thuộc lớp

các phương pháp Unsupervised Learning trong Machine Learning Có rất

nhiều định nghĩa khác nhau về kỹ thuật này, nhưng về bản chất ta có thể hiểu phân cụm là các qui trình tìm cách nhóm các đối tượng đã cho vào các cụm (clusters), sao cho các đối tượng trong cùng 1 cụm tương tự (similar) nhau và các đối tượng khác cụm thì không tương tự (Dissimilar) nhau Mục đích của phân cụm là tìm ra bản chất bên trong các nhóm của dữ liệu Các thuật toán phân cụm (Clustering Algorithms) đều sinh ra các cụm (clusters) Tuy nhiên, không có tiêu chí nào là được xem là tốt nhất để đánh hiệu của của phân tích phân cụm, điều này phụ thuộc vào mục đích của phân cụm như: data reduction, “natural clusters”, “useful” clusters, outlier

detection

Kỹ thuật phân cụm có thể áp dụng trong rất nhiều lĩnh vực như:

- Marketing: Xác định các nhóm khách hàng (khách hàng tiềm năng,

khách hàng giá trị, phân loại và dự đoán hành vi khách hàng,…) sử dụng sản phẩm hay dịch vụ của công ty để giúp công ty có chiến lược kinh doanh hiệu quả hơn;

- Biology: Phận nhóm động vật và thực vật dựa vào các thuộc tính của

chúng;

- Libraries: Theo dõi độc giả, sách, dự đoán nhu cầu của độc giả…;

- Insurance, Finance: Phân nhóm các đối tượng sử dụng bảo hiểm và

các dịch vụ tài chính, dự đoán xu hướng (trend) của khách hàng, phát hiện gian lận tài chính (identifying frauds);

Trang 4

- WWW: Phân loại tài liệu (document classification); phân loại người

dùng web (clustering weblog);…

2 Thuật toán K-Means

K-Means là thuật toán rất quan trọng và được sử dụng phổ biến trong

kỹ thuật phân cụm Tư tưởng chính của thuật toán K-Means là tìm cách phân nhóm các đối tượng (objects) đã cho vào K cụm (K là số các cụm được xác đinh trước, K nguyên dương) sao cho tổng bình phương khoảng cách giữa các đối tượng đến tâm nhóm (centroid ) là nhỏ nhất

Thuật toán K-Means được mô tả như sau

Thuật toán K-Means thực hiện qua các bước chính sau:

- Bước 1. Chọn ngẫu nhiên K tâm (centroid) cho K cụm (cluster) Mỗi cụm được đại diện bằng các tâm của cụm

- Bước 2. Tính khoảng cách giữa các đối tượng (objects) đến K tâm (thường dùng khoảng cách Euclidean)

- Bước 3. Nhóm các đối tượng vào nhóm gần nhất

Trang 5

- Bước 4. Xác định lại tâm mới cho các nhóm

- Bước 5. Thực hiện lại bước 2 cho đến khi không có sự thay đổi nhóm nào của các đối tượng

3 Ví dụ minh họa thuật toán K-Mean:

Giả sử ta có 4 loại thuốc A,B,C,D, mỗi loại thuộc được biểu diễn bởi

2 đặc trưng X và Y như sau Mục đích của ta là nhóm các thuốc đã cho vào

2 nhóm (K=2) dựa vào các đặc trưng của chúng

Object Feature 1 (X): weight index Feature 2 (Y): pH

- Bước 1 Khởi tạo tâm (centroid) cho 2 nhóm Giả sử ta chọn A là tâm

của nhóm thứ nhất (tọa độ tâm nhóm thứ nhất c1(1,1)) và B là tâm của nhóm thứ 2 (tạo độ tâm nhóm thứ hai c2 (2,1))

Bước 2 Tính khoảng cách từ các đối tượng đến tâm của các nhóm

(Khoảng cách Euclidean)

Trang 6

Mỗi cột trong ma trận khoảng cách (D) là một đối tượng (cột thứ nhất tương ứng với đối tượng A, cột thứ 2 tương ứng với đối tượng B,…) Hàng thứ nhất trong ma trận khoảng cách biểu diễn khoảng cách giữa các đối tượng đến tâm của nhóm thứ nhất (c1) và hàng thứ 2 trong ma trận khoảng cách biểu diễn khoảng cách của các đối tượng đến tâm của nhóm thứ 2 (c2)

Ví dụ, khoảng cách từ loại thuốc C=(4,3) đến tâm c1(1,1) là 3.61 và đến tâm c2(2,1) là 2.83 được tính như sau:

Bước 3 Nhóm các đối tượng vào nhóm gần nhất

Ta thấy rằng nhóm 1 sau vòng lặp thứ nhất gồm có 1 đối tượng A và nhóm

2 gồm các đối tượng còn lại B,C,D

Bước 4 Tính lại tọa độ các tâm cho các nhóm mới dựa vào tọa độ của các

đối tượng trong nhóm Nhóm 1 chỉ có 1 đối tượng A nên tâm nhóm 1 vẫn không đổi, c1(1,1) Tâm nhóm 2 được tính như sau:

Trang 7

Bước 5 Tính lại khoảng cách từ các đối tượng đến tâm mới

Bước 6 Nhóm các đối tượng vào nhóm

Bước 7 Tính lại tâm cho nhóm mới

Trang 8

Bước 8 Tính lại khoảng cách từ các đối tượng đến tâm mới

Bước 9 Nhóm các đối tượng vào nhóm

Ta thấy G2 = G1 (Không có sự thay đổi nhóm nào của các đối tượng) nên thuật toán dừng và kết quả phân nhóm như sau:

Trang 9

Object Feature 1 (X): weight index Feature 2 (Y): pH Group

II Chương trình gom cụm văn bản tiếng Việt

1 Đặt bài toán

Gom cụm (clustering) là 1 bài toán phổ biến trong lĩnh vực khai phá

dữ liệu (data mining), mục tiêu của gom cụm là phân loại 1 tập dữ liệu thành nhiều nhóm và mỗi nhóm sẽ có 1 đặc trưng khác nhau Tương tự như vậy, văn bản cũng là 1 đối tượng dữ liệu và nhu cầu gom cụm đối tượng này rất phổ biến trong nhiều lĩnh vực như: phân loại tin tức tự động, phân loại email

tự động, phân loại tài liệu trong thư viện v.v

Để góp phần nghiên cứu giải quyết vấn đề trên, bài tiểu luân này sẽ

dự trên thuật toán gom cụm K-means để cài đặt ứng dụng tự động gom cụm tài liệu được viết bằng ngôn ngữ Tiếng Việt, dữ liệu cần xử lý là hàm trăm bài báo, blog được thu thập từ nhiều lĩnh vực như công nghệ, xã hội, văn hóa, giáo dục v.v

2 Cài đặt chương trình bằng thuật toán K-Means

a Từ điển key words và stop words

Key words là tập các danh từ có ý nghĩ trong ngôn ngữ tiếng Việt,

thuật toán sẽ dựa vào tập từ khóa này để biểu diễn 1 tài liệu văn bản dưới dạng 1 vector nhiều chiều, thể hiện những đặc trưng của văn bản đó

Stop words là những từ chức năng, nó không mang nội dung mà chủ

yếu chứa thông tin cú pháp trong câu

Trang 10

b Vector hóa văn bản.

Mỗi văn bản tài liệu sẽ được biểu diễn dưới dạng vector n chiều Mỗi

chiều là 1 từ khóa (term) và độ lớn là số lần xuất hiện từ khóa đó trong văn

bản.

Trong lập trình, mỗi văn bản được biểu diễn thành 1 đối tượng gọi là DocVector, có các thuộc tính như sau:

Dictionary < string , int > _vector;

public int DocID { get ; set ; }

public int ClusterID { get ; set ; }

c Cài đặt thuật toán K-Means

Chú ý: Thuật toán K-Means được trình bày bên dưới sử dụng ngôn ngữ C#

Định nghĩa và khởi tạo các biến:

HashSet < string > _stopwords; //danh sách các stopwords

HashSet < string > _terms; //danh sách các từ khóa keywords

List < string > _allFiles; //danh sách tập tin văn ba +n cầ- n phầ- n loại

Dictionary < int , DocVector > _allVector; //danh sách các vector văn ba +n

List < DocsCluster > _clustersList; // danh sách các

clusters

Hàm xây dựng các DocVector từ nội dung của tập tin văn bản

string filename = _allFiles[docID]; //lầ4 y tên tập tin văn ba +n

DocVector docvector = new DocVector ();

docvector.DocID = docID;

StringBuilder sbContent = new

StringBuilder ( File ReadAllText(filename).ToLower());

//xóa các ký tự đặc biệt, không pha +i chữ hoặc sô4

if (sbContent[i] != ' ' && !

{

sbContent.Remove(i, 1);

i ;

Trang 11

}

else if (sbContent[i] == '\n' )

//Lầ4 y danh sách các từ có trong văn ba +n

List < string > words = sbContent.ToString().Split( '

//tách từ, vector hóa văn ba +ng dự vào stopwords và term

while (words.Count > 0)

{

string term = "" ;

if (_stopwords.Contains(words[0]))

{

words.RemoveAt(0);

continue ;

}

if (words.Count > 1 && _stopwords.Contains(words[0] + " " + words[1]))

{

words.RemoveRange(0, 2);

continue ;

}

max = words.Count;

{

term = term.Trim();

{

words.RemoveRange(0, i);

}

words.RemoveAt(0);

}

docvector[term]++;

}

return docvector;

Hàm gom cụm sử dụng thuật toán K-Means

public List < string >[] BuiltKCluster( int K)

{

//Tạo k cluster ngầT u nhiên

Random rd = new Random ();

Trang 12

{

_allVector[nextrd].ClusterID = i;

cluster.Add(_allVector[nextrd]);

cluster.ClusterID = i;

_clustersList.Add(cluster);

}

{

{

listCentroid.Add(c.CentroidVector);

c.Clear();

}

{

count++;

v.ClusterID = id;

_clustersList[id].Add(v);

}

//điê- u kiện dừng là 99% sô4 vector không thay đô+ i cụm

}

{

arrOfClusters[index].Add(_allFiles[docID]);

index++;

}

}

3 Ứng dụng demo

Tập dữ liệu dùng cho chương trình demo gồm có:

Trang 13

- 567 stopword bằng Tiếng Việt

- 28.861 danh từ tiếng Việt phổ biến (terms)

- Bộ văn bản test chia làm 5 nhóm:

o Nhóm 1: 28 tập tin

o Nhóm 2: 313 tập tin

o Nhóm 3: 100 tập tin

o Nhóm 4: 80 tập tin

o Nhóm 5: 500 tập tin

Một vài hình ảnh kết quả sau khi gom cụm

- 500 tập tin và 2 cụm mất thời gian 73.63 giây

Trang 14

- 28 tập tin chia thành 6 cụm mất thời gian 0.73 giây

- 100 tập tin chia thành 4 cụm trong thời gian 6.96 giây

Trang 15

4 Đánh giá ứng dụng demo

Ứng dụng demo đã minh họa thành công thuật toán K-means trong bài toán gom cụm văn bản Tiếng Việt Với số lượng tài liệu dưới 500 và số cluster dưới 10 cho tốt độ thực thi khá tốt

Do giới hạn về tập dữ liệu test, tập keyword và stopword chưa được chuẩn hóa nên chương trình demo chỉ cho kết quả gom cụm ở mức tương đối chấp nhận được

Giao diện đồ họa trực quan, sử dụng công nghệ WPF của Microsoft viết bằng ngôn ngữ C#, giúp người sử dụng nhanh chóng nhận được kết quả gom cụm dưới dạng đồ thị cùng với dữ liệu thông kê bên cạnh

III Kết luận và hướng phát triển

1 Kết luận

Thuật toán K-Means có ưu điểm là đơn giản, dễ hiểu và cài đặt Tuy nhiên, một số hạn chế của K-Means là hiệu quả của thuật toán phụ thuộc vào việc chọn số nhóm K (phải xác định trước) và chi phí cho thực hiện vòng lặp tính toán khoảng cách lớn khi số cụm K và dữ liệu phân cụm lớn

Ứng dụng demo đã thể hiện thành công việc gom cụm tài liệu văn bản tiếng Việt bằng thuật toán K-means dựa trên tập key words và stop word Với tập dữ liệu test dưới 500 tập tin, cho tốt độ thực thi và kết quả chấp nhận được

Tuy nhiên, thuật toán K-Means cho thời gian thực thi khá lâu khi số tài liệu lên tới vài nghìn và kết quả gom cụm cũng chưa thật sự chính xác

2 Hướng phát triển

Cập nhật và chuẩn hóa tập keywords và stopword cho ngôn ngữ tiếng Việt để có kết quả gom cụm chính xác hơn

Trang 16

Nghiên cứu phát triển và áp dụng thuật toán trên vào các nhu cầu thực

tế như phân loại Email, phân loại tin tức và phân loại văn bản tài liệu trong thư viện

Nghiên cứu cải tiến và tối ưu thuật toán K-means cho trường hợp phân loại văn bản để có tốc độ nhanh hơn và kết quả tốt hơn

IV Tài liệu tham khảo

[1] http://en.wikipedia.org/wiki/K-means_clustering

[2] Giáo trình Data Mining – Đại học Công nghệ thông tin – Đại học Quốc gia TP Hồ Chi Minh

Ngày đăng: 10/04/2015, 00:25

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w