Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
全文搜尋引擎的
進階實作與應用
聖藍科技
執行長
王建興
講者簡介
• 現職
– 聖藍科技執行長
• 興趣
– 網路應用系統開發
• 譯作
– Thinking in Java 4th Edition, 正體中文版
– Thinking in Java 2nd Edition, 正體中文版
– Ess...
概要
• 前情提要
• Lucene 的相關技術
• 基於搜尋引擎的進階應用
• 文字探勘應用的實作
• 結論
前情提要
• “JAVA 的開放原碼全文搜尋技術- LUCENE” -
2004 年 Java2 專業技術大會
– 全文搜尋引擎的基本概念
– Lucene 的簡介與程式設計
• “「沙中撈金術」﹣談開放原始碼的推薦系
統” - 2012 年 ...
搜尋引擎的相關技術及應用
• Web Crawler
– 漫爬網頁、取得網頁內容
• 文件格式及語系處理
– 各種格式檔案中語言的偵測及文字的擷取
• 進階搜尋及檢索功能
• 提高服務的規模(例:分散式化)
– 資料量
– 計算量
• 自然語言...
Lucene 的相關技術
• Solr
• Tika
• Nutch
• OpenNLP
• Mahout
Solr
• Solr 是基於 Lucene 的平台,提供了
– 進階的全文搜尋功能
– 搜尋結果標示(Highlighting)
– 分面搜尋(Faceted Search)
– 近乎即時的索引速度
– 標準化的介面(XML, JSON, H...
Tika
• Tika是個內容分析的工具組,主要提供了
– 內容的偵測(Detector)
• 檔案格式偵測
• 文字語言偵測
– 內容的剖析(Parser)
• Tika 支援格式
– HTML, XML, Office, OpenDocum...
Nutch
• Nutch 是個可擴充功能且具規模可擴充性的
Web Crawler
– 基於 Plugin,高度模組化
– 多協定、多執行緒、分散式
– 具規模擴充性的資料處理框架(Hadoop
MapReduce)
– 基於 Lucene ...
漫爬於網頁間
*”Nutch as a Web data mining platform” – abial@slideshare
網頁搜尋引擎組件
*”Nutch as a Web data mining platform” – abial@slideshare
OpenNLP
• NLP 即自然語言處理( Natural Language
Processing)
• OpenNLP 是 Apache 的自然語言處理程式庫
– 句子偵測(Sentence Detector)
– Tokenizer
– ...
基於搜尋引擎的進階應用
• 搜尋引擎為了提供全文搜尋的功能,建立
了文件索引等相關資料
• 現代的搜尋引擎所提供的不只是找出相符
的文件
• 基於文件的索引資料可以開發進階的有趣
應用
進階的搜尋引擎功能實作
• 同音字搜尋
• 同義字搜尋
• 簡繁查詢
基於搜尋引擎的進階應用
• 以文找文
• 關聯詞分析
• 關鍵詞分析
• 文件分類
• 文件群集
在 Lucene 上建多份索引
• 同一份文件進到系統時,可以為它建立多
份索引
• 為什麼需要多份索引?
• 基於不同用途的索引
– bi-gram, tri-gram, n-gram 索引
– 詞庫索引
– 發音索引
– 同義詞索引
做同音字搜尋
• 文件建立索引時,除其餘所需索引外,也
建立同音字查詢時所需的發音索引
• 以中文而言,建立索引時,可取得文件中
每個字的注音符號並建立文件注音符號索
引
• 查詢時,將查詢條件轉換成為注音符號,
針對發音索引做查詢
中文同音字例
• 建立每個中文字的注音對照表
– 載入至 in memory 的 Hash Table 是個簡單的實
作方式
• 建索引時,查表將每個中文字轉換成為注
音
– 黄非紅 -> ㄏㄨㄤˊㄈㄟㄏㄨㄥˊ
• 查詢時一樣查表將查詢字轉換成...
做同義詞查詢
• 需透過某種方式建立同義詞對應表
– 例如人工維護
– 軟體 -> 軟件
• 建立同義詞索引,提供同義詞查詢
• 簡繁查詢的原理類似
– 可一律建成繁體索引
– 查詢時轉成繁體查詢
詞庫索引
• 何謂 bi-gram, tri-gram, … , n-gram?
• Bi-gram, tri-gram, … , n-gram 的優點
– 不需要倚靠事先建好的詞庫
• 缺點
– 使索引變大降低搜尋效率
– 搜尋出非目標的結果...
Lucene 中內建的中文斷詞器
• ChineseTokenizer
– 將 “我是台灣人” 斷成 “我” “是” “台” “灣” “人”
• CJKTokenizer
– 將 “我是台灣人” 斷成 “我是” “是台” “台灣” “灣
人”
...
其他的中文斷詞器
• Paoding(庖丁解牛)
• Imdict-Chinese-Analyzer:imdict 智慧型詞典
所用的智慧型中文斷詞器
• IKAnalyzer
• Mmseg4j: 利用蔡志浩教授的 MMSeg 演算法
開發出...
文字探勘(Text Mining)
• 文字探勘意指從文字資訊中發掘出有用資
訊的程序
• Data Mining vs. Text Mining
– Data Mining 假設處理的資料為具結構的資料
– Text Mining 的資源輸入...
生活中到處都是文字應用
• 部落格文章
• 社交網站的近況更新
– Facebook
– Twitter
• YouTube 影片的文字描述
• 歌曲的專輯、歌手、曲名
• 購物網站上的商品名稱、文字描述
• …
文字探勘的應用例子
• 部落格/新聞/文章
– 相似的部落格/新聞/文章
– 相關的部落格/新聞/文章(See Also)
– 某個使用者可能會感興趣的部落格/新聞/文章
– 部落格/新聞/文章自動分類(應用:適合投放的廣
告)
• Faceb...
新聞網站應用文字探勘
*http://http://times.hinet.net/
以搜尋引擎為基礎如何協助探勘文字
• 文字探勘的首要工作為將自然語言型式的文件轉
成結構化的資訊
• 轉換成為結構化的資訊後,即可運用資料探勘的
技術處理
• 搜尋引擎在建立索引的同時,即在將自然語言型
式的文件轉成結構化的資訊
文件的相似性
• 文件的相似性是許多基於搜尋引擎的進階
應用的基礎
– 搜尋引擎的主要功能即尋找與查詢字串相似的
文件
• 如何判斷文件的相似性?
– 將文字內容轉換成為可以數學處理的型式,即
向量
– 利用向量的相似度來判斷文件的相似性
Vector Space Model (1/2)
• 每份文件中所含的詞,都是一個特徵
• 將每份文件轉成所有詞所構成之向量空間
中的向量
• 將文件轉換成為向量後即可處理文件的相
似度
Vector Space Model (2/2)
• 將文件表示為 n 維的向量
– n 即所有文字中的所有可能詞
– 若一文件被表示為向量 V,其中的第 i 個元素之
為 v(i) ,其值為詞 wi 的權重
– 詞 wi 的權重可以有不同的表...
向量相似度
TF-IDF
• Term Frequency – Inverse Document Frequency
• TF
– 詞在文件中出現的頻率
– 衡量特定詞在單一文件中的重要性
• IDF
– log( 總文件數/ (t 這個詞出現的文件總數)...
Term Frequency Vector
• 利用 Lucene 建立索引,可取得文件的
“Term Vector”
• 所謂的 “Term Vector” 即將文件轉為向量空
間中的向量形式
取得 TF, IDF 資訊的初始動作
*http://filotechnologia.blogspot.tw/2013/11/get-tf-and-idf-of-all-terms-of-index.html
• 開啟 IndexReader
...
取得 IDF
已可取得 TF-IDF 向量
下一步?
Apache Mahout
• Apache Mahout™ 是個具規模可擴充性的機器學習
(machine learning)程式庫
• Mahout在Apache Hadoop ™ 上,使用了
map/reduce的演算法,實作了 clus...
Mahout 提供的諸般演算法
• 推薦引擎
– 指協同過濾式(Collaborative Filtering)推薦
• 分類演算法
– Bayesian, Support Vector Machine (SVM), Neural Networ...
透過 Lucene 取得文件的 TF-IDF 向量後
利用 Mahout 中所提供
的程式庫做計算及應用
如何計算相似度
• Mahout 中提供了計算向量相似度的程式
– Cosine Similarity
– Pearson Correlation Similarity
– Euclidian Distance Similarity
– Tan...
文件的自動分類 (1/2)
• 利用現有的文件分類結果,將未知類型的
新文件自動分類
– 新聞的自動分類(政治、財經、運動、娛樂)
– 網頁的自動分類(3C, 美妝, 政治, 電玩, … )
• 自動分類屬於監督式(supervised)學習
文件的自動分類(2/2)
• 取得文件的向量表示式後,可套用典型的
分類演算法來做文件的分類
• Mahout 提供了各種分類演算法
– Stochastic Gradient Decent
– Support Vector Machine
–...
文件自動分群(1/2)
• 基於文件的特性,自動的將相關的文件集
結成群,並且找出該群文件的共通特性
– 共通特性像是共同的關鍵字
• 自動分群可以是非監督式(non-supervised)
學習
文件自動分群(2/2)
• 取得文件的 Vector 後,將 vector 套入
Mahout 的自動分群演算法,即可達到文件
的自動分群
– K-Means
– Fuzzy K-Means
– Meanshift
– Centroid Gen...
文件自動分群
*http://www.ediscoverydaily.com/2011/11/ediscovery-best-practices-cluster-documents-for-more-effective-review.html
關聯詞分析 (1/2)
• 關聯詞代表相關性高的字詞,出現詞 A 時,
有很高的機會出現詞 B,則說 A 與 B 為關聯
詞
• 關聯詞的分析有助於我們從大量文件中發
掘出概念的關聯性
關聯詞分析 (2/2)
• 關聯詞即共同出現機率高的詞
• 利用 Item-based 的 CF 方法可分析關聯詞
• 先取得文件的 Term Vector,再運用 Mahout
的 ItemBasedRecommender 即可進行分析
關鍵詞及文字屬性
• 一篇文章中的關鍵詞
– 基本上是其中 TF-IDF 分數較高者
• 為使用者或商品標示關鍵詞
– 使用者瀏覽或按讚某文章,則該文章的關鍵詞
有可能是該使用者的偏好
– 文字是一個偏好的不錯的表示方式
– 點看商品細節、加入...
使用者的偏好文字
• 依使用者偏好的文字特性可做
– 使用者的自動分群
– 使用者的自動分類
• 使用者偏好可做許多應用
– 相似的使用者(朋友推薦)
– 會感興趣的商品(使用者偏好文字和商品文字
相似)
– 廣告投放(使用者偏好文字和正在瀏覽...
處理海量的文件
• 在過去,要做文字探勘的應用,得自行開
發許多程式
– 轉換成向量(現在有 Lucene 了)
– 資料探勘的演算法實作(現在有 Mahout 了)
• 而在這 Big Data 的時代,還可能要處理海量
的文件資料
– 幸好...
更幸運的是 …
Mahout 內建支援
Lucene 的整合
將 Lucene 索引轉換成 Mahout 向量
• Mahout 內建支援將 Lucene & Solr 索引轉換成為
Mahout 標準向量格式的工具程式
• $MAHOUT_HOME/bin/mahout lucene.vector
--...
Mahout 對文字資料的支援
• 將文件資料轉換為向量時,可套用 TF-IDF
• 可自訂斷詞器
• Mahout 也允許你撰寫程式呼叫 API 來處理
文件資料
有了 Mahout 向量之外
• 即可套用 Mahout 現成的演算方法來處理向
量
– 文件群集
– 文件分類
– …
• 基於 Hadoop,可擴展處理更規模的文件資
料量
結語
• 搜尋引擎所建立的資料,不僅可供搜尋文
件之用,還可提供更多進階的應用可能
• 過去,要處理文字的 mining 需要許多輪子
• 如今,輪子都有了
– Lucene 的相關技術及平台
• 而且,還上了雲端
– 更容易處理規模可擴充性的...
資源
• Solr
– lucene.apache.org/solr
• Nutch
– nutch.apache.org
• Tika
– tika.apache.org
• OpenNLP
– opennlp.apache.org
• Ma...
謝謝
全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用
You’ve finished this document.
Download and read it offline.
Upcoming SlideShare
從 Java programmer 的觀點看 ruby
Next
Upcoming SlideShare
從 Java programmer 的觀點看 ruby
Next
Download to read offline and view in fullscreen.

75

Share

全文搜尋引擎的進階實作與應用

Download to read offline

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

全文搜尋引擎的進階實作與應用

  1. 1. 全文搜尋引擎的 進階實作與應用 聖藍科技 執行長 王建興
  2. 2. 講者簡介 • 現職 – 聖藍科技執行長 • 興趣 – 網路應用系統開發 • 譯作 – Thinking in Java 4th Edition, 正體中文版 – Thinking in Java 2nd Edition, 正體中文版 – Essential C++, 正體中文版 • 專欄 – iThome 電腦報程式人專欄 • 連絡方式 – qing.chwang at gmail.com
  3. 3. 概要 • 前情提要 • Lucene 的相關技術 • 基於搜尋引擎的進階應用 • 文字探勘應用的實作 • 結論
  4. 4. 前情提要 • “JAVA 的開放原碼全文搜尋技術- LUCENE” - 2004 年 Java2 專業技術大會 – 全文搜尋引擎的基本概念 – Lucene 的簡介與程式設計 • “「沙中撈金術」﹣談開放原始碼的推薦系 統” - 2012 年 Java2 專業技術大會 – 推薦系統觀念 – 利用 Mahout 實作推薦系統
  5. 5. 搜尋引擎的相關技術及應用 • Web Crawler – 漫爬網頁、取得網頁內容 • 文件格式及語系處理 – 各種格式檔案中語言的偵測及文字的擷取 • 進階搜尋及檢索功能 • 提高服務的規模(例:分散式化) – 資料量 – 計算量 • 自然語言處理 • 文字探勘(Text Mining)技術
  6. 6. Lucene 的相關技術 • Solr • Tika • Nutch • OpenNLP • Mahout
  7. 7. Solr • Solr 是基於 Lucene 的平台,提供了 – 進階的全文搜尋功能 – 搜尋結果標示(Highlighting) – 分面搜尋(Faceted Search) – 近乎即時的索引速度 – 標準化的介面(XML, JSON, HTTP) – 分散式搜尋的能力
  8. 8. Tika • Tika是個內容分析的工具組,主要提供了 – 內容的偵測(Detector) • 檔案格式偵測 • 文字語言偵測 – 內容的剖析(Parser) • Tika 支援格式 – HTML, XML, Office, OpenDocument, PDF, epub, …
  9. 9. Nutch • Nutch 是個可擴充功能且具規模可擴充性的 Web Crawler – 基於 Plugin,高度模組化 – 多協定、多執行緒、分散式 – 具規模擴充性的資料處理框架(Hadoop MapReduce) – 基於 Lucene 或 Solr 的全文搜尋引擎
  10. 10. 漫爬於網頁間 *”Nutch as a Web data mining platform” – abial@slideshare
  11. 11. 網頁搜尋引擎組件 *”Nutch as a Web data mining platform” – abial@slideshare
  12. 12. OpenNLP • NLP 即自然語言處理( Natural Language Processing) • OpenNLP 是 Apache 的自然語言處理程式庫 – 句子偵測(Sentence Detector) – Tokenizer – 名稱尋找器(Name Finder) – 文件分類器(Document Categorizer) – 詞性偵測(Part of Speech) – ..
  13. 13. 基於搜尋引擎的進階應用 • 搜尋引擎為了提供全文搜尋的功能,建立 了文件索引等相關資料 • 現代的搜尋引擎所提供的不只是找出相符 的文件 • 基於文件的索引資料可以開發進階的有趣 應用
  14. 14. 進階的搜尋引擎功能實作 • 同音字搜尋 • 同義字搜尋 • 簡繁查詢
  15. 15. 基於搜尋引擎的進階應用 • 以文找文 • 關聯詞分析 • 關鍵詞分析 • 文件分類 • 文件群集
  16. 16. 在 Lucene 上建多份索引 • 同一份文件進到系統時,可以為它建立多 份索引 • 為什麼需要多份索引? • 基於不同用途的索引 – bi-gram, tri-gram, n-gram 索引 – 詞庫索引 – 發音索引 – 同義詞索引
  17. 17. 做同音字搜尋 • 文件建立索引時,除其餘所需索引外,也 建立同音字查詢時所需的發音索引 • 以中文而言,建立索引時,可取得文件中 每個字的注音符號並建立文件注音符號索 引 • 查詢時,將查詢條件轉換成為注音符號, 針對發音索引做查詢
  18. 18. 中文同音字例 • 建立每個中文字的注音對照表 – 載入至 in memory 的 Hash Table 是個簡單的實 作方式 • 建索引時,查表將每個中文字轉換成為注 音 – 黄非紅 -> ㄏㄨㄤˊㄈㄟㄏㄨㄥˊ • 查詢時一樣查表將查詢字轉換成為注音 – 黄飛鴻-> ㄏㄨㄤˊㄈㄟㄏㄨㄥˊ • 查詢 “黄飛鴻” 時可同時查出 “黄飛鴻” 及 “ 黄非紅”
  19. 19. 做同義詞查詢 • 需透過某種方式建立同義詞對應表 – 例如人工維護 – 軟體 -> 軟件 • 建立同義詞索引,提供同義詞查詢 • 簡繁查詢的原理類似 – 可一律建成繁體索引 – 查詢時轉成繁體查詢
  20. 20. 詞庫索引 • 何謂 bi-gram, tri-gram, … , n-gram? • Bi-gram, tri-gram, … , n-gram 的優點 – 不需要倚靠事先建好的詞庫 • 缺點 – 使索引變大降低搜尋效率 – 搜尋出非目標的結果 • 詞庫索引可以視是一種縮小索引內容及範圍的方 式 – 更精準 – 但需要事先建立
  21. 21. Lucene 中內建的中文斷詞器 • ChineseTokenizer – 將 “我是台灣人” 斷成 “我” “是” “台” “灣” “人” • CJKTokenizer – 將 “我是台灣人” 斷成 “我是” “是台” “台灣” “灣 人” • SmartChineseAnalyzer – 將 “我是台灣人” 斷成 “我” “是” “台灣” “人”
  22. 22. 其他的中文斷詞器 • Paoding(庖丁解牛) • Imdict-Chinese-Analyzer:imdict 智慧型詞典 所用的智慧型中文斷詞器 • IKAnalyzer • Mmseg4j: 利用蔡志浩教授的 MMSeg 演算法 開發出來的詞斷器
  23. 23. 文字探勘(Text Mining) • 文字探勘意指從文字資訊中發掘出有用資 訊的程序 • Data Mining vs. Text Mining – Data Mining 假設處理的資料為具結構的資料 – Text Mining 的資源輸入為自然語言型式的文件 資料 • Text Mining 可先將自然語言型式的文件資料 轉換成為具結構的資料,再套用 Data Mining 方法處理
  24. 24. 生活中到處都是文字應用 • 部落格文章 • 社交網站的近況更新 – Facebook – Twitter • YouTube 影片的文字描述 • 歌曲的專輯、歌手、曲名 • 購物網站上的商品名稱、文字描述 • …
  25. 25. 文字探勘的應用例子 • 部落格/新聞/文章 – 相似的部落格/新聞/文章 – 相關的部落格/新聞/文章(See Also) – 某個使用者可能會感興趣的部落格/新聞/文章 – 部落格/新聞/文章自動分類(應用:適合投放的廣 告) • Facebook/Twitter 近況更新 – 流行主題分析 – 口碑分析 – 使用者偏好分析 – 廣告投放 – 推薦興趣相同的使用者 – 推薦投其所好的社團
  26. 26. 新聞網站應用文字探勘 *http://http://times.hinet.net/
  27. 27. 以搜尋引擎為基礎如何協助探勘文字 • 文字探勘的首要工作為將自然語言型式的文件轉 成結構化的資訊 • 轉換成為結構化的資訊後,即可運用資料探勘的 技術處理 • 搜尋引擎在建立索引的同時,即在將自然語言型 式的文件轉成結構化的資訊
  28. 28. 文件的相似性 • 文件的相似性是許多基於搜尋引擎的進階 應用的基礎 – 搜尋引擎的主要功能即尋找與查詢字串相似的 文件 • 如何判斷文件的相似性? – 將文字內容轉換成為可以數學處理的型式,即 向量 – 利用向量的相似度來判斷文件的相似性
  29. 29. Vector Space Model (1/2) • 每份文件中所含的詞,都是一個特徵 • 將每份文件轉成所有詞所構成之向量空間 中的向量 • 將文件轉換成為向量後即可處理文件的相 似度
  30. 30. Vector Space Model (2/2) • 將文件表示為 n 維的向量 – n 即所有文字中的所有可能詞 – 若一文件被表示為向量 V,其中的第 i 個元素之 為 v(i) ,其值為詞 wi 的權重 – 詞 wi 的權重可以有不同的表示,例如 • 詞 wi 的出現次數 • 詞 wi 的 TF-IDF 值
  31. 31. 向量相似度
  32. 32. TF-IDF • Term Frequency – Inverse Document Frequency • TF – 詞在文件中出現的頻率 – 衡量特定詞在單一文件中的重要性 • IDF – log( 總文件數/ (t 這個詞出現的文件總數) ) – 衡量特定詞所含的資訊重要程度
  33. 33. Term Frequency Vector • 利用 Lucene 建立索引,可取得文件的 “Term Vector” • 所謂的 “Term Vector” 即將文件轉為向量空 間中的向量形式
  34. 34. 取得 TF, IDF 資訊的初始動作 *http://filotechnologia.blogspot.tw/2013/11/get-tf-and-idf-of-all-terms-of-index.html • 開啟 IndexReader • 建立 TFIDFSimilarity 類別的 instance
  35. 35. 取得 IDF
  36. 36. 已可取得 TF-IDF 向量 下一步?
  37. 37. Apache Mahout • Apache Mahout™ 是個具規模可擴充性的機器學習 (machine learning)程式庫 • Mahout在Apache Hadoop ™ 上,使用了 map/reduce的演算法,實作了 clustering, classification, 以及 collaborative filtering的核心演算 法 • 除了跑在分散式/雲端多節點的Hadoop平台上之外 ,其中也提了單一節點以及非Hadoop的實作版本 • 其核心程式庫即使是非分散式的版本,也都經高 度最佳化因而能提供極佳的效能
  38. 38. Mahout 提供的諸般演算法 • 推薦引擎 – 指協同過濾式(Collaborative Filtering)推薦 • 分類演算法 – Bayesian, Support Vector Machine (SVM), Neural Network, Hidden Markov Models, … • 群集演算法 – K-Means, Fuzzy K-Means, Hierarchical Clustering, … • Pattern Mining – 頻繁項目集(Frequent Itemset)演算法 • Regression • Dimension Reduction – Singular Value Decomposition and other Dimension Reduction Techniques • Vector Similarity
  39. 39. 透過 Lucene 取得文件的 TF-IDF 向量後 利用 Mahout 中所提供 的程式庫做計算及應用
  40. 40. 如何計算相似度 • Mahout 中提供了計算向量相似度的程式 – Cosine Similarity – Pearson Correlation Similarity – Euclidian Distance Similarity – Tanimoto Coefficient Similarity – Log Likelyhood Similarity
  41. 41. 文件的自動分類 (1/2) • 利用現有的文件分類結果,將未知類型的 新文件自動分類 – 新聞的自動分類(政治、財經、運動、娛樂) – 網頁的自動分類(3C, 美妝, 政治, 電玩, … ) • 自動分類屬於監督式(supervised)學習
  42. 42. 文件的自動分類(2/2) • 取得文件的向量表示式後,可套用典型的 分類演算法來做文件的分類 • Mahout 提供了各種分類演算法 – Stochastic Gradient Decent – Support Vector Machine – Naïve Bayes – Complementary Naïve Bayes – Random Forrest – …
  43. 43. 文件自動分群(1/2) • 基於文件的特性,自動的將相關的文件集 結成群,並且找出該群文件的共通特性 – 共通特性像是共同的關鍵字 • 自動分群可以是非監督式(non-supervised) 學習
  44. 44. 文件自動分群(2/2) • 取得文件的 Vector 後,將 vector 套入 Mahout 的自動分群演算法,即可達到文件 的自動分群 – K-Means – Fuzzy K-Means – Meanshift – Centroid Generation – Direchlet Clustering
  45. 45. 文件自動分群 *http://www.ediscoverydaily.com/2011/11/ediscovery-best-practices-cluster-documents-for-more-effective-review.html
  46. 46. 關聯詞分析 (1/2) • 關聯詞代表相關性高的字詞,出現詞 A 時, 有很高的機會出現詞 B,則說 A 與 B 為關聯 詞 • 關聯詞的分析有助於我們從大量文件中發 掘出概念的關聯性
  47. 47. 關聯詞分析 (2/2) • 關聯詞即共同出現機率高的詞 • 利用 Item-based 的 CF 方法可分析關聯詞 • 先取得文件的 Term Vector,再運用 Mahout 的 ItemBasedRecommender 即可進行分析
  48. 48. 關鍵詞及文字屬性 • 一篇文章中的關鍵詞 – 基本上是其中 TF-IDF 分數較高者 • 為使用者或商品標示關鍵詞 – 使用者瀏覽或按讚某文章,則該文章的關鍵詞 有可能是該使用者的偏好 – 文字是一個偏好的不錯的表示方式 – 點看商品細節、加入購物車、結帳 ... 都可從商 品的文字關鍵詞中推論使用者的偏好
  49. 49. 使用者的偏好文字 • 依使用者偏好的文字特性可做 – 使用者的自動分群 – 使用者的自動分類 • 使用者偏好可做許多應用 – 相似的使用者(朋友推薦) – 會感興趣的商品(使用者偏好文字和商品文字 相似) – 廣告投放(使用者偏好文字和正在瀏覽的網頁 文字相似)
  50. 50. 處理海量的文件 • 在過去,要做文字探勘的應用,得自行開 發許多程式 – 轉換成向量(現在有 Lucene 了) – 資料探勘的演算法實作(現在有 Mahout 了) • 而在這 Big Data 的時代,還可能要處理海量 的文件資料 – 幸好,Mahout 基於 Hadoop 的 map-reduce 提供 了好的規模可擴充性
  51. 51. 更幸運的是 … Mahout 內建支援 Lucene 的整合
  52. 52. 將 Lucene 索引轉換成 Mahout 向量 • Mahout 內建支援將 Lucene & Solr 索引轉換成為 Mahout 標準向量格式的工具程式 • $MAHOUT_HOME/bin/mahout lucene.vector --dir $WORK_DIR/wikipedia/solr/data/index --field body --dictOut $WORK_DIR/solr/wikipedia/dict.txt --output $WORK_DIR/solr/wikipedia/out.txt • 除了 Lucene 索引外,Mahout 也支援將文件轉換 成為 SequenceFile 格式,再將 SequenceFile 格式檔 案轉換成為向量
  53. 53. Mahout 對文字資料的支援 • 將文件資料轉換為向量時,可套用 TF-IDF • 可自訂斷詞器 • Mahout 也允許你撰寫程式呼叫 API 來處理 文件資料
  54. 54. 有了 Mahout 向量之外 • 即可套用 Mahout 現成的演算方法來處理向 量 – 文件群集 – 文件分類 – … • 基於 Hadoop,可擴展處理更規模的文件資 料量
  55. 55. 結語 • 搜尋引擎所建立的資料,不僅可供搜尋文 件之用,還可提供更多進階的應用可能 • 過去,要處理文字的 mining 需要許多輪子 • 如今,輪子都有了 – Lucene 的相關技術及平台 • 而且,還上了雲端 – 更容易處理規模可擴充性的問題
  56. 56. 資源 • Solr – lucene.apache.org/solr • Nutch – nutch.apache.org • Tika – tika.apache.org • OpenNLP – opennlp.apache.org • Mahout – mahout.apache.org
  57. 57. 謝謝
  • kalo.liang

    Apr. 8, 2018
  • JeremyChen10

    Oct. 24, 2017
  • ssuser3e1b03

    May. 3, 2017
  • idonchen

    Dec. 20, 2016
  • linlemon0417

    Sep. 24, 2016
  • babyandy740111

    Jun. 30, 2016
  • bigairtw

    Apr. 19, 2016
  • hydai

    Mar. 3, 2016
  • JiamingWu

    Jan. 24, 2016
  • freezejonny

    Oct. 2, 2015
  • JesseChen7

    Oct. 2, 2015
  • momoyoyo

    Oct. 2, 2015
  • kakashiliu

    Oct. 1, 2015
  • jerry387

    Oct. 1, 2015
  • taylor02252

    Oct. 1, 2015
  • ssuser1b58e0

    Oct. 1, 2015
  • ssuser8c3b7f26

    Sep. 30, 2015
  • ssuser43035c

    Sep. 30, 2015
  • iamfrankyao

    Sep. 30, 2015
  • muhaha03

    Sep. 30, 2015

Views

Total views

10,880

On Slideshare

0

From embeds

0

Number of embeds

3,759

Actions

Downloads

276

Shares

0

Comments

0

Likes

75

×