Có nhiều giải thuật lựa chọn đặc trưng cho bài toán phân loại. Mục tiêu chung của các hướng tiếp cận đều là xây dựng mô hình để lựa chọn được những đặc trưng tốt nhất có giá trị biểu diễn tài liệu, số lượng đặc trưng đủ để không gian đặc trưng không quá lớn ảnh hưởng đến tốc độ xử lý, nhưng cũng không quá nhỏ ảnh hưởng đến độ chính xác của giải thuật phân loại.
Theo hướng tiếp cận vectơ xây dựng mô hình phân loại, thì mỗi tài liệu được biểu diễn bằng một vecto trong không gian đặc trưng. Với cách biểu diễn theo mô hình vecto này ở khía cạnh nào đó người ta còn gọi là túi các từ - bag of word
(BOW), tức là không có thứ tự hay cấu trúc giữa các đặc trưng. Và như vậy theo hình thức biểu diễn này thì mỗi nhóm phân loại sẽ được đặc trưng bởi một vecto.
Để trích chọn được đặc trưng từ các tài liệu là cơ sở xây dựng vecto đặc trưng, mỗi tài liệu huấn luyện đều phải qua một số bước gồm có: tiền xử lý, token, loại bỏ
stopword, lược bỏ hậu tố (stemming) trước khi áp dụng giải thuật chọn đặc trưng.
4.2.4.1 Tách token
Token là một dãy tuần tự các ký tự trong bảng chữ cái, hoặc một dãy tuần tự các con số (một chữ số có chứa dấu chấm là dấu chấm thập phân được xem như là một token), hoặc một ký tự không nằm trong bảng chữ cái (như dấu chấm câu, dấu ngoặc kép, hoặc các ký tự mở rộng,...). Nhiệm vụ của bộ phận tách token là chia văn bản đầu vào (dãy các ký tự) ra thành các token rời rạc, các token này được dùng để làm đầu vào cho bộ phận tìm kiếm từ loại. [3]
Như vậy, từ một văn bản đưa vào, đầu tiên bộ phận tách token sẽ dựa vào các khoảng trống có trong văn bản để tách ra thành các chuỗi con, những chuỗi con này có thể là một token theo định nghĩa ở trên, cũng có thể là hợp của nhiều token. Chính vì thế cho nên chúng ta không thể sử dụng ngay được mà mỗi chuỗi con như vậy, chúng ta phải xác định xem nó có đúng là token hay không, nếu đúng thì sử dụng nó để đưa vào cho bước tiếp theo, nếu không thì chúng ta phải chia nhỏ nó ra thành các token trước khi cho vào các tầng sau. Ví dụ that’s không phải là một token mà gồm có hai token là that và is. Đó là do người ta sử dụng tỉnh lược. Trong một số trường hợp khác do dữ liệu vào sai quy cách như “drive.Specify” thì chúng ta cũng phải tách thành ba token là “drive”, “.” và “specify”. Trường hợp “e.g” thì chúng ta không thể tách ra vì đó lại là một token, trong trường hợp này ta phải có một từ điển lưu trữ các trường hợp đặc biệt.
Thuật toán mô tả tách văn bản thành token như sau:[3]
Bước 2: Nếu chuỗi con không tồn tại thì kết thúc
Bước 3: Kiểm tra xem chuỗi con tồn tại trong từ điển hay không. Nếu có trong từ điển thì ta được một token, nếu không thì qua bước 5
Bước 4: Tách chuỗi con thành n chuỗi con (n>=1) nhờ vào các dấu câu trong chuỗi con, Nếu tồn tại một chuỗi con có trong từ điển thì ta được n token nếu không thì ta được 1 token.
Bước 5: quay lại bước 1
4.2.4.2 Loại bỏ stop word
Tiến trình này giúp tiết kiệm tài nguyên hệ thống, giảm bớt số đặc trưng trong không gian vecto. Những đặc trưng này ít có ý nghĩa trong biểu diễn, tìm kiếm hay các kỹ thuật liên quan đến xử lý ngôn ngữ tự nhiên. Bước loại bỏ stopword hiện không còn là vấn đề lớn do khả năng tính toán, bộ nhớ máy tính ngày càng được cải thiện. Danh sách các stopword bao gồm lớp các từ ít ý nghĩa như các định từ (articles: a, the ...), liên thừ (conjunction: and, but...), thán từ (interjection: oh, but, ..), giới từ (preposition: in, over), .... Bước loại bỏ stopword chỉ đơn giản là thuật toán so sánh từ cần xem xét với danh sách có sẵn stopword, nếu có trong danh sách thì loại bảo và ngược lại. và mô tả đơn giản như sau:
Thuật toán loại bỏ stopword
Input: {Ti} là tập các term trong tài liệu diD, S: Danh sách các stopword
Output: {T’i} sao cho t’jS
Giải thuật:
Foreach tj Ti
If tjS then Ti/tj
Return Ti
(Danh sách stopword S được trình bày tại phụ lục I của luận văn này)
4.2.4.3 Lược bỏ hậu tố (stemming)
Lược bỏ hậu tố là tiến trình đặc biệt hữu ích trong các bài toán xử lý ngôn ngữ tự nhiên của máy tính. Với một tập hợp các văn bản, mỗi văn bản được mô tả bởi các từ (word). Theo các cách biểu diễn văn bản ở trên đây (theo mục 4.2.3) thì mỗi
văn bản được đặc trưng bằng một vecto trong không gian đặc trưng. Tuy nhiên trong ngôn ngữ học, nhiều từ có cùng gốc từ thì thường có nghĩa tương tự nhau ví dụ: computer, computerize, computerization, computerise ... Để cải thiện tốc độ xử lý hệ thống thì cần thiết phải giảm các nhóm từ tương tự nhau về thành một từ đơn. Trong ví dụ trên chỉ cần từ compute đại diện cho nhóm từ trên là đủ. Việc này thực hiện đơn giản bằng cách loại bỏ các hậu tố -er, - ise, - ion, -r .... Hơn nữa tiến trình lược bỏ hậu tố sẽ giảm số lượng đặc trưng trong không gian vecto và như vậy giảm kích thước và độ phức tạp tính toán của hệ thống.[16]
Thuật toán lược bỏ hậu tố (stemming suffix) được M.F.Porter giới thiệu năm 1980[16].
4.2.4.4 Chọn đặc trưng
Trong quá trình phân loại tài liệu, số lượng các thuật ngữ trong tập mẫu thường rất lớn, hơn nữa chúng ta không thể sử dụng tất cả các thuật ngữ này để biểu diễn cho một tài liệu và thuật toán học phân loại. Một khía cạnh khác các thuật ngữ không liên quan hoặc dư thừa ảnh hưởng đến độ chính xác và tốc độ xử lý. Sau bước lược bỏ hậu tố ta có một tập các thuật ngữ. Ta có thể dùng tập thuật ngữ này làm tập các đặc trưng cho không gian tuy nhiên trong rất nhiều trường hợp người ta xây dựng một tập con tối ưu các đặc trưng dùng để biểu diễn tài liệu cũng như các nhóm tài liệu. Việc lựa chọn đặc trưng không phải là quá trình đơn giản. Với quá ít đặc trưng thì việc đặc trưng hóa tài liệu, nhóm tài liệu không đảm bảo chính xác, mặt khác việc lựa chọn quá nhiều đặc trưng thì dễ gây ra nhiễu và tăng tài nguyên xử lý của máy tính [17],[19].
Thuật toán lựa chọn đặc trưng được chia làm hai loại: bao gói và lọc [13]. Thuật toán bao gói tính toán đến sự thực thi của giải thuật học trong quá trình tập con tối ưu được chọn. Nó đo tính chất của tập các thuộc tính bằng sự thực thi của thuật toán hay kết quả phụ thuộc vào thuật toán. Với hướng tiếp cận này, vấn đề chính của các hệ thống là tài nguyên tính toán. Ngược lại với thuật toán bao gói thì thuật toán lọc quan tâm tới trọng lượng của từng thuật ngữ và sử dụng công thức xếp hạng để lựa chọn thuật ngữ mà không quan tâm tới thuật toán học. Nó phụ
thuộc vào tập các tài liệu chứ không phụ thuộc vào bất cứ thuật toán học nào. Trên thực tế thuật toán lọc được sử dụng nhiều hơn cho bài toàn phân loại tài liệu.
Đầu vào của giải thuật lọc này là tập không gian các thuật ngữ có được từ tập các tài liệu sau khi đã loại bỏ stopword, lược bỏ hậu tố. Thuật toán sau dựa trên mô hình vecto và lý thuyết tf-idf. Từ công thức (4.14) thì ta tính được trọng số wcil của thuật ngữ thứ l trong lớp ci ϵ C. Trên toàn tập huấn luyện thì trọng số này được tính bởi hàm CW(l):
CW(l) = ∑| | ( ) (4.15)
Trong đó | | là số lượng lớp của C, P(ci) là phân bố xác xuất của lớp ci trong sưu tập huấn luyện.
Dựa vào công thức (4.15) ta có được một bảng thống kê các thuật ngữ với trọng số tương ứng của nó trong sưu tập. Sắp xếp các trọng số này từ trên xuống dưới và đưa ra một ngưỡng ε. Thuật ngữ nào có trọng số lớn hơn ngưỡng sẽ được chọn. Còn trường hợp khác sẽ bị loại bỏ. Theo phương pháp này ta đã đưa ra được giải pháp chọn được tập con thuật ngữ từ tập hợp tất cả các thuật ngữ của sưu tập tài liệu.
Không gian đặc trưng của bài toán phân loại tài liệu thường rất lớn, nhất là đối với bài toán phân loại tổng quát. Với các bài toán phân loại theo chuyên ngành hay chủ đề thì không gian đặc trưng giảm đi. Do vậy tùy vào từng bài toán cụ thể mà mức độ không gian đặc trưng lớn hay nhỏ hay ngưỡng chọn đặc trưng sẽ khác nhau.