Khái quát về các hệ thống gợi ý
1.1.1 Giới thiệu bài toán gợi ý
Công nghệ thông tin ngày càng phát triển, khả năng lưu trữ thông tin khổng lồ đã tạo ra những bước ngoặt lớn trong cuộc sống con người Nhưng ngược lại, nhờ khả năng lưu trữ được một lượng thông tin khổng lồ này nên quá trình tìm kiếm thông tin đáp ứng nhu cầu cho người dùng thường gặp rất nhiều khó khăn Để giải quyết vấn đề này các hệ thống thu thập và lọc thông tin ra đời nhằm giảm đi thời gian tìm kiếm và cung cấp thông tin chất lượng cao cho người sử dụng [1] Và hệ thống gợi ý thông tin là thành quả của việc ứng dụng công nghệ thông tin trong việc khai phá dữ liệu, phát hiện tri thức, đưa đến cho người dùng những thông tin hiệu quả trong thời gian nhanh chóng, giảm thiểu thời gian và công sức cho người dùng.
Hiện nay cũng có một số các hệ gợi ý thông tin nổi tiếng thuộc các thể loại khác nhau như phim ảnh, âm nhạc, sách báo, thậm chí có cả các hệ thống gợi ý các nhà hàng hay điểm du lịch.
Việc gợi ý đối với các thông tin sử dụng tiếng nước ngoài cũng đã phổ biến Tuy nhiên, với ngôn ngữ là Tiếng Việt thì các hệ thống gợi ý còn hạn chế Các hệ thống đó chỉ mới bắt đầu được phát triển bởi các hãng nổi tiếng, có thể kể đến như:
- Tiện ích “bài viết liên quan” của Facebook (https://www.facebook.com/)
- Google tin tức (https://news.google.com.vn)
Có rất nhiều cách để dự đoán, ước lượng hạng/điểm cho các sản phẩm,thông tin như sử dụng học máy, lí thuyết xấp xỉ, các thuật toán dựa trên kinh nghiệm Một số hướng tiếp cận để giải quyết bài toán gợi ý có thể kể đến như:
- Dựa trên nội dung (content-based): người dùng được gợi ý những sản phẩm tương tự như các sản phẩm từng được họ đánh giá cao.
- Cộng tác (collaborative): người dùng được gợi ý những sản phẩm mà những người cùng sở thích với họ đánh giá cao.
- Lai ghép (hybrid): kết hợp cả hai phương pháp trên.[2]
Gợi ý dựa trên nội dung
Hệ thống đưa ra gợi ý dựa trên việc phỏng đoán rằng một người có thể thích các sản phẩm có nhiều đặc trưng tương tự với các sản phẩm mà họ đã từng ưa thích [2] Các sản phẩm ở đây có thể là hàng hóa trong các website thương mại điện tử, cũng có thể là nội dung thông tin dưới dạng văn bản Ví dụ như: các bài báo, tin tức điện tử.
Việc ưa thích của người dùng có thể căn cứ trên đánh giá của người dùng về sản phẩm đó, thông tin đó hoặc cũng có thể căn cứ dựa trên việc lựa chọn sử dụng, tiếp nhận thông tin của người dùng Hệ thống gợi ý dựa trên nội dung đưa ra gợi ý trên nguyên tắc: nếu người dùng có lựa chọn, yêu thích với sản phẩm này, thông tin này thì cũng sẽ có thiên hướng yêu thích và tiếp cận với các thông tin có mối tương đồng về nội dung thông tin.
Gợi ý dựa vào lọc cộng tác
Ban đầu cách triển khai đơn giản nhất của hướng tiếp cận này là gợi ý những sản phẩm của một người dùng khác có chung sở thích với người dùng đang xét đến Sự tương đồng sở thích của hai người dùng được tính toán dựa trên tương đồng trong lịch sử đánh giá trước đây Đây là lý do mà lọc cộng tác còn được gọi dưới cái tên khác là “tương quan người – người” Lọc cộng tác được coi là kĩ thuật triển khai phổ biến nhất và áp dụng rộng rãi nhất trong hệ thống gợi ý.
Những hệ thống gợi ý này dựa trên sự kết hợp của hai hay nhiều kỹ thuật kể trên Mục đích việc này là khắc phục những điểm yếu cố hữu mà kỹ thuật đang có Ví dụ lọc cộng tác thường gặp vấn đề với các sản phẩm mới vì chúng chưa có dữ liệu về đánh giá Tuy nhiên điều này lại không giới hạn với các hệ thống dựa trên nội dung.
Hệ thống gợi ý thông tin của đề tài
1.2.1 Kỹ thuật gợi ý của đề tài. Đề tài triển khai hệ thống gợi ý thông tin dựa trên nội dung thông qua việc khai phá dữ liệu web
Dựa trên các dữ liệu thu nhận được từ web, kết hợp với việc xử lý ngôn ngữ tự nhiên để thu nhận được tri thức.
Trên cơ sở tri thức thu được đó, sử dụng thuật toán phân lớp học máy gán nhãn cho các thông tin là các tin tức, báo điện tử thuộc lớp này hay lớp khác Từ đó, đưa ra gợi ý về thông tin cho người dùng là các thông tin có điểm tương đồng trong cùng một phân lớp.
1.2.2 Thách thức của gợi ý thông tin web Tiếng Việt
Gợi ý tin tức là một lĩnh vực giàu tiềm năng bởi số lượng các sản phẩm gợi ý, số lượng người dùng và số lượt sử dụng cao hơn nhiều so với các đối tượng gợi ý khác Tuy nhiên, đi kèm theo đó là các thử thách về các đặc trưng riêng có của miền đối tượng tin tức cũng như các đặc trưng chung của người sử dụng gợi ý.
Tin tức là một đối tượng gợi ý đặc biệt, các đặc điểm sau của tin tức giúp đưa ra các giải pháp hữu hiệu hơn trong xây dựng giải pháp gợi ý:
- Tính không đồng nhất giá trị: Giá trị của tin tức chỉ có thể được xác định bằng cách kết hợp các yếu tố: nội dung thông tin của bản tin, nguồn tin, thời điểm xuất bản, nhà xuất bản, tác giả, người nhận tin,
- Tính dễ sinh ra: một số lượng lớn tin tức có thể nảy sinh xung quanh một sự kiện, hiện tượng
- Tính dễ tàn lụi: hiện tượng tin tức đánh mất giá trị khi vấn đề nó đề cập không còn tính thời sự
Khi xem xét đến yếu tố phù hợp giữa đối tượng gợi ý và mối quan tâm người dùng, các đặc trưng về mối quan tâm của người dùng cũng cần được xem xét.
- Tính đa quan tâm: Tại một thời điểm, người dùng có thể có nhiều mối quan tâm khác nhau Ví dụ: họ có thể quan tâm đến cả các thông tin về thể thao và chính trị
- Tính thay mới: Mối quan tâm của họ có thể phân chia thành 3 loại chính: các mối quan tâm dài hạn, các mối quan tâm trung hạn và các mối quan tâm ngắn hạn Tính thay mới có thể diễn ra ở cả ba loại mối quan tâm này, tuy nhiên tốc độ thay mới của các mối quan ngắn hạn là nhanh nhất và nó cũng có ưu thế hơn khi dùng để gợi ý các tin tức, vốn liên tục được sinh ra
Tổng quan về phân lớp
Là quá trình phân lớp một đối tượng dữ liệu vào một hay nhiều lớp cho trước nhờ một mô hình phân lớp mà mô hình này được xây dựng dựa trên một tập hợp các đối tượng dữ liệu đã được gán nhãn từ trước gọi là tập dữ liệu học (tập huấn luyện) Quá trình phân lớp còn được gọi là quá trình gán nhãn cho các đối tượng dữ liệu.
Như vậy, nhiệm vụ của bài toán phân lớp dữ liệu là cần xây dựng mô hình (bộ) phân lớp để khi có một dữ liệu mới vào thì mô hình phân lớp sẽ cho biết dữ liệu đó thuộc lớp nào.
Có nhiều bài toán phân lớp dữ liệu, như phân lớp nhị phân, phân lớp đa lớp, phân lớp đa trị,
- Phân lớp nhị phân là quá trình tiến hành việc phân lớp dữ liệu vào một trong hai lớp khác nhau dựa vào việc dữ liệu đó có hay không một số đặc tính theo quy định của bộ phân lớp.
- Phân lớp đa lớp là quá trình phân lớp với số lượng lớp lớn hơn hai Như vậy, tập hợp dữ liệu trong miền xem xét được phân chia thành nhiều lớp chứ không đơn thuần chỉ là hai lớp như trong bài toán phân lớp nhị phân về bản chất, bài toán phân lớp nhị phân là trường hợp riêng của bài toán phân lớp đa lớp.
- Trong phân lớp đa trị, mỗi đối tượng dữ liệu trong tập huấn luyện cũng như các đối tượng mới sau khi được phân lớp có thể thuộc vào từ hai lớp trở lên Ví dụ như trang web về việc bùng phát bệnh cúm gia cầm, thủy cầm tại một số tính phía Bắc vừa thuộc về lĩnh vực y tế liên quan đến lây bệnh sang người nhưng cũng thuộc về lĩnh vực kinh tế liên quan đến ngành chăn nuôi. Trong những trường hợp như vậy, việc sắp xếp một tài liệu vào nhiều hơn một lớp là phù hợp với yêu cầu thực tế.
Sau đây chúng ta sẽ tìm hiểu khái quát về quá trình phân lớp dữ liệu và sơ bộ về phương pháp phân lớp dữ liệu.
1.3.1 Quá trình phân lớp dữ liệu
Hình 1.1 Bài toán phân lớp
Quá trình phân lớp dữ liệu thường gồm hai bước: xây dựng mô hình (tạo bộ phân lớp) và sử dụng mô hình đó để phân lớp dữ liệu.
- Bước 1: Một mô hình sẽ được xây dựng dựa trên việc phân tích các đối tượng dữ liệu đã được gán nhãn từ trước Tập các mẫu dữ liệu này còn được gọi là tập dữ liệu huấn luyện (training data set) Các nhãn lớp của tập dữ liệu huấn luyện được xác định bởi con người trước khi xây dựng mô hình, vì vậy phương pháp này còn được gọi là học có giám sát (supervised learning) Trong bước này, chúng ta còn phải tính độ chính xác của mô hình, nếu độ chính xác là chấp nhận được (tức là cao), mô hình sẽ được sử dụng để xác định nhãn lớp cho các dữ liệu khác mới trong tương lai Trong việc kiểm thử mô hình, sử dụng các độ đo để đánh giá chất lượng của tập phân lớp, đó là độ hồi tưởng, độ chính xác, độ đo F1 Tồn tại nhiều phương pháp phân lớp dữ liệu để giải quyết bài toán phân lớp tùy thuộc vào cách thức xây dựng mô hình phân lớp như phương pháp Bayes, phương pháp cây quyết định, phương pháp k-người láng giềng gần nhất, phương pháp máy hỗ trợ vector Các phương pháp này chủ yếu sử dụng mô hình phân lớp Mô hình phân lớp còn được gọi là thuật toán phân lớp.
- Bước 2: Sử dụng mô hình đã được xây dựng ở bước 1 để phân lớp dữ liệu mới [14].
Bước đầu tiên trong qui trình phân lớp văn bản là thao tác chuyển văn bản đang được mô tả dưới dạng chuỗi các từ thành một mô hình khác, sao cho phù hợp với các thuật toán phân lớp.
Thông thường người ta thường biểu diễn văn bản bằng mô hình vector, mỗi văn bản được biểu diễn bằng một vector trọng số Ý tưởng của mô hình này là xem mỗi một văn bản Di được biểu diễn theo dạng Di = ( ⃗ d i ,i), trong đó i là chỉ số dùng để nhận diện văn bản này và ⃗ d i là vector đặc trưng của văn bản
Di này, trong đó: ⃗ d i = (Wi1, Wi2,…., Wnx) và n là số luợng đặc trưng của vector văn bản, Wij là trọng số của đặc trưng thứ j, j ϵ {l,2, ,n}.
Trong quá trình chuyển thể văn bản sang thành dạng vector, vấn đề mà chúng ta cần quan tâm là việc lựa chọn đặc trưng và số chiều cho không gian vector, chọn bao nhiêu từ, là các từ nào, phương pháp chọn ra sao?
Việc lựa chọn phương pháp biểu diễn văn bản để áp dụng vào bài toán phân lớp tuỳ thuộc vào độ thích hợp, phù hợp, độ đo đánh giá mô hình phân lớp của phương pháp đó sử dụng so với bài toán mà chúng ta đang xem xét giải quyết Ví dụ nếu văn bản là một trang Web thì sẽ có phương pháp để lựa chọn đặc trưng khác so với các loại văn bản khác.
Các đặc trưng của văn bản khi biểu diễn dưới dạng vector: số chiều không gian đặc trưng thường lớn Các văn bản càng dài, lượng thông tin trong nó đề cập đến nhiều vấn đề thì không gian đặc trưng càng lớn.
Các đặc trưng độc lập nhau, sự kết hợp các đặc trưng này thường không có ý nghĩa trong phân lớp.
Các đặc trưng rời rạc: vector đặc trưng Di có thể có nhiều thành phần mang giá trị 0 do có nhiều đặc trưng không xuất hiện trong văn bản Di (nếu chúng ta tiếp cận theo cách sử dụng giá trị nhị phân 1, 0 để biểu diễn cho việc có xuất hiện hay không một đặc trưng nào đó trong văn bản đang được biểu diễn thành vector), tuy nhiên nếu đơn thuần cách tiếp cận sử dụng giá trị nhị phân 0, l này thì kết quả phân lớp phần nào hạn chế là do có thể đặc trưng đó không có trong văn bản đang xét nhưng trong văn bản đang xét lại có từ khóa khác với từ đặc trưng nhưng có ngữ nghĩa giống với từ đặc trưng này, do đó một cách tiếp cận khác là không sử dụng số nhị phân 0, 1 mà sử dụng giá trị số thực để phần nào giảm bớt sự rời rạc trong vector văn bản.
Hầu hết các văn bản có thể được phân chia một cách tuyến tính bằng các hàm tuyến tính.
Như vậy, độ dài của vector là số các từ khoá xuất hiện trong ít nhất một mẫu dữ liệu huấn luyện Trước khi đánh trọng số cho các từ khoá cần tiến hành loại bỏ các từ dừng Từ dừng là những từ thường xuất hiện nhưng không có ích trong việc đánh chỉ mục, nó không có ý nghĩa gì trong việc phân lớp văn bản Có thể nêu một số từ dừng trong tiếng Việt như “và”, “là”, “thì”,
“như vậy”, , trong tiếng Anh như “and”, “or”, “the”, Thông thường từ dừng là các trạng từ, liên từ, giới từ [14].
1.3.3 Phương pháp phân lớp văn bản
Tồn tại nhiều phương pháp phân lớp văn bản như phương pháp Bayes, phương pháp cây quyết định, phương pháp k-người láng giềng gần nhất, phương pháp máy hỗ trợ vector Để xây dựng công cụ phân lớp văn bản tự động người ta thường dùng các thuật toán học máy (machine learning) Tuy nhiên còn có các thuật toán đặc biệt hơn dùng cho phân lớp trong các lĩnh vực đặc thù của văn bản một cách tương đối máy móc, như là khi hệ thống thấy trong văn bản có một cụm từ cụ thể thì hệ thống sẽ phân văn bản đó vào một lớp nào đó Tuy nhiên khi phải làm việc với các văn bản ít đặc trưng hơn thì cần phải xây dựng các thuật toán phân lớp dựa trên nội dung của văn bản và so sánh độ phù hợp của chúng với các văn bản đã được phân lớp bởi con người Đây là tư tưởng chính của thuật toán học máy Trong mô hình này, các văn bản đã được phân lớp sẵn và hệ thống của chúng ta phải tìm cách để tách ra đặc trưng của các văn bản thuộc mỗi nhóm riêng biệt Tập văn bản mẫu dùng để huấn luyện gọi là tập huấn luyện (train set), hay tập mẫu (pattern set), còn quá trình máy tự tìm đặc trưng của các nhóm gọi là quá trình học (learning) Sau khi máy đã học xong, người dùng sẽ đưa các văn bản mới vào và nhiệm vụ của máy là tìm ra xem văn bản đó phù hợp nhất với nhóm nào mà con người đã huấn luyện nó.
1.3.4 Các bước trong quá trình phân lớp văn bản
Quá trình phân lớp văn bản trải qua 4 bước cơ bản sau: Đánh chỉ số (indexing): Các văn bản ở dạng thô cần được chuyển sang một dạng biểu diễn nào đó để xử lý, quá trình này được gọi là quá trình biểu diễn văn bản, dạng biểu diễn phải có cấu trúc và dễ dàng trong khi xử lý, ở đây văn bản được biểu diễn dưới dạng phổ biến nhất là vector trọng số Tốc độ đánh chỉ số có vai trò quan trọng trong quá trình phân lớp văn bản.
Bài toán học có giám sát
Mục đích là để học một ánh xạ từ x tới y Khi cho trước một tập huấn luyện gồm các cặp (xi,yi), trong đó yi ∈ Υ gọi là các nhãn của các mẫu xi Nếu nhãn là các số, y = ( y i ) i∈[n] T biểu diễn vector cột của các nhãn Hơn nữa, một thủ tục chuẩn là các cặp(xi, yi) được thử theo giả thiết i.i.d (independent and identically distributed random variables) trên khắp X × Y.
Học có giám sát là một kỹ thuật của ngành học máy để xây dựng một hàm từ dữ liệu huấn luyện Dữ liệu huấn luyện bao gồm các cặp đối tượng đầu vào (thường dạng vector) và đầu ra thực sự Đầu ra của một hàm có thể là một giá trị liên tục (gọi là hồi quy), hay có thể là dự đoán một nhãn phân lớp cho một đối tượng đầu vào (gọi là phân lớp) Nhiệm vụ của chương trình học có giám sát là dự đoán giá trị của hàm cho một đối tượng bất kỳ là đầu vào hợp lệ, sau khi đã xem xét một số ví dụ huấn luyện (nghĩa là, các cặp đầu vào và đầu ra tương ứng) Để đạt được điều này, chương trình học phải tổng quát hoá từ các dữ liệu sẵn có để dự đoán những tình huống chưa gặp phải theo một cách hợp lý Để giải quyết một bài toán nào đó của học có giám sát, người ta phải xem xét nhiều bước khác nhau:
- Xác định loại của các ví dụ huấn luyện Trước khi làm bất cứ điều gì, người làm nhiệm vụ phân lớp nên quyết định loại dữ liệu nào sẽ được sử dụng làm ví dụ Chẳng hạn đó có thể là một kí tự viết tay đơn lẻ, toàn tập một từ viết tay, hay toàn tập một dòng chữ viết tay.
- Thu thập tập huấn luyện Tập huấn luyện cần đặc trưng cho thực tế sử dụng của hàm chức năng Vì thế, một tập các đối tượng đầu vào được thu thập và đầu ra tương ứng được thu thập, hoặc từ các chuyên gia hoặc từ việc đo dạc tính toán.
- Xác định việc biểu diễn các đặc trưng đầu vào cho hàm chức năng cần tìm sự chính xác của hàm chức năng phụ thuộc lớn vào cách các đối tượng đầu vào được biểu diễn Thông thường, đối tượng đầu vào được chuyển đổi thành một vector đặc trưng, chứa một số các đặc trưng nhằm mô tả cho đối tượng đó Số lượng các đặc trưng không nên quá lớn, do sự bùng nổ tổ hợp (curse of dimensionality), nhưng phải đủ lớn để dự đoán chính xác đầu ra
- Xác đinh cấu trúc của hàm chức năng cần tìm và giải thuật học tương ứng.
Ví dụ người thực hiện quá trình phân lớp có thể lựa chọn việc sử dụng mạng nơ-ron nhân tạo hay cây quyết định….
- Hoàn thiện thiết kế Người thiết kế sẽ chạy giải thuật học từ một tập huấn luyện thu thập được Các tham số của giải thuật học có thể được điều chỉnh bằng cách tối ưu hoá hiệu năng trên một tập con (gọi là tập kiểm chứng)
Một số phương pháp học máy phân lớp
Một số phương pháp học máy phân lớp phổ biến có thể kể đến như:
- Phương pháp Nạve Bayes (NB)
- Phương pháp K-Nearest Neighbor (KNN)
- Phương pháp Linear Least Square Fit (LLSF)
- Phương pháp Centroid – based vector
- Phương pháp Support Vector Machine (SVM)
Trong đó, SVM là phương pháp được đồ án sử dụng bởi các đặc điểm sau đây:
- SVM là phương pháp sử dụng không gian vector đặc trưng lớn nhất (hơn 10.000 chiều) Đặc điểm này phù hợp với việc biểu diễn văn bản bởi lẽ văn bản là thông tin có số chiều cực lớn.
- Trong công trình của mình năm 1999 [16], Joachims đã so sánh SVM với
NB, k-Nearest Neighbour, Rocchio và đến năm 2003 [17], Joachims đã chứng minh rằng SVM làm việc tốt cùng với đặc tính được đề cập trước đây của văn bản Các kết quả cho thấy SVM đưa ra độ chính xác phân lớp tốt nhất khi so sánh với các phương pháp khác
- Theo Xiaojin Zhu [15] thì trong các công trình nghiên cứu của nhiều tác giả (chẳng hạn như Kiritchenko và Matwin vào năm 2001, Hwanjo Yu và Han vào năm 2003, Lewis vào năm 2004) đã chỉ ra rằng thuật toán SVM đem lại kết quả tốt nhất phân lớp văn bản
- Kiritchenko và Matwin đã nghiên cứu và so sánh phương pháp SVM với kỹ thuật Nạve Bayesian, sau đĩ đã chứng minh được rằng SVM là phương pháp tốt nhất cho phân lớp thư điện tử cũng như phân lớp văn bản [16]
- Hwanjo Yu và Han cho thấy rằng SVM hoàn toàn được tiến hành tốt nhất so với các phương pháp phân lớp văn bản khác Tất cả các tài liệu nghiên cứu hiện nay cho thấy rằng SVM đưa ra kết quả chính xác nhất trong khía cạnh phân lớp văn bản [15]
- Lewis đã nghiên cứu phân lớp văn bản và đã khám phá ra rằng kết quả của SVM là tốt nhất Lewis đã đưa ra tập hợp nhỏ các tài liệu của phân lớp văn bản Tác giả đã cố gắng cải tiến phương pháp RCV1 cho phân lớp văn bản và sử dụng phương pháp mới được ứng dụng cho một số kỹ thuật phân lớp văn bản khác nhau SVM đã đưa ra kết quả tốt nhất khi đặt dựa vào k-người láng giềng gần nhất và kỹ thuật tập phân lớp RocchioStylePrototype [16].
Thuật toán SVM với phân lớp văn bản
SVM là phương pháp phân lớp rất hiệu quả được Vapnik giới thiệu vào năm 1995 để giải quyết nhận dạng mẫu hai lớp sử dụng nguyên lý Cực tiểu hoá Rủi ro Cấu trúc (Structural Risk Minimization) Ý tưởng chính của thuật toán này là cho trước một tập huấn luyện được biểu diễn trong không gian vector trong đó mỗi tài liệu là một điểm, phương pháp này tìm ra một mặt phẳng h quyết định tốt nhất có thể chia các điểm trên không gian này thành hai lớp riêng biệt tương ứng lớp + và lớp - Chất lượng của siêu mặt phẳng này được quyết định bởi khoảng cách (gọi là biên) của điểm dữ liệu gần nhất của mỗi lớp đến mặt phẳng này Khoảng cách biên càng lớn thì mặt phẳng quyết định càng tốt đồng thời việc phân loại càng chính xác Mục đích thuật toán SVM tìm ra được khoảng cách biên lớn nhất để tạo kết quả phân lớp tốt
Hình sau minh hoạ cho thuật toán này:
Hình 2.3 Minh họa thuật toán SVM
Siêu phẳng h phân chia dữ liệu huấn luyện thành 2 lớp + và - với khoảng cách biên lớn nhất Các điểm gần h nhất là các vector hỗ trợ (SupportVector - được khoanh tròn)
SVM sử dụng thuật toán học nhằm xây dựng một siêu phẳng làm cực tiểu hoá độ phân lớp sai của một đối tượng dữ liệu mới Độ phân lớp sai của một siêu phẳng được đặc trưng bởi khoảng cách bé nhất tới siêu phẳng đấy. SVM có khả năng rất lớn trong việc ứng dụng với các bài toán phân lớp văn bản.
Như đã biết, phân lớp văn bản là một cách tiếp cận mới để tạo ra tập phân lớp văn bản từ các mẫu cho trước Cách tiếp cận này phối hợp với sự thực thi ở mức độ cao và hiệu suất cùng với những am hiểu về mặt lý thuyết, tính chất thô ngày càng được hoàn thiện Thông thường, hiệu quả ở mức độ cao không có các thành phần suy nghiệm Phương pháp SVM có khả năng tính toán sẵn sàng và phân lớp, nó trở thành lý thuyết học mà có thể chỉ dẫn những ứng dụng thực tế trên toàn cầu Đặc trưng cơ bản quyết định khả năng phân lớp là khả năng phân lớp những dữ liệu mới dựa vào những tri thức đã tích luỹ được trong quá trình huấn luyện Sau quá trình huấn luyện nếu hiệu suất tổng quát hoá của bộ phân lớp cao thì thuật toán huấn luyện được đánh giá là tốt Hiệu suất tổng quát hoá phụ thuộc vào hai tham số là sai số huấn luyện hay và năng lực của máy học.Trong đó sai số huấn luyện là tỷ lệ lỗi phân lớp trên tập dữ liệu huấn luyện.Còn năng lực của máy học được xác định bằng kích thước Vapnik-Chervonenkis (kích thước VC) Kích thước VC là một khái niệm quan trọng đối với một họ hàm phân tách (hay là tập phân lớp) Đại lượng này được xác định bằng số điểm cực đại mà họ hàm có thể phân tách hoàn toàn trong không gian đối tượng Một tập phân lớp tốt là tập phân lớp có năng lực thấp nhất (có nghĩa là đơn giản nhất) và đảm bảo sai số huấn luyện nhỏ Phương pháp SVM được xây dựng trên ý tưởng này.
Xét bài toán phân lớp đơn giản nhất – phân lớp hai lớp với tập dữ liệu mẫu: {(xi, yi) i = 1, 2,…, N, xi ∈ Rm }
Trong đó mẫu là các vector đối tượng được phân lớp thành các mẫu dương và mẫu âm như trong hình 4:
- Các mẫu dương là các mẫu xi thuộc lĩnh vực quan tâm và được gán nhãn yi = 1.
- Các mẫu âm là các mẫu xi không thuộc lĩnh vực quan tâm và được gán yi = - 1.
Thực chất phương pháp này là một bài toán tối ưu, mục tiêu là tìm ra một không gian H và siêu mặt phẳng quyết định h trên H sao cho sai số phân lớp là thấp nhất.
Trong trường hợp này, tập phân lớp SVM là mặt siêu phẳng phân tách các mẫu dương khỏi các mẫu âm với độ chênh lệch cực đại, trong đó độ chênh lệch – còn gọi là Lề (margin) xác định bằng khoảng cách giữa các mẫu dương và các mẫu âm gần mặt siêu phẳng nhất Mặt siêu phẳng này được gọi là mặt siêu phẳng lề tối ưu.
Các mặt siêu phẳng trong không gian đối tượng có phương trình là:
C + w1 x1 + w2 x2 + … + wn xn = 0 (2.1) Tương đương với công thức C + ∑wi xi = 0 i=1,…,n với w = w1 + w2 + …+ wn là bộ hệ số siêu phẳng hay là vector trọng số, C là độ dịch, khi thay đổi w và C thì hướng và khoảng cách từ gốc toạ độ đến mặt siêu phẳng thay đổi.
Tập phân lớp SVM được định nghĩa như sau: f(x) = sign(C + ∑wi xi)
Trong đó sign(z) = +1 nếu z ≥ 0, sign(z) = -1 nếu z < 0.
Nếu f(x) = +1 thì x thuộc về lớp dương (lĩnh vực được quan tâm), và ngược lại, nếu f(x) = -1 thì x thuộc về lớp âm (các lĩnh vực khác).
Máy học SVM là một học các siêu phẳng phụ thuộc vào tham số vector trọng số w và độ dịch C Mục tiêu của phương pháp SVM là ước lượng w và
C để cực đại hoá lề giữa các lớp dữ liệu dương và âm Các giá trị khác nhau của lề cho ta các họ siêu mặt phẳng khác nhau, và lề càng lớn thì năng lực của máy học càng giảm Như vậy, cực đại hoá lề thực chất là việc tìm một máy học có năng lực nhỏ nhất Quá trình phân lớp là tối ưu khi sai số phân lớp là cực tiểu.
Ta phải giải phương trình sau: min w , b ,η C ∑ i=1 l η i + 1 2 ‖ w ‖ 2 s.t y i [ w x i −b] + η i ≥ 1 η i ≥ 0,i= ,… ,l tìm ra được vector trọng số w và sai số của mỗi điểm trong tập huấn luyện là ±i từ đó ta có phương trình tổng quát của siêu phẳng tìm ra được bởi thuật toán SVM là: f(x1, x2,…, xn) = C +∑ wi xi Với i = 1,…, n Trong đó n là số dữ liệu huấn luyện.
Sau khi đã tìm được phương trình của siêu phẳng bằng thuật toán SVM, áp dụng công thức này để tìm ra nhãn lớp cho các dữ liệu mới.
Huấn luyện SVM là việc giải bài toán quy hoạch toàn phương SVM.Các phương pháp số giải bài toán quy hoạch này yêu cầu phải lưu trữ một ma trận có kích thước bằng bình phương của số lượng mẫu huấn luyện Trong những bài toán thực tế, điều này là không khả thi vì thông thường kích thước của tập dữ liệu huấn luyện thường rất lớn (có thể lên tới hàng chục nghìn mẫu) Nhiều thuật toán khác nhau được phát triển để giải quyết vấn đề nêu trên Những thuật toán này dựa trên việc phân rã tập dữ liệu huấn luyện thành những nhóm dữ liệu Điều đó có nghĩa là bài toán quy hoạch toàn phương với kích thước nhỏ hơn Sau đó, những thuật toán này kiểm tra các điều kiện KKT (Karush-KuhnTucker) để xác định phương án tối ưu [14].
Một số thuật toán huấn luyện dựa vào tính chất: Nếu trong tập dữ liệu huấn luyện của bài toán quy hoạch toàn phương con cần giải ở mỗi bước có ít nhất một mẫu vi phạm các điều kiện KKT, thì sau khi giải bài toán náy, hàm mục tiêu sẽ tăng Như vậy, một chuỗi các bài toán quy hoạch toàn phương con với ít nhất một mẫu vi phạm các điều kiện KKT được đảm bảo hội tụ đến một phương án tối ưu Do đó, ta có thể duy trì một tập dữ liệu làm việc đủ lớn có kích thước cố định và tại mỗi bước huấn luyện, ta loại bỏ và thêm vào cùng một số lượng mẫu.
Chương 3 Chương 3 XỬ LÝ VĂN BẢN TIẾNG VIỆT
Trước khi thực hiện việc phân lớp văn bản, cần phải khai thác nội dung trang Web cần phân lớp Trong phạm vi của đề tài là chỉ áp dụng với webTiếng Việt mà việc xử lý với Tiếng Việt không giống như Tiếng Anh, TiếngPháp hay các loại tiếng Latinh khác Chính vì thế chương này sẽ trình bày cụ thể hơn về xử lý văn bản Tiếng Việt.
Đặc trưng của Tiếng Việt
Tiếng Việt là ngôn ngữ đơn lập Đặc điểm này bao quát Tiếng Việt cả về mặt ngữ âm, ngữ nghĩa, ngữ pháp Khác với các ngôn ngữ Châu Âu, mỗi từ là một nhóm các ký tự có nghĩa được cách nhau bởi một khoảng trắng còn Tiếng Việt và các ngôn ngữ đơn lập khác, thì khoảng trắng không phải là căn cứ để nhận diện từ.
- Trong Tiếng Việt trước hết cần chú ý đến đơn vị xưa nay vẫn quan tâm gọi là tiếng Về mặt ngữ nghĩa, ngữ âm, ngữ pháp, đều có giá trị quan trọng.
- Sử dụng tiếng để tạo từ có 2 trường hợp:
- Trường hợp 1 tiếng: đây là trường hợp một tiếng được dùng làm một từ, gọi là từ đơn Tuy nhiên không phải tiếng nào cũng tạo thành một từ.
- Trường hợp 2 tiếng trở lên: đây là trường hợp 2 hay nhiều tiếng kết hợp với nhau, cả khối kết hợp với nhau gắn bó tương đối chặt chẽ, mới có tư cách ngữ pháp là một từ Đây là trường hợp từ ghép hay từ phức.
- Có rất nhiều quan niệm về từ trong Tiếng Việt, từ nhiều quan niệm về từTiếng Việt khác nhau đó chúng ta có thể thấy đặc trưng cơ bản của “từ” là sự hoàn chỉnh về mặt nội dung, từ là đơn vị nhỏ nhất để đặt câu.
- Người ta dùng “từ” kết hợp thành câu chứ không phải dùng “tiếng”, do đó quá trình tách câu thành thành các “từ” cho kết quả tốt hơn là tách câu bằng “tiếng”.
3.1.2 Phán đoán web Tiếng Việt
Trong quá trình tìm hiểu tài liệu kết hợp dựa vào quá trình thực nghiệm dựa vào chuyên gia đã chứng mình được rằng: Khi chúng ta đã nhận dạng và lấy được nội dung bài viết để phán đoán 1 page có phải page tiếng Việt hay không dựa trên việc kiểm tra các kí tự thuần Việt chứa trong page đó
Trong Unicode, có 134 kí tự thuần Việt :
VietChar="ẠẢÃÀÁÂẬẦẤẨẪĂẮẰẶẲẴÓÒỌÕỎÔỘỔỖỒỐƠỜỚỢỞ ỠÉÈẺẸẼÊẾỀỆỂỄÚÙỤỦŨƯỰỮỬỪỨÍÌỊỈĨÝỲỶỴỸĐạảãàáâậầấẩẫăắằặ ẳẵóòọõỏôộổỗồốơờớợởỡéèẻẹẽêếềệểễúùụủũưựữửừứíìịỉĩýỳỷỵỹđ" Ở đây có liệt kê thêm tất cả các kí tự latin :
Sau đó đếm tổng số kí tự thuần việt vnCount và tổng số kí tự latin có trong web laCount, nếu : vnCount
(vnCount + laCount)> 10% thì ta phán đoán page đó là page tiếng Việt.
Kết quả lớn hơn 10% được đề xuất bởi Đại học Khoa học Kỹ thuậtNagaoka – Nhật Bản và bằng việc thực nghiệm qua bộ dữ liệu thu thập được cho việc huấn luyện máy học Chúng em có thể nhận định rằng: số liệu nêu trên là đúng.
Các phương pháp tách từ Tiếng Việt
Tổng quát về tách từ:
- Văn bản tiếng Việt đặt dấu cách giữa các âm tiết chứ không phải giữa các từ Một từ có thể có một, hai hoặc nhiều âm tiết nên có nhiều cách phân chia các âm tiết thành các từ, gây ra nhập nhằng Việc phân giải nhập nhằng này gọi là bài toán tách từ.
- Tiêu chí quan trọng nhất trong bài toán tách từ đương nhiên là độ chính xác Hiện tại người ta đã đạt được độ chính xác lên đến 97% tính theo từ. Tuy nhiên nếu tính theo câu (số câu được tách hoàn toàn đúng/tổng số câu) thì độ chính xác chỉ khoảng 50% Đây là vấn đề nghiêm trọng đối với các bước xử lý sau như phân tích ngữ pháp, ngữ nghĩa vì một từ bị tách sai có ảnh hưởng toàn bộ đến cách phân tích cả câu.
- Ngoài ra tiêu chí độ chính xác tách từ mới cũng quan trọng với các ứng dụng thực tế Tiếng Việt là một sinh ngữ - nó luôn luôn biến đổi Các từ mới thuần Việt cũng như vay mượn được tạo ra hàng ngày Nếu một ứng dụng không xử lý được những từ này thì hiệu năng của nó sẽ giảm dần theo thời gian.
- Hiện tại có một số cách tiếp cận bài toán tách từ như sau:
- Ghép cực đại: Đặt các từ vào câu sao cho phủ hết được câu đó, thoả mãn một số kỹ thuật dựa trên kinh nghiệm nhất định
- Luật: Xây dựng tập luật bằng tay hoặc tự động để phân biệt các cách kết hợp được phép và không được phép
- Đồ thị hoá: Xây dựng một đồ thị biểu diễn câu và giải bài toán tìm đường đi ngắn nhất trên đồ thị
- Gán nhãn: Coi như bài toán gán nhãn chuỗi Cách này được sử dụng trong JVNSegmenter [18], Đông du [19]
- Dùng mô hình ngôn ngữ: Cho trước một số cách tách từ của toàn bộ câu, một mô hình ngôn ngữ có thể đánh giá được cách nào có khả năng cao hơn Đây là cách tiếp cận của vnTokenizer [20].
Một số phương pháp tách từ Tiếng Việt như:
- Phương pháp giải thuật học cải tiến Transformation – based Learning
- Phương pháp tách tách từ Tiếng Việt dựa trên thống kê từ Internet và thuật giải di truyền
- Mô hình tách từ bằng WFST và mạng Neural
- Phương pháp Maximum Matching: Forward/Backward.
Maximum Matching – Phương pháp sử dụng trong đề tài
Từ các phương pháp tách từ được nêu ở mục trên, kết hợp với quá trình xây dựng hệ thống của nhóm, nhóm chúng em đã quyết định sử dụng phương pháp Maximum Matching để áp dụng cho bài toán của mình do thời gian sử dụng của phương pháp này khá phù hợp và giảm thiểu tối đa được lỗi.
- Dạng đơn giản của phương pháp dùng để giải quyết nhập nhằng từ đơn. Giả sử chúng ta có một chuỗi ký tự C 1, C 2, …, C n Chúng ta sẽ áp dụng phương pháp từ đầu chuỗi Đầu tiên kiểm tra xem C 1có phải là từ hay không, sau đó kiểm tra xem C 1 C 2 có phải là từ hay không Tiếp tục thực hiện như thế cho đến khi tìm được từ dài nhất
- Dang phức tạp: Quy tắc của dạng này là phân đoạn từ thông thường người ta chọn phân đoạn ba từ có chiều dài tối đa Thuật toán bắt đầu từ dạng đơn giản, cụ thể là nếu phát hiện ra những cách tách từ gây nhập nhằng, như ở ví dụ trên, giả sử C 1 là từ và C 1 C 2 cũng là một từ, khi đó chũng ta kiểm tra ký tự kế tiếp trong chuỗi C 1 , C 2 , …, C n để tìm tất cả các đoạn ba từ có bắt đầu với C 1 hoặc C 1 C 2
Ví dụ: chúng ta có được các đoạn sau:
Khi đó chuỗi dài nhất là chuỗi thứ ba Do đó từ đầu tiên của chuỗi thứ ba ( C 1 C 2 ) sẽ được chọn Thực hiện các bước cho đến khi được chuỗi từ hoàn chỉnh.
Phương pháp này thực hiện tách từ đơn giản, nhanh và chỉ cần dựa vào từ điển để thực hiện Tuy nhiên, khuyết điểm của phương pháp này cũng chính là từ điển, nghĩa là độ chính xác khi thực hiện tách từ phụ thuộc hoàn toàn vào tính đủ, tính chính xác của từ điển.
- Ưu điểm: Dễ dàng tách được chính xác các ngữ/ câu Phương pháp tách từ này đơn giản, nhanh và chỉ cần dựa vào từ điển.
- Độ chính xác của phương pháp này phụ thuộc hoàn toàn vào tính đủ và tính chính xác của từ điển.
- Phương pháp này sẽ tách từ sai trong các trường hợp “học sinh||học sinh||học”, “một||ông||quan tài||giỏi”, …
Chuẩn bị dữ liệu huấn luyện
Dữ liệu huấn luyện được thu thập từ trang tin VnExpress theo nguyên tắc của một trình thu thập dữ liệu web sẽ được trình bày dưới đây.
Trình thu thập web là một chương trình khai phá cấu trúc đồ thị của web di chuyển từ trang này qua trang khác Thời kỳ đầu nó có những tên khá tượng hình như bọ web, rô-bốt, nhện và sâu, nhưng ngày nay tên gọi phổ biến nhất là trình thu thập web Mặc dù vậy cụm từ “thu thập” không lột tả được hết tốc độ của những chương trình này, vì chúng có tốc độ làm việc đáng kinh ngạc, có thể thu thập dữ liệu lên đến hàng chục ngàn trang trong vòng một vài phút.
Khi xây dựng trình thu thập web phục vụ cho đề tài, cần chú ý đến một số vấn đề như: Chỉ thu thập từ các web Tiếng Việt, cần tự động nhận dạng vùng nội dung trong quá trình thu thập cũng như chỉ quan tâm đến các trang có độ dài nội dung đủ lớn Do đó, chúng em đề xuất mô hình thu thập dữ liệu như sau:
Hình 4.5 Trình thu thập web cơ bản
Chương trình bắt đầu bằng cách đi từ liên kết gốc (Seed URL) ứng với trang web sẽ ghé thăm đầu tiên, các trang này được gọi là các trang hạt giống.Khi ghé thăm một trang hạt giống, trình thu thập chọn style normal Text sẽ đọc nội dung trang web, lọc ra tất cả các siêu liên kết (hyperlink) có trong trang web đó và đưa các URL tương ứng với chúng vào một danh sách gọi là biên giới (Frontier) Dựa vào danh sách này, trình thu thập tiếp tục quá trình duyệt đệ quy để ghé thăm tất cả các URL chưa được duyệt Quá trình này chỉ dừng lại khi trình thu thập đã thu thập đủ số trang yêu cầu hoặc frontier là rỗng.
Cách lấy trang Để lấy một trang web, chúng ta cần một máy khách HTTP (HTTP client) gửi một yêu cầu HTTP (HTTP Request) cho trang đó và đọc các phản hồi Việc sử dụng crawler truy cập vào các website thường gây nên tình trạng nghẽn mạch, vì thế các website thường có quy định riêng rành cho các crawler Các quy định này thường được lưu trữ dưới văn bản “robots.txt” ngay dưới thư mục gốc
Tiêu chuẩn trích xuất URL
Khi một trang đã được lấy, chúng ta cần phân tích nội dung của nó để trách xuất thông tin, lấy ra các URL để mở ra hướng đi tiếp theo của các trình thu thập.
Hàm bóc tách HTML có sẵn cho nhiều ngôn ngữ khác nhau Chúng cung cấp các chức năng để dễ dàng xác định các tag HTML và cặp các giá trị thuộc tính liên quan trong một tài liệu HTML Để trích xuất siêu liên kết URL từ một trang Web, chúng ta có thể sử dụng các hàm bóc tách để tìm thẻ anchor (thẻ ) và lấy các giá trị các thuộc tính href liên quan
Tuy nhiên, ta cần phải chuyển đổi tất cả các đường dẫn URL sang đường dẫn URL tuyệt đối vì có nhiều đường dẫn URL viết không đúng quy chuẩn có thể cùng dẫn tới một trang Điều này rất quan trọng để tránh lấy một trang nhiều lần Việc chuẩn hóa URL có thể bao gồm các bước:
- Chuyển đổi giao thức và tên máy chủ thành dạng chữ thường
- Loại bỏ phần tham khảo trong URL
- Thực hiện mã hóa URL cho một vài ký tự thường sử dụng như ‘~’.
Trình thu thập đa luồng.
Mỗi vòng thu thập tuần tự chiếm một lượng lớn thời gian, trong khi đó CPU hoặc mạng lại nhàn rỗi: CPU nhàn rỗi (trong khi truy cập mạng) hoặc mạng nhàn rỗi (trong các hoạt động của CPU) Việc tiến hành xử lý đa luồng với mỗi luồng là một vòng thu thập, có thể giúp cho việc tăng tốc độ hợp lý và sử dụng hiệu quả băng thông sẵn có:
Hình 4.6 Trình thu thập web đa luồng [7]
Mô hình trình thu thập đa luồng
Mô hình đa luồng là mô hình làm việc gồm nhiều luồng trên cùng một frontier với mỗi luồng là một vòng thu thập Chính vì thế cần một cơ chế đồng bộ để tránh việc xung đột khi các luồng cùng tiến hành quá trình thu thập trên một frontier Cơ chế này như sau:
- Luồng đầu tiên bắt đầu bằng cách khóa frontier để chọn URL tiếp theo cho quá trình thu thập dữ liệu
- Sau khi lấy ra một URL, nó sẽ mở khóa frontier cho phép các luồng tiếp theo truy cập vào frontier
- Frontier lại bị khóa lại để những URL mới được thêm vào
Các bước khóa này là cần thiết để đồng bộ hóa việc sử dụng frontier khi mà frontier bị chia sẻ bởi nhiều vòng thu thập.
4.1.2 Nhận dạng vùng nội dung
Xét một ví dụ cụ thể như sau:
Với liên kết là: http://kinhdoanh.vnexpress.net/tin-tuc/hang-hoa/vang- giam-dola-co-dau-hieu-di-len-3223478.html có tiêu đề bài viết và nội dung như sau:
Trong quá trình vận hành trình thu thập dữ liệu, ngoài việc trích lọc lấy các liên kết để duy trì hoạt động của trình thu thập thì việc trích lọc thông tin và lưu trữ các thông tin chính thu nhận được đó là việc vô cùng quan trọng. Đặc biệt, với đặc điểm cấu trúc trang web là cấu trúc dạng cây, cấu trúc này hoàn toàn có thể được sửa đổi, cập nhật qua thời gian Vì vậy mà, việc trích lọc, nhận dạng lấy thông tin hữu ích, quan trọng, là nội dung chính của bài viết cần thực hiện một cách tự động.
Qua nghiên cứu, chúng em đề xuất phương pháp nhận dạng vùng dữ liệu chính bằng cách tận dụng các đặc điểm của một trang web theo chuẩn SEO (SEO (Search Engine Optimization) là tập hợp những phương pháp tối ưu hóa để website trở lên thân thiện với máy chủ tìm kiếm (Search Engine) từ đó nâng cao thứ hạng website khi người dùng tìm kiếm với các từ khóa liên quan).
Một trong các đặc điểm của web chuẩn SEO có thể normal Text kể đến bao gồm:
- Thẻ đặc tả tiêu đề của bài viết
- Tiêu đề bài viết thường sử dụng các thẻ từ H1 đến H6
Ngoài ra, việc nhận dạng vùng dữ liệu chính được thực hiện qua các đặc trưng sau:
- Dựa vào tên CSS class, tên ID
- Dựa vào mật độ chữ
- Dựa vào số nút con (child node)
Từ đó, chúng em đã xây dựng được chương trình nhận dạng như hình minh họa sau:
Hình 4.7 Chương trình nhận dạng nội dung
Tiền xử lý dữ liệu
Do phân loại văn bản dựa vào đặc trưng của văn bản, đặc trưng của văn bản có tốt cho quá trình phân loại không chủ yếu là dựa vào phần tách từ có chính xác không, nên độ chính xác việc tách văn bản thành các từ có nghĩa rất quan trọng
Như đã trình bày ở Chương 3, có nhiều cách tách từ thông dụng, nhóm chúng em đề xuất sử dụng kỹ thuật tách từ Maximum Matching với công cụ tách từ vnTokenizer Công cụ này thuộc nhánh đề tài “Xử lý văn bản tiếng Việt”, (chủ trì nhánh này là GS Hồ Tú Bảo), nằm trong Đề tài thuộc Chương trình Khoa học Công nghệ cấp Nhà nước KC01/06-10 “Nghiên cứu phát triền một số sản phẩm thiết yếu về xử lý tiếng nói và văn bản tiếng Việt” (VLSP) chủ nhiệm đề tài là PGS TS Lương Chi Mai Công cụ sử dụng kết hợp từ điển và ngram, trong đó mô hình ngram được huấn luyện sử dụng VietTreebank (70.000 câu đã được tách từ) cho độ chính xác trên 97%
Giới thiệu công cụ vnTokenizer
VnTokenizer là công cụ tách từ tiếng Việt được nhóm tác giả Nguyễn Thị Minh Huyền, Vũ Xuân Lương và Lê Hồng Phương phát triển dựa trên phương pháp so khớp tối đa (Maximum Matching) với tập dữ liệu sử dụng là bảng âm tiết tiếng Việt và từ điển từ vựng tiếng Việt
- Công cụ được xây dựng bằng ngôn ngữ Java, mã nguồn mở Có thể đễ dàng sửa đổi nâng cấp và tích hợp vào các hệ thống phân tích văn bản tiếng Việt khác
- Đầu vào của công cụ tách từ vnTokenizer là một câu hoặc một văn bản được lưu dưới dạng tệp
- Đầu ra là một chuỗi các đơn vị từ được tách
- Các đơn vị từ bao gồm các từ trong từ điển cũng như các chuỗi số, chuỗi kí từ nước ngoài, các hình vị ràng buộc (gồm các phụ tố), các dấu câu và các chuỗi kí tự hỗn tạp khác trong văn bản (ISO, 2006) Các đơn vị từ không chỉ bao gồm các từ có trong từ điển, mà cả các từ mới hoặc các từ được sinh tự do theo một quy tắc nào đó (như phương thức thêm phụ tố hay phương thức láy) hoặc các chuỗi kí hiệu không được liệt kê trong từ điển.
Công cụ sử dụng tập dữ liệu đi kèm là tập từ điển từ vựng tiếng Việt, danh sách các đơn vị từ mới bổ sung, được biểu diễn bằng ôtômat tối thiểu hữu hạn trạng thái, tệp chứa các biểu thức chính quy cho phép lọc các đơn vị từ đặc biệt (xâu dạng số, ngày tháng…) và các tệp chứa các thống kê unigram và bigram trên kho văn bản tách từ mẫu.
4.2.2 Loại bỏ từ dừng Để phục vụ cho việc xử lý và lưu trữ hiệu quả hơn, với các văn bản đã qua công đoạn tách từ, ta cần loại bỏ các từ dừng, và từ tầm thường – từ không cần thiết có thể bỏ mà câu vẫn có nghĩa.
Sau khi thực hiện quá trình tách từ, dựa vào từ điển các từ dừng ta thực hiện loại bỏ các từ dừng để đảm bảo hiệu quả phân lớp, giảm nhiễu và giảm số chiều khi biểu diễn văn bản.
Việc biểu diễn văn bản cần theo chuẩn đầu vào của SVM – phương pháp phân lớp mà đề tài sử dụng Việc biểu diễn văn bản dưới dạng vector cần đảm bảo nguyên tắc: Có thể sử dụng được các thư viện nổi tiếng với học máy SVM Cụ thể định dạng của file dữ liệu huấn luyện và file test là:
: :
- là giá trị đích của tập huấn luyện Nó là một số nguyên xác định một lớp
- là một số nguyên bắt đầu từ 1.
- là một số thực Các nhãn trong file dữ liệu test chỉ được sử dụng để tính toán độ chính xác hoặc lỗi.
Huấn luyện học máy
4.4.1 Trích chọn đặc trưng văn bản
Trong phương pháp học máy, số lượng đặc trưng (features) càng nhiều thì độ chính xác càng cao, nhưng ngược lại, lượng đặc trưng quá nhiều sẽ khiến cho quá trình huấn luyện, quá trình phân loại mất nhiều thời gian hơn. Ngoài ra, nó còn khiến chương trình chiếm nhiều dung lượng bộ nhớ và đĩa cứng nhiều hơn
Vì thế, đối với phương pháp máy học, rất cần thiết phải lựa chọn từ tập các đặc trưng ra 1 tập con nhỏ hơn mà vẫn đảm bảo độ chính xác của quá trình phân loại Việc lựa chọn đó, gọi là lựa chọn đặc trưng (feature selection,hay còn các tên khác như variable selection, feature reduction, attribute selection or variable subset selection)
Trong khuôn khổ của đề tài, hệ thống thực hiện việc trích chọn đặc trưng thông qua tần suất các từ Qua việc xử lý các văn bản thu nhận được cho việc huấn luyện (đã trình bày ở phần trên), trích chọn lấy các từ có tần suất xuất hiện lớn trong văn bản để làm đặc trưng cho biểu diễn văn bản.
4.4.2 Tạo mô hình học máy.
Sau khi văn bản đã được biểu diễn Ta thực hiện việc tạo mô hình học máy phục vụ cho việc phân lớp dữ liệu.
Qua nghiên cứu, Để thực hiện việc huấn luyện mô hình với thuật toán SVM ta có thể sử dụng thư viện LibSVM Một trong những thư viện được kiểm nghiệm và sử dụng rộng rãi trong việc phân lớp dữ liệu LibSVM được nhóm tác giả thuộc trường Đại học Công nghệ Đài Loan phát triển [14]. Để thực hiện việc xây dựng mô hình ta thực hiện bằng cách:
Sử dụng lớp “svm-train” với đầu vào là tệp dữ liệu huấn luyện và đầu ra là file mô hình.
Thực hiện phân lớp
4.5.1 Nhãn dữ liệu phân lớp
Nhãn dữ liệu được lựa chọn trên cơ sở tham khảo các chuyên mục bài viết từ trang báo VnExpress, kết hợp với việc đánh giá, lựa chọn của nhóm chúng em Kết quả thu được bộ nhãn dữ liệu gồm 110 nhãn như sau:
Bảng 4.1 Nhãn dữ liệu phân lớp
Chuyên mục Chuyên mục trực thuộc
6 Người việt 5 châu Thế giới
7 Tình người xa xứ Thế giới
6 New Zealand - Chân trời mới Thế giới
10 Sản phẩm mới Hàng hóa
15 Thanh toán điện tử Ebank
20 Bất động sản Kinh doanh
21 Dự án Bất động sản
29 Bộ sưu tập Thời trang
30 Sao đẹp – Sao xấu Thời trang
39 Sân khấu – Mỹ thuật Giải trí
46 Ngoại hạng Anh Bóng đá
52 Các giải khác Bóng đá
57 Hồ sơ phá án Pháp luật
63 Học tiếng anh Giáo dục
71 Hồ Chí Minh Du lịch
77 Công nghệ mới Khoa học
62 Máy tính bảng Sản phẩm
65 TB nghe nhìn Sản phẩm
66 Đồ chơi số Sản phẩm
67 MT để bàn Sản phẩm
66 TB văn phòng Sản phẩm
91 Đời sống số Số hóa
92 Thị trường Đời sống số
93 Giải trí Đời sống số
94 Bảo mật Đời sống số
95 Kinh nghiệm Đời sống số
96 Tư vấn_Sohoa Số hóa
105 Cửa sổ blog Tâm sự
Khác với việc phân lớp nhị phân (chiến lược: one versus one), đối với bài toán phân lớp văn bản Số nhãn khi thực hiện phân lớp không chỉ là lớp âm và lớp dương Lúc này, ta cần thực hiện bài toán phân lớp đa lớp (chiến lược: one versus all).
Bản chất của việc thực hiện phân lớp đa lớp là thực hiện tuần tự với k lớp, theo nguyên tắc “có thuộc lớp này” hay không Như vậy, ta cần xây dựng k*(k - 1)/2 bộ phân lớp, với mỗi bộ phân lớp được huấn luyện trên dữ liệu từ hai lớp.
Cụ thể, đối việc phân lớp một trang web, bao gồm các bước sau:
- Nhận dạng vùng nội dung
- Thực hiện tách từ với nội dung nhận dạng được.
- Biểu diễn trang web dưới dạng vector:
- Trang web được biểu diễn có dạng như sau:
Với: index là chỉ số của đặc trưng, value là trọng số.
- Số chiều của vector tương đương với số lượng đặc trưng đã xác định.
- Thể hiện các từ trong nội dung văn bản thông qua chỉ số của đặc trưng được xác định từ trước và trọng số là số lần xuất hiện của từ trong văn bản (Điều kiện: từ được xét phải là từ trong danh sách các từ làm đặc trưng)
- Việc biểu diễn trang web trở thành việc thể hiện các đặc trưng thông qua chỉ số và số lần xuất hiện của chúng Các đặc trưng được biểu diễn tăng dần của chỉ số, với các đặc trưng có trọng số bằng 0 thì không cần thể hiện.
- Ghi văn bản ra file dữ liệu input Sau đó, tiến hành phân lớp
Việc phân lớp dữ liệu sử dụng thư viện LibSVM thông qua lớp “SVM- predict” với input là tập dữ liệu cần phân lớp, và output là nhãn dữ liệu được phân lớp.
Các tác nhân và ca sử dụng
5.3.1 Tác nhân của hệ thống
Hình 5.8 Tác nhân hệ thống
Danh sách các tác nhân của hệ thống:
- Hệ thống khách: là các hệ thống thông tin được sử dụng chức năng gợi ý của hệ thống
- Người quản trị nội dung: là người quản lý, cập nhật về nội dung thông tin mà hệ thống xử lý.
- Người quản trị hệ thống: là người quản lý tài khoản và cấp quyền sử dụng cho người dùng.
5.1.2 Xác định ca sử dụng
Hình 5.10 Usecase quản lý thông tin
Đặc tả Usecase thu thập thông tin
Bảng 5.2 Bảng đặc tả Usecase thu thập thông tin
Tên Use Case Thu thập thông tin
Tác Nhân Người quản trị nội dung
Mô tả Usecase cho phép thu thập toàn bộ thông tin về bài viết trên các hệ thống khách Điều kiện tiên quyết
Truy cập chức năng thu thập thông tin
Luồng sự kiện Tác nhân Hệ thống phản hồi
2 Duyệt toàn bộ các hệ thống khách thỏa mãn điều kiện và thực hiện lưu trữ các thông tin thu nhận được Luồng thay thế và các ngoại lệ
Tác nhân Hệ thống phản hồi Điều kiện sau Lưu thành công các thông tin thu nhận được Điều kiện thoát Người dùng tắt chức năng thu thập thông tin
Bảng 5.3 Bảng đặc tả Usecase tái kiểm tra thông tin
Tên Use Case Tái kiểm tra thông tin
Tác Nhân Người quản trị nội dung
Mô tả Usecase cho phép thu thập toàn bộ thông tin về bài viết trên các hệ thống khách Điều kiện tiên quyết Đang thực hiện chức năng thu thập thông tin
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Phát hiện thông tin đã tồn tại
2 Cập nhật lại thông tin
Luồng thay thế và các ngoại lệ
Tác nhân Hệ thống phản hồi Điều kiện sau Cập nhật thành công các thông tin thu nhận được Điều kiện thoát Người dùng tắt chức năng thu thập thông tin
Đặc tả Usecase phân lớp thông tin
Bảng 5.4 Bảng đặc tả Usecase phân lớp thông tin
Tên Use Case Phân lớp thông tin
Tác Nhân Người quản trị nội dung
Mô tả Usecase cho phép phân lớp thông tin thu nhận được Điều kiện tiên quyết Đang thực hiện chức năng thu thập thông tin
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Gọi chức năng phân lớp2a Nếu thông tin đã phân lớp và đánh dấu là không chính xác thực hiện phân lớp lại, nếu đánh dấu là chính xác thì kết thúc 2b Nếu thông tin chưa phân lớp, thực hiện phân lớp và lưu kết quả phân lớp vào cơ sở dữ liệu Luồng thay thế và các ngoại lệ
Tác nhân Hệ thống phản hồi Điều kiện sau Cập nhật thành công kết quả phân lớp thông tin Điều kiện thoát Người dùng tắt chức năng thu thập thông tin
Đặc tả Usecase lấy thông tin gợi ý
Bảng 5.5 Bảng đặc tả Usecase lấy thông tin gợi ý
Tên Use Case Lấy thông tin gợi ý
Tác Nhân Hệ thống khách
Mô tả Usecase cho phép lấy các thông tin gợi ý liên quan đến thông tin đang xét. Điều kiện tiên quyết
Liên kết về thông tin cần gợi ý phải thuộc hệ thống khách hợp lệ
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Gọi chức năng lấy thông tin gợi ý
2a Kiểm tra, thông tin đầu vào đã phân lớp chưa, nếu chưa phân lớp thì gọi chức năng phân lớp cho thông tin đầu vào Nếu phân lớp rồi, thực hiện bước tiếp theo
3 Lấy ra danh sách 10 bản ghi trong cùng lớp thông tin với thông tin đầu vào, trong cùng hệ thống khách và có thời gian cập nhật mới nhất, trả về cho hệ thống khách theo chuẩn XML Bóc tách thông tin từ dữ liệu XML nhận được và đưa ra gợi ý cho người dùng Luồng thay thế và các ngoại lệ
Tác nhân Hệ thống phản hồi Điều kiện sau Lấy được thông tin gợi ý Điều kiện thoát Lấy được thông tin gợi ý
Hủy kết nối trong quá trình thực hiện
Đặc tả Usecase phản hồi về kết quả gợi ý thông tin
Bảng 5.6 Bảng đặc tả Usecase phản hồi về kết quả gợi ý thông tin
Tên Use Case Phản hồi về kết quả gợi ý thông tin
Tác Nhân Người quản trị nội dung, hệ thống khách
Mô tả Usecase cho phép tiếp nhận các phản hồi về kết quả gợi ý thông tin, dựa trên số lượt sử dụng (click) kết quả gợi ý mà hệ thống đưa ra Điều kiện tiên quyết
Thông tin đã được gợi ý
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Click vào thông tin gợi ý
2 Kiểm tra tính hợp lệ của đầu vào Tăng số lượt click thêm 1 đơn vị Luồng thay thế và các ngoại lệ
Tác nhân Hệ thống phản hồi Điều kiện sau Lưu thành công phản hồi Điều kiện thoát Lưu thành công phản hồi
Hủy kết nối trong khi thực hiện chức năng
Đặc tả Usecase thêm thông tin làm dữ liệu học
Bảng 5.7 Bảng đặc tả Usecase thêm thông tin làm dữ liệu học
Tên Use Case Thêm thông tin làm dữ liệu học
Tác Nhân Người quản trị nội dung
Mô tả Usecase cho phép bổ sung thông tin là kết quả phân lớp tự động làm dữ liệu học, tăng thêm tri thức cho máy học Điều kiện tiên quyết
Thông tin đã được gợi ý
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Chọn chức năng thêm dữ liệu học
2 Chọn hệ thống khách cần xem
3 Hiển thị danh sách thông tin đã được gợi ý, có số lượt click từ lớn đến bé
4 Nhấn “thêm dữ liệu học” vào thông tin muốn thêm
5 Cập nhật đánh dấu của người dùng vào cơ sở dữ liệu Luồng thay thế và các ngoại lệ
Tác nhân Hệ thống phản hồi Điều kiện sau Lưu thành công đánh dấu Điều kiện thoát - Lưu thành công đánh dấu
- Người dùng thoát đăng nhập
- Thoát chức năng thêm dữ liệu học
Usecase quản lý người dùng
Hình 5.11 Usecase quản lý người dùng
Đặc tả Usecase cấp tài khoản
Bảng 5.8 Bảng đặc tả Usecase cấp tài khoản
Tên usecase Cấp tài khoản
Tác nhân Người quản trị hệ thống
Mô tả Cho phép người dùng cấp tài khoản người dùng
Tác nhân Hệ thống phản hồi
1 Chọn chức năng quản lý tài khoản
2 Hiện giao diện quản lý tài khoản
4 Nhận nút tạo tài khoản
5 Xác nhận nếu thông tin hợp lệ.
6 Lưu thông tin user vào cơ sở dữ liệu
6 Thông báo tạo tài khoản thành công Luồng thay thế và các ngoại lệ
7a Nếu thông tin không hợp lệ, đưa ra thông báo đăng ký thất bại Điều kiện sau Lưu thông tin tài khoản vào CSDL Điều kiện thoát
Khi tác nhân chọn thoát Khi chức năng thực hiện thành công
Đặc tả Usecase sửa thông tin tài khoản
Bảng 5.9 Bảng đặc tả Usecase sửa thông tin tài khoản
Tên usecase Sửa thông tin tài khoản
Tác nhân Người quản trị hệ thống
Mô tả Cho phép người dùng sửa thông tin tài khoản
Tác nhân Hệ thống phản hồi
1 Chọn chức năng quản lý tài khoản
2 Hiện giao diện quản lý tài khoản tài khoản Chọn tài khoản muốn cập nhật
Hiện thông tin hiện tại của tài khoản cần cập nhật
3 Nhập thông tin cập nhật vào các ô được phép sửa
5a Kiểm tra khuôn dạng dữ liệu.
Nếu thông tin hợp lệ, thông báo sửa thông tin thành công Luồng thay thế và các ngoại lệ
5b Nếu thông tin không hợp lệ, thông báo sửa thông tin thất bại Điều kiện sau Lưu thông tin cập nhật vào CSDL Điều kiện thoát
Khi tác nhân chọn thoát Khi chức năng thực hiện thành công
Đặc tả Usecase thay đổi trạng thái kích hoạt tài khoản
Bảng 5.10 Bảng đặc tả Usecase thay đổi trạng thái kích hoạt tài khoản
Tên usecase Thay đổi trạng thái kích hoạt
Tác nhân Người quản trị hệ thống
Mô tả Cho phép quản trị thực hiện chức năng thay đổi trạng thái kích hoạt tài khoản
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Chọn chức năng quản lý người dùng
2 Hiện giao diện quản lý người dùng
3 Tìm người dùng muốn kích hoạt/hủy kích hoạt
5a Cập nhật thông tin User Nếu thông tin hợp lệ thông báo xử lý thành công.
Luồng thay thế và các ngoại lệ
5b Nếu thông tin không hợp lệ, thông báo lỗi. Điều kiện sau Lưu thông tin kích hoạt tài khoản vào CSDL Điều kiện thoát
Khi tác nhân chọn thoátKhi chức năng thực hiện thành công
Đặc tả Usecase đổi mật khẩu
Bảng 5.11 Bảng đặc tả Usecase đổi mật khẩu
Tên usecase Đổi mật khẩu
Mô tả Cho phép người dùng đổi mật khẩu tài khoản
Tác nhân Hệ thống phản hồi
1 Chọn chức năng đổi mật khẩu
2 Hiện giao diện đổi mật khẩu
3 Nhập thông tin yêu cầu
5a Kiểm tra khuôn dạng thông tin.
Hệ thống cập nhật mật khẩu mới User trong CSDL và thông báo đổi mật khẩu thành công. Luồng thay thế và các ngoại lệ
5b Nếu sai thì hệ thống thông báo lỗi Điều kiện sau
Lưu thông tin mật khẩu vào CSDL Điều kiện thoát
Khi tác nhân thoát đăng nhập Khi tác nhân chọn thoát Khi chức năng thực hiện thành công
Đặc tả Usecase đăng nhập
Bảng 5.12 Bảng đặc tả Usecase đăng nhập
Tên usecase Đăng nhập tài khoản
Mô tả Cho phép người dùng đăng nhập tài khoản
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Chọn chức năng đăng nhập tài khoản
2 Hiện giao diện đăng nhập
3 Nhập tài khoản và mật khẩu
5a Kiểm tra tính chính xác của của tài khoản và mật khẩu. Nếu thông tin đúng thì thông báo đăng nhập thành công Luồng thay thế và các ngoại lệ
5b Nếu hệ thống xác nhận thông tin không hợp lệ, đưa ra thông báo sai tài khoản hoặc mật khẩu Điều kiện sau Đăng nhập vào hệ thống, lấy ra thông tin User, lưu ID vào
Session. Điều kiện thoát Khi tác nhân chọn thoát
Khi chức năng thực hiện thành công
Đặc tả Usecase đăng xuất
Bảng 5.13 Bảng đặc tả Usecase đăng xuất
Tên usecase Đăng xuất tài khoản
Mô tả Cho phép người dùng đăng xuất tài khoản
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Chọn chức năng đăng xuất tài khoản
2 Xóa Session thông tin tài khoản
3 Kiểm tra nếu xóa thành công thì hiện giao diện đăng nhập
5a Hiện giao diện đăng nhập tài khoản Luồng thay thế và các ngoại lệ Điều kiện sau Điều kiện thoát Khi tác nhân chọn thoát
Khi chức năng thực hiện thành công
Đặc tả Usecase phân quyền
Bảng 5.14 Bảng đặc tả Usecase phân quyền
Tên usecase Phân quyền cho người dùng
Mô tả Cho phép quản trị thực hiện chức năng phân quyền cho người dùng.
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Chọn tác vụ phân quyền
2 Hiện giao diện phân quyền
3 Tìm user cần phân quyền
5 Hiện giao diện phân quyền cho User đã chọn
6a Kiểm tra thông tin Nếu đúng thì hệ thống thông báo cập nhật thành công. Luồng thay thế và các ngoại lệ
6b Nếu thông tin không hợp lệ thông báo lỗi. Điều kiện sau Cập nhật thành công người dùng Điều kiện thoát
Khi tác nhân chọn thoát Khi chức năng thực hiện thành công
Usecase quản lý hệ thống khách
Hình 5.12 Usecase quản lý hệ thống khách
Đặc tả Usecase Hệ thống khách đăng ký sử dụng
Bảng 5.15 Bảng đặc tả Usecase hệ thống khách đăng ký sử dụng
Tên usecase Hệ thống khách đăng ký sử dụng
Tác nhân Người quản trị nội dung
Mô tả Usecase cho phép đăng ký sử dụng cho hệ thống khách
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Chọn chức năng quản lý hệ thống khách
2 Nhập thông tin về hệ thống khách và nhấn nút thêm
3 Kiểm tra tính hợp lệ của thông tin đầu vào và lưu vào cơ sở dữ liệu
Luồng thay thế và các ngoại lệ
3a Nếu thông tin không hợp lệ, báo lỗi và thông báo thao tác không thành công Điều kiện sau Điều kiện thoát Thao tác thực hiện thành công
Người dùng thoát đăng nhập
Người dùng đóng chức năng quản lý hệ thống khách
Đặc tả Usecase cập nhật thông tin
Bảng 5.16 Bảng đặc tả Usecase cập nhật thông tin hệ thống khách
Tên usecase Cập nhật thông tin hệ thống khách
Tác nhân Người quản trị nội dung
Mô tả Usecase cho phép cập nhật thông tin cho hệ thống khách
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Chọn chức năng quản lý hệ thống khách
2 Hiện danh sách hệ thống khách Nhấn nút sửa cạnh hệ thống khách cần sửa
3 Hiển thị các thông tin hiện tại của hệ thống khách vào các ô dữ liệu
4 Nhập thông tin cần cập nhật và nhấn nút lưu
5 Kiểm tra tính hợp lệ của dữ liệu và lưu lại thông tin cập nhật
Luồng thay thế 5a Nếu thông tin không hợp lệ, và các ngoại lệ báo lỗi và thông báo thao tác không thành công Điều kiện sau Điều kiện thoát Thao tác thực hiện thành công
Người dùng thoát đăng nhập Người dùng đóng chức năng quản lý hệ thống khách
Đặc tả Usecase gia hạn thời gian sử dụng
Bảng 5.17 Bảng đặc tả Usecase gia hạn thời gian sử dụng
Tên usecase Gia hạn thời gian sử dụng
Tác nhân Người quản trị nội dung
Mô tả Usecase cho phép gia hạn thời gian sử dụng cho hệ thống khách
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Chọn chức năng quản lý hệ thống khách
2 Hiện danh sách hệ thống khách Nhấn nút sửa gia hạn cạnh thống khách cần gia hạn
3 Hiển thị giao diện cho phép nhập thời hạn mới
4 Nhập thông tin cần gia hạn và nhấn nút lưu
5 Kiểm tra tính hợp lệ của dữ liệu và lưu lại thông tin cập nhật
Luồng thay thế 5a Nếu thông tin không hợp lệ, và các ngoại lệ báo lỗi và thông báo thao tác không thành công Điều kiện sau Điều kiện thoát Thao tác thực hiện thành công
Người dùng thoát đăng nhập Người dùng đóng chức năng quản lý hệ thống khách
Đặc tả Usecase kiểm duyệt hệ thống khách
Bảng 5.18 Bảng đặc tả Usecase kiểm duyệt hệ thống khách
Tên usecase Kiểm duyệt hệ thống khách
Tác nhân Người quản trị nội dung
Mô tả Usecase cho phép cập nhật trạng thái kiểm duyệt hệ thống khách
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Chọn chức năng quản lý hệ thống khách
2 Hiện danh sách hệ thống khách Nhấn checkbox thể hiện trạng thái kiểm duyệt của hệ thống khách
3 Lưu lại cập nhật của người dùng Luồng thay thế và các ngoại lệ Điều kiện sau Điều kiện thoát Thao tác thực hiện thành công
Người dùng thoát đăng nhậpNgười dùng đóng chức năng quản lý hệ thống khách
Đặc tả Usecase xem danh sách hệ thống khách
Bảng 5.19 Bảng đặc tả Usecase xem danh sách hệ thống khách
Tên usecase Xem danh sách hệ thống khách
Tác nhân Người quản trị nội dung
Mô tả Usecase cho xem danh sách hệ thống khách
Luồng sự kiện Tác nhân Hệ thống phản hồi
1 Chọn chức năng quản lý hệ thống khách
2 Hiện danh sách hệ thống khách Luồng thay thế và các ngoại lệ Điều kiện sau Điều kiện thoát Thao tác thực hiện thành công
Người dùng thoát đăng nhập
Biểu đồ lớp
5.2.1 Biểu đồ lớp các thực thể
Hình 5.13 Biểu đồ lớp các thực thể
5.2.2 Biểu đồ lớp tầng Data
Hình 5.14 Biểu đồ lớp tầng Data
5.2.3 Biểu đồ lớp tầng nghiệp vụ
Hình 5.15 Biểu đồ lớp tầng nghiệp vụ
Thiết kế cơ sở dữ liệu
5.3.1 Nguyên tắc thiết kế cơ sở dữ liệu
Cơ sở dữ liệu được thiết kế theo nguyên tắc normal Text:
- Chuyển các lớp tầng Entity thành bảng dữ liệu
- Chuyển quan hệ giữa các lớp thành liên kết dữ liệu
- Đặt mã của các đối tượng làm khóa chính.
Hình 5.16 Mô hình quan hệChi tiết các bảng trong mô hình quan hệ được đặc tả trong phần phụ lục của quyển báo cáo này
Tổng quan về kiểm thử hệ thống
6.1.1 Lý do kiểm thử hệ thống
Người ta thường nói một chương trình mới được tạo ra chứa vài lỗi trong 100 dòng Trong những dòng này, lỗi từ quá trình lập trình và lỗi từ quá trình thiết kế đều có cả Nếu 1 chương trình chứa lỗi được dùng để vận hành một hệ thống trực tuyến, thì những hư hỏng nghiêm trọng phát sinh ra không chỉ ảnh hưởng tới công ty vận hành hệ thống đó mà còn ảnh hưởng cả tới công chúng lớn bên ngoài.
Do đó việc kiểm thử phần mềm phải được tiến hành trước khi chuyển giao sản phẩm công nghiệp Việc kiểm thử phần mềm cũng phải được tiến hành theo một trình tự kiểm thử đặc biệt để kiểm chứng rằng chương trình và hệ thống mà nó điều khiển có thể vận hành tương ứng với các đặc tả Mặc dù chúng ta không thể đảm bảo loại bỏ hoàn toàn hết lỗi trong chương trình nhưng chúng vẫn có thể làm giảm số lỗi đó tới mực tối thiểu nhất nếu chúng ta kiểm thử chương trình theo cách chính xác, hiệu quả.
Một hoạt động mang tính sống còn trong các dự án sản xuất hoặc gia công phần mềm, đó là kiểm tra (Testing) Người làm phần mềm chắc hẳn không ai nghi ngờ vai trò quan trọng của nó, tuy nhiên không phải ai (cả trong ngành và ngoài ngành) cũng hiểu rõ hoạt động này Bản thân công việc kiểm thử phần mềm cũng là một lĩnh vực hoạt động độc lập và khá “hấp dẫn”. Cùng với các dự án gia công sản xuất phần mềm, hiện cũng có khá nhiều dự án mà nội dung công việc chỉ là kiểm tra những phần mềm đã được khách hàng phát triển sẵn.
Do đó lý do kiểm thử hệ thống gợi ý thông tin đó là:
- Muốn nhìn thấy phần mềm như một phần tử của hệ thống hoạt động.
- Hạn chế chi phí cho các thất bại do lỗi gây ra sau này.
- Có kế hoạch nâng cao chất lượng trong suốt quá trình phát triển.
6.1.2 Mục đích kiểm thử hệ thống
Thực tế cho thấy kiểm thử phần mềm là công việc mà bất cứ người nào từng tham gia phát triển phần mềm đều biết và từng làm Theo nghĩa thông thường nhất, kiểm thử phần mềm bao gồm việc "chạy thử" phần mềm hay một chức năng của phần mềm, xem nó "chạy" đúng như mong muốn hay không Việc kiểm tra này có thể thực hiện từng chặng, sau mỗi chức năng hoặc module được phát triển, hoặc thực hiện sau cùng, khi phần mềm đã được phát triển hoàn tất
Kiểm thử phần mềm đứng ở vị trí hết sức nhạy cảm, nó là bước đệm giữa giai đoạn xây dựng phần mềm và sử dụng phần mềm, trước khi giao sản phẩm hoàn chỉnh cho khách hàng
Do đó kiểm thử một sản phẩm phần mềm là xây dựng một cách có chủ đích những tập dữ liệu và dãy thao tác nhằm đánh giá một số hoặc toàn bộ các tiêu chuẩn của sản phẩm phần mềm đó.
Thử nghiệm có hai mục đích: chỉ ra hệ thống phù hợp với đặc tả và đưa ra được các khuyết tật của hệ thống.
- Xây dựng hệ thống xử lý trung tâm đáp ứng khả năng gợi ý các tin tức báo điện tử sử dụng phương pháp học máy cho người dùng từ các hệ thống khách (Client).
- Tìm ra lỗi, khắc phục lỗi để phát triển phần mềm được mô tả trong yêu cầu chung của chương trình.
6.1.3 Vai trò kiểm thử hệ thống
Kiểm thử là pha quan trọng trong quá trình phát triển hệ thống, giúp người xây dựng hệ thống và khách hàng thấy được hệ thống mới đã thoả mãn những yêu cầu đã đề ra chưa, là tiến trình nhằm phát hiện lỗi bằng cách xem xét lại đặc tả thiết kế và mã hoá.
Kiểm thử tốt sẽ giảm chi phí phát triển và tăng độ tin cậy của phần mềm.
6.1.4 Mục tiêu kiểm thử hệ thống
Tạo ra các ca kiểm thử để chỉ ra lỗi của phần mềm
Có 1 chương trình tốt với chi phí xây dựng ít.
6.1.5 Môi trường và công cụ kiểm thử
Môi trường kiểm thử: Lấy các link tin tức từ nhiều nguồn khác nhau Công cụ kiểm thử
6.1.6 Nhân sự thực hiện kiểm thử
Bảng 6.20 Công việc thực hiện của các thành viên
STT Họ và tên MSSV Nhiệm vụ
- Re-test (Nếu có lỗi)
2 Đồng Văn Tài 11A100176 - Sefl Test
Ngô Thị Lệ Thoa 11A100242 - Lập TestPlan
- Re-Test (Nếu có lỗi)
Kế hoạch kiểm thử
Kiểm thử hệ thống gợi ý thông tin dựa trên kỹ thuật phân lớp văn bản. Đặt vấn đề và yêu cầu:
Khi có số lượng X link tin tức từ nhiều nguồn, với X là rất lớn, dùng để Test chương trình Link đưa vào chạy không phải chạy tự động, mà chúng ta phải Test bằng cách cho chạy bằng tay với tất cả các link tin đó Nhưng nếu phải chạy Test hết tất cả số link vốn có thì mất rất nhiều thời gian Vậy làm thế nào để chứng minh được chương trình đạt chuẩn (Điều kiện: cứ test đúng từ 60% trở lên số link ước lượng test là chương trình đạt chuẩn Với độ tin cậy đặt ra là 95%).
- Áp dụng lý thuyết toán “ Xác suất thống kê” (cụ thể là về phần ước lượng kiểm định để chứng minh cho bài toán).
- Dựa vào chuyên gia để tính toán, đếm lấy, cân nhắc sao cho phù hợp nhất với bài toán mình đưa ra.
Hình 6.17 Quy trình kiểm thử
Thực hiện kiểm thử
Khái quát những kiến thức cơ bản về chọn mẫu
Trình tự tiến hành chọn mẫu:
- Bước 1: Xác định mục đích điều tra
- Bước 2: Xác định tổng thể có liên quan
- Bước 3: Xác định kích thước mẫu và phương pháp chọn mẫu
- Bước 4: Phương pháp thu thập và tính toán thông tin
- Bước 5: Suy rộng các đặc trưng của tổng thể
- Bước 6: Rút ra kết luận về tổng thể
Nội dung điều tra chọn mẫu
Lý thuyết điều tra về chọn mẫu là vấn đề phức tạp trong lý thuyết thống kê Nó liên quan nhiều đến lý thuất xác suất và thống kê toán học Sau đây là một số cách chọn mẫu cơ bản:
- Chọn mẫu ngẫu nhiên: Là phương pháp chọn mẫu hoàn toàn ngẫu nhiên, trong đó các đơn vị mẫu được chọn bằng cách bốc thăm, quay số hoặc theo bẳng số ngẫu nhiên và có thể chọn một lần (không lặp), chọn nhiều lần (chọn có lặp)
- Chọn máy móc: là phương pháp chọn mẫu hoàn toàn máy móc, nghĩa là cứ sau một khoảng cách nhất định người ta lại chọn một đơn vị mẫu.
- Chọn phân tổ: là phương pháp chọn mẫu từ các tổ Theo cách chọn này, số đơn vị mẫu của từng tổ đã có tính chất đại diện cao cho từng tổ và tổng thể mẫu, cũng có tính chất đại biểu cao cho tổng thể chung.
- Chọn cả khối: là phương pháp tổ chức chọn mẫu, trong đó số đơn vị mẫu được chọn không phải là lẻ tẻ mà là cùng một lúc chọn ra một khối đơn vị.
Hướng giải quyết cho đề tài của nhóm
Với lý thuyết chọn mẫu và sau quá trình tìm hiểu, nhóm chúng em đã xây dựng các bước để tiến hành chọn mẫu, cụ thể gồm các bước sau:
- Bước 1: Phân loại các bản tin theo các chủ đề (dân trí, y tế, giáo dục, …)
- Bước 2: Tìm và liệt kê các đặc trưng của từng bản tin Sau đó, dựa vào các đặc trưng, loại bỏ các bản tin không phù hợp yêu cầu của từng chủ đề.
- Bước 3: So sánh số bản tin của từng chủ đề đã được lựa chọn ở Bước 2, lấy ra chủ đề có số lượng bản tin ít nhất.
- Phép so sánh (SS1): (Số lượng bản tin của chủ đề có ít nhất * tổng số chủ đề có) (P1) với Tổng số bản tin cần lấy khảo sát (P2)
- Nếu P1 < P2 : Lấy mỗi chủ đề số lượng bản tin bằng số lượng bản tin của chủ đề có số lượng ít nhất, tiếp tục làm phép lấy theo chủ đề có bản tin min, đến khi đủ số lượng cần lấy.
- Nếu P1 > P2: đầu tiên cứ lấy mỗi chủ đề số lượng bằng số lượng bản tin của chủ đề ít nhất, sau đó loại ngẫu nhiên đến khi lấy được đủ số bản ghi theo yêu cầu nghiên cứu.
- Quá trình này được thực hiện như sau
Hình 6.18 Quá trình lựa chọn mẫu
6.3.2 Thực hiện kiểm thử từng Module/ Chức năng
Sau quá trình phân tích hệ thống, nhóm quyết địch sử dụng các mức độ kiểm thử đó đối với bài toán là: Kiểm thử đơn vị, kiểm thử hệ thống và Kiểm thử mức chấp nhận
- Kiểm thử đơn vị hay còn được gọi là kiểm thử thành phần, đề cập đến việc kiểm thử chức năng từng phần của mã, thường ở mức độ chức năng Trong một môi trường hướng về đối tượng thì điều này thường là cấp độ lớp, và các kiểm thử đơn vị tối thiểu bao gồm hàm dựng và hàm hủy
- Kiểm thử đơn vị là một quá trình phát triển phần mềm có liên quan đến ứng dụng đồng bộ của một loạt các chiến lược phòng ngừa phát hiện lỗi và để giảm thiểu rủi ro, thời gian và chi phí Nó được thực hiện bởi kỹ sư hay nhà phát triển trong suốt giai đoạn xây dựng của vòng đời phát triển phần mềm Không chỉ tập trung vào việc đảm bảo chất lượng truyền thống mà phải gia tăng nó lên vì thế kiểm thử đơn vị có mục đích loại bỏ những lỗi cấu trúc trước khi mã hóa rồi mới thúc đẩy việc quản lý chất lượng Chiến lược này nhằm nâng cao chất lượng cũng như hiệu quả của phần mềm trong tiến trình quản lý và phát triển chung.
Kiểm thử hệ thống: giúp xác minh rằng một hệ thống được tích hợp có đáp ứng đầy đủ các yêu cầu hay không Ngoài ra, kiểm thử phần mềm phải đảm bảo rằng các chương trình hoạt động như kỳ vọng, không còn bị phá hủy hay lỗi phần nào đó trong môi trường hoạt động của nó hoặc không gặp sự cố khi hoạt động với tiến trình khác (điều này bao gồm bộ nhớ chia sẻ không bị hỏng, nguồn tài nguyên không bị dư thừa hay chiếm dụng quá mức và không bị đẩy ra khi hoạt động song song các tiến trình).
Kiểm thử mức chấp nhận
Cuối cùng hệ thống được giao cho người dùng để kiểm thử mức chấp nhận.
Test phương thức Test DetectHTMLContent methods
Mục đích: Nhận dạng được tiêu đề và tổng số điểm cho tiêu đề Công cụ: phần mềm chạy sẵn
Hình thức test: truyền link
TestData (Ví dụ tương ứng)
Bảng 6.21 Kết quả test nhận dạng tiêu đề
Test chức năng nhận dạng vùng bóc tách
Mục đích: Lấy ra được tiêu đề và nội dung đúng của bài viết
Công cụ: phần mềm chạy
Hình thức test: truyền link
- Tổng số TestCase lấy : 250 TestCaseID
- Trạng thái : Pass, Fail, Warning (trường hợp lấy cả tiêu đề khi lấy phần nội dung).
- Một số ví dụ: o Nguồn Test Warning
Chức năng: Nhận dạng vùng bóc tách
Bảng 6.3 Kết quả Test Nhận dạng vùng bóc tách
Tổng số case Fail Tỉ lệ đạt
Test lần 2 (Test hồi quy) 49 80,16194%
Báo cáo và đánh giá
6.4.1 Chứng minh chương trình đạt chuẩn
- Theo lý thuyết xác suất thống kê, với mẫu có số lượng rất lớn, thì việc lựa chọn mẫu để kiểm định sẽ lấy số lượng từ 30 trở lên, tùy thuộc vào chuyên gia để có thể xác định và ước lượng khoảng tin cậy cho bài toán của mình.
- Với bài toán của đề tài nhóm chúng em, qua quá trình khảo sát và nghiên cứu, chúng em đã quyết định chọn 50 nguồn tin để test, với mỗi nguồn tin sẽ lấy 5 link bất kỳ của các chuyên mục.
Còn p là tỉ lệ số link đạt trong tổng thể
Với độ tin cậy là 95% => 95% = 1- ∝
- Áp dụng công thức: Ước lượng tỉ lệ đạt
Khoảng tin cậy đối xứng cho tỉ lệ p là: p ∈ (0,754791; 0,653209) o Với p 1 = 0,754791, thì số link đạt trong 250 link test là: n 1 = p 1 * 250 = 0,754791 * 250 ≈ 179 o Với p 2 = 0,653209, thì số link đạt trong 250 link test là: n 2 = p 2 * 250 = 0,653209 * 250 ≈ 213
Khoảng tin cậy cho số link đạt là: (179; 213)
Điều cần chứng minh là đúng
Chương trình khá là khó để bao quát được tổng thể khi phải lấy link từ nhiều nguồn được code dưới nhiều cách để thẻ khác nhau (tức khung dạng đặt tiêu đề và nội dung viết khác nhau, không theo một chuẩn nào cả) Chính vì thế, qua kết quả kiểm thử, chương trình đã đặt tỉ lệ trên 60% là một kết quả cũng khá là khả quan và có tính thuyết phục cao Và cũng đã đạt được mức quy định đề ra ban đầu.
- Tiếp theo thì chỉ có thể là chúng ta cùng nhau xây dựng tiếp và phát triển tiếp đưa ra được công thức chung nhất cho phần mềm chạy để đặt với tỉ lệ lớn hơn con số đã test được.
- Cải thiện số case Fail đặt tới mức tối thiểu để nâng mức của hệ thống lên.