本章所要討論的群聚算法(clustering analysis)是一種非監督式機器學習(unsupervised learning)。程式碼請參見 Chapter 06,所使用的資料是 Reuters-21578,可以通過下載腳本獲得。這份資料是 Reuters Ltd. 路透社在 1987 那一年的所有新聞資料,公開出來供資料科學研究用。
下載後,資料會被解壓縮並存放在 data/reuters-sgml
中。每一個 .sgm
檔案包含了一千篇文章,使用 Standard Generalized Markup Language SGML 格式標記。我們可以使用 Lucene 這套開源 Java 文字搜尋引擎將文章內容取出。關於如何使用 Java 模組,我將在最後幾天提到。
(:import [org.apache.lucene.benchmark.utils ExtractReuters])
(defn sgml->text [in-path out-path]
(let [in-file (clojure.java.io/file in-path)
out-file (clojure.java.io/file out-path)]
(.extract (ExtractReuters. in-file out-file))))
文章會被拆解成 txt 檔案存放在 data/reuters-text
,也可以通過執行 lein extract-reuters
來執行此步驟(已被設定為 lein task)。