Spark 中文文件分類(一) IKAnalyzer對文件進行分類
原網址:http://lxw1234.com/archives/2015/07/422.htm
程式語言
1年前 (2015-07-22) 5885℃
0評論
關鍵字:中文分詞、IKAnalyzer
最近有個需求,需要對爬到的網頁內容進行分詞,以前沒做過這個,隨便找了找中文分詞工具,貌似IKAnalyzer評價不錯,因此就下來試試,在這裡記錄一下使用方法,備查。
關於IKAnalyzer的介紹,網上很多,搜一下就知道了。下載地址見文章最後面。
下載解壓之後主要使用和依賴以下檔案:
IKAnalyzer2012_u6.jar — IKAnalyzer核心jar包
IKAnalyzer.cfg.xml — 配置檔案,可以在這裡配置停詞表和擴充套件詞庫
stopword.dic — 停詞表
lucene-core-3.6.0.jar — lucene jar包,注意:只能使用這個3.6版本,高版本有問題
IKAnalyzer中文分詞器V2012_U5使用手冊.pdf — 使用手冊
新建Java專案,將IKAnalyzer2012_u6.jar和lucene-core-3.6.0.jar新增到Build Path,將stopword.dic和IKAnalyzer.cfg.xml新增到專案根目錄。
看一下IKAnalyzer.cfg.xml的內容:
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE properties SYSTEM “http://java.sun.com/dtd/properties.dtd”>
<properties>
<comment>IK Analyzer 擴充套件配置</comment>
<!–使用者可以在這裡配置自己的擴充套件字典 –>
<entry key=”ext_dict”></entry>
<!–使用者可以在這裡配置自己的擴充套件停止詞字典–>
<entry key=”ext_stopwords”>stopword.dic;</entry>
</properties>
使用示例程式碼:
- package com.lxw1234.wordsplit;
- import java.io.StringReader;
- import org.apache.lucene.analysis.Analyzer;
- import org.apache.lucene.analysis.TokenStream;
- import org.apache.lucene.analysis
- import org.wltea.analyzer.lucene.IKAnalyzer;
- /**
- *
- * @author lxw的大資料田地 -- lxw1234.com
- *
- */
- publicclassTest{
- publicstaticvoid main(String[] args)throwsException{
- String text ="lxw的大資料田地 -- lxw1234.com 專注Hadoop、Spark、Hive等大資料技術部落格。 北京優衣庫";
- Analyzer analyzer =newIKAnalyzer(false);
- StringReader reader =newStringReader(text);
- TokenStream ts = analyzer.tokenStream("", reader);
- CharTermAttribute term=ts.getAttribute(CharTermAttribute.class);
- while(ts.incrementToken()){
- System.out.print(term.toString()+"|");
- }
- analyzer.close();
- reader.close();
- }
- }
執行結果為:
lxw|的|大數|資料|田地|lxw1234.com|lxw|1234|com|專注|hadoop|spark|hive|等|大數|資料|技術|部落格|北京|優|衣|庫|
分詞分的很細。
看這個建構函式:Analyzer analyzer = new IKAnalyzer(false);
IKAnalyzer支援兩種分詞模式:最細粒度和智慧分詞模式,如果建構函式引數為false,那麼使用最細粒度分詞。
改成智慧分詞模式之後的結果:
Analyzer analyzer = new IKAnalyzer(true);
lxw|的|大|資料|田地|lxw1234.com|專注|hadoop|spark|hive|等|大|資料|技術|部落格|北京|優|衣|庫|
結果還是不太理想,“大資料”和“優衣庫”都被分開了,原因是IKAnalyzer自帶的詞庫裡面沒有這兩個詞。
需要配置擴充套件詞庫。
在專案根目錄新建檔案MyDic.dic,裡面內容為:
大資料
優衣庫
每行一個詞,特別注意:MyDic.dic的檔案編碼必須為UTF-8。
編輯IKAnalyzer.cfg.xml配置檔案,新增擴充套件詞庫:
<!–使用者可以在這裡配置自己的擴充套件字典 –>
<entry key=”ext_dict”>MyDic.dic;</entry>
再執行:
lxw|的|大資料|田地|lxw1234.com|專注|hadoop|spark|hive|等|大資料|技術|部落格|北京|優衣庫|
這下基本是我們想要的結果了。
下載地址:https://code.google.com/p/ik-analyzer/downloads/list
這個地址估計大家不方便,上傳了一份到網盤:
密:34w6