Text Mining với Business Intelligence Development Studio của MS SQL SERVER
Nguyễn Văn Chức – chuc.nv@due.edu.vn
Bài viết này giới thiệu qui trình thực hiện một Text mining Model (nhiệm vụ cụ thể trong bài viết này là Text classification) với công cụ BIDS của MS SQL SERVER.
Dataset sử dụng trong bài viết này được lấy từ flat file NGArticles.txt chứa các bài viết thảo luận (Article) được đưa lên trên 1 forum. Các bài viết này thuộc về 5 chủ đề (NewsGroup) là comp.graphics, comp.os.ms-windows.misc,comp.windows.x,comp.sys.mac.hardware và comp.sys.ibm.pc.hardware.(Download file NGArticle.txt tại đây)
Mỗi tin tức (News Article) được Post lên gồm 3 phần là ID, NewsGroup và ArticleText. Nhiệm vụ là xây dựng Data Mining Model để phân lớp cho các Tin tức vào các nhóm chủ đề đã biết.
1. Chuẩn bị dữ liệu cho Model
Vì file NGArticles.txt là file Flat nên ta phải chuyển đổi nội dung file này vào trong Database như sau :
1.1. Tạo một Database có tên “DTM” trên MS SQL SERVER
1.2. Import nội dung Flat file NGArticles.txt vào DTM như sau:
- Right click the database, TDM, and Taskà Import.
- Source: NGArticles.txt
- Header row delimiter: @@@@
- Check “Column names in the first data row”
- Row delimiter: @@@@
- Column delimiter: &&&&
- Column property for “ArticleText”: Change DataType to DT_NTEXT
Destination:
- Server: local SQL server (localhost)
- Database: TDM
- Table: NGArticle
Kết quả sau khi chuyển dữ liệu từ Flat File NGArticles.txt sau Table NGArticles (gồm 5000 Records) như sau
2. Tạo một từ điển (Dictionary) cho cho Model
2.1. Khởi động BIDS và tạo một Integration Services project mới đặt tên “TextDataMining”.
2.2. Để thuận lợi, ta đổi tên của Integration Services project thành “PrepareArticles”
2.3. Tạo mới một SSIS package
2.4. Đổi tên thành BuildDictionary.dtsx
2.5. Trong Data Flow tab thêm một Data Flow task mới
2.6. Trong Data Flow task, thêm một “OLE DB Source”
· Connection: Tạo một Connection mới localhost.TDM
· Table: NGArticles
· Columns: ArticleText
2.7. Thêm một “Term Extraction” mới và connect từ OLE DB Source
· Term Type: Noun and Noun Phrase
· Score Type: TFIDF (Term Frequency–Inverse Document Frequency- cho biết độ quan trọng của từ hay thuật ngữ (term) trong documents. Ví dụ trong 1 document có 100 từ và từ "cow" xuất hiện 3 lần, vậy TF(Term Frequency) của từ "cow" là 3/100= 0.03. Bây giờ giả sử ta có 10 triệu tài liệu và số lần từ "cow" xuất hiện trong 10 triệu tài liệu đó là 1000. Vậy ta có IDF (Inverse Document Frequency) = log(10 000 000/1000)=4. Khi đó TFIDF của từ "cow" được tính = 0.03x4= 0.12
· Parameters: Frequency=10, Length=2
2.8. Thêm bộ “Sort” và connect từ “Term Extraction”.
· Sort “Term” in ascending order
· Don’t pass through Score column
2.9. Thêm một “OLE DB Destination” mới và connect từ “Sort”.
· Connection: localhost.TDM
· Click “New” and name it “Dictionary”
· Mappings, connect the column, “Term”
2.10. Bấm F5 để thực hiện, trong TDM có table “Dictionary”
3. Tạo một term vectors
3.1. Tạo mới một SSIS package
3.2. Đổi tên lại thành:BuildTermVectors.dtsx
3.3. Trong Data Flow tab tạo một Data Flow task mới
3.4. Tạo một “OLE DB Source”
· Connection: localhost.TDM
· Table: NGArticles
· Columns: ID, ArticleText
3.5. Thêm “Term Lookup” và connect từ OLE DB Source
· Reference table: Dictionary
· PassThru column: ID
· Lookup input column: ArticleText
3.6. Thêm một “Sort” connect từ “Term Lookup”.
· Sort “ID” in ascending, “Term” in ascending, no duplicates
3.7. Thêm một “OLE DB Destination” connect từ “Sort”.
· Connection: localhost.TDM
· Click “New” và đặt tên “TermVectors”
· Trong mục Mappings, connect tất cả các cột , “Term”, “Frequency”, “ID”
3.8. Bấm F5 để thực hiện, trong TDM có table “TermVectors” như sau:
4. Chuẩn bị dữ liệu để train và Test Model
4.1. Tạo mới một SSIS package
4.2. Đổi tên lại thành PrepareSamples.dtsx
4.3. Trong Data Flow tab tạo mới một Data Flow task
4.4. Trong data flow task, thêm một “OLE DB Source”
· Connection: localhost.TDM
· Table: NGArticles
· Columns: ID, NewsGroup
4.5. Thêm một “Percentage Sampling” OLE DB Source
· Sampling rate: 70%
· Selected rows: Train sample (70%)
· Unselected rows: Test sample (30%)
4.6. Thêm 2 “OLE DB Destination” và kết nối từ Percentage Sampling (một Training Dataset, Testing Dataset)
· Connection: localhost.TDM
· Click “New” đặt tên là “TrainArticles” và “TestArticles”.
· Mappings, connect các cột “ID”, “NewsGroup”
4.7. Bấm F5 để thực hiện, trong TDM có 2 tables “TrainArticles” và “TestArticles” như sau
5. Xây dựng/Kiểm tra và tinh chỉnh mô hình
5.1Thêm một Analysis Services project và đặt tên “TextMiningModel”.
5.2 Tạo một Data Source kết nối đến database TDM.
5.3 Tạo một Data Source View (DSV) sử dụng data source TDM chứa 3 tables: TrainArticles, TestArticles và TermVectors.
5.4 Tạo một Mining Structure as follows:
- Algorithm: Microsoft_Decision_Trees
- DSV : TDM
- Case table: TrainArticles
- Nested table: TermVectors
- Columns:
- Đặt tên Mining structure là “NGArticlesDM” và Mining model là “NGArticlesDM_DT”
5.5 Thêm 2 Mining Models để so sánh kết quả với Decision Trees sử dụng Algorithms Naïve Bayes và Logistics Regression như sau bằng cách Right click model NGArticlesDM_DT chọn “New Mining Model…” :
- Tên Model : NGArticlesDM_NB sử dụng Microsoft_Naive_Bayes algorithm
- Tên Model: NGArticlesDM_NN sử dụng Microsoft_Logistic_Regression algorithm
5.6 Thiết lập tham số cho 3 models như sau : Right click model và chọn set the algorithm parameters và đặt lại tham số MAXIMUM_INPUT_ATTRIBUTES của 3 models =0 (hủy bỏ chức năng tự động chọn thuộc tính – Feature selection của mỗi Model)
· NGArticlesDM_DT: MAXIMUM_INPUT_ATTRIBUTES=0
· NGArticlesDM_NB:MAXIMUM_INPUT_ATTRIBUTES=0
· NGArticlesDM_NN:MAXIMUM_INPUT_ATTRIBUTES=0
5.7 Thực hiện các Mining Models bằng cách bấm phím F5.
5.8 Chọn “Mining Accuracy” tab và chọn lift chart, chọn Select Nested tables là “TestArticles” và “TermVectors” để so sánh khả năng sự phân lớp (phân các News Articles vào các 5 lớp đã biết) chính xác của các Mining Models đã xây dựng.
Ngoài ra ta có thể sử dụng các công cụ trực quan khác để đánh giá khả năng phân lớp của các Model như Classification Tree, Dependency Network, Attribute Discrimination,...
Decision Tree
Attribute Discrimination
Sau khi xây dựng Dictionary, TermVectors từ dữ liệu gốc (News Articles), ta có thể sử dụng các kết quả này để thực hiện các công việc khác của Text Mining như Documents Clustering (phân cụm văn bản), Documents Comparing (So sánh văn bản), Documents Searching (tìm kiếm văn bản), Text Summarization (tổng hợp văn bản)…
PS. All comments please send to chucnv@ud.edu.vn. Thank you and Welcome!