目錄:
1、認識中文分詞包(下載、安裝與運行)
2、分詞方法與效果分析
3、分詞包背后的分詞算法學習
4、分詞結果提交
5、基于分詞結果的詞云分析(詞頻統計+可視化)
1、認識中文分詞包(下載、安裝與運行)
1.1MMSeg4J簡介
mmseg4j用Chih-Hao Tsai 的MMSeg算法實現的中文分詞器,并實現lucene的analyzer和solr的TokenizerFactory以方便在Lucene和Solr中使用。
MMSeg 算法有兩種分詞方法:Simple和Complex,都是基于正向最大匹配。
mmseg4j有三種分詞模式simple、complex、max-word,默認是max-word。
mmseg4j 1.8.3 只支持 lucene 2.9/3.0 接口 和 solr 1.4。
mmseg4j 1.8.5 支持 lucene 3.1, solr 3.1。
mmseg4j 1.9.0 支持 lucene 4.0, solr 4.0。
mmseg4j 1.9.1 支持 solr/lucene 4.3.1。
mmseg4j-solr-2.0.0.jar 要求 lucene/solr >= 4.3.0。
mmseg4j-solr-2.1.0.jar 要求 lucene/solr 4.8.x。
mmseg4j-solr-2.2.0.jar 要求 lucene/solr [4.9, 4.10.x]。
mmseg4j-solr-2.3.0.jar 要求 lucene/solr [5.0, ]
參考鏈接:http://blog.csdn.net/jiangchao858/article/details/53026374
1.2運行環境配置:
我采用的是solr 6.5.1集成MMseg4J中文分詞包。
1.2.1正確安裝JDK并配置環境變量
JDK1.8.0_131下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
win10安裝配置JDK教程:https://jingyan.baidu.com/article/3c48dd3484720ce10ae35859.html
按照這個教程的步驟一步步進行就OK。
1.2.2下載solr并運行
solr 6.5.1下載地址:http://www.apache.org/dyn/closer.lua/lucene/solr/6.5.1
Solr是一個高性能,采用Java5開發,基于Lucene的全文搜索服務器。同時對其進行了擴展,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴展并對查詢性能進行了優化,并且提供了一個完善的功能管理界面,是一款非常優秀的全文搜索引擎。
使用sol內置的web容器jetty后臺啟動solr,啟動后的默認端口為8983。直接到解壓的solr-6.5.1/bin目錄運行solr start即可,如圖所示:
訪問http://localhost:8983/solr 可以看到solr的圖形化界面:
1.2.3整合MMSeg4J
MMSeg4J 2.3.0 下載地址:http://download.csdn.net/detail/isjiangwei/9659358
a. 將mmseg4j-solr-2.3.0.jar以及mmseg4j-core-1.10.jar(之前的mmseg4j-analysis已經整合進了mmseg4j-solr-2.3.0.jar,不需要再導入)這兩個jar包放在類似于D:\solr-6.5.1\server\solr-webapp\webapp\WEB-INF\lib目錄下
b. 創建一個core:zhh
solr create -c zhh
c. 集成MMSeg4J
進入該目錄:D:\solr-6.5.1\server\solr\zhh\conf,修改其中managed-schema(在5.0前,該文件是shcema.xml,當然可以將該文件重命名為schema.xml,但不建議這么做),加入下面的內容并重啟Solr,即可在Solr Admin 的console中看到新增的這些field了。
注意:將dicPath的值修改為相應的值。
<!-- mmseg4j-->
<field name="mmseg4j_complex_name" type="text_mmseg4j_complex" indexed="true" stored="true"/>
<field name="mmseg4j_maxword_name" type="text_mmseg4j_maxword" indexed="true" stored="true"/>
<field name="mmseg4j_simple_name" type="text_mmseg4j_simple" indexed="true" stored="true"/>
<fieldType name="text_mmseg4j_complex" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="D:\solr-6.5.1\server\solr\zhh\conf"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
</analyzer>
</fieldType>
<fieldType name="text_mmseg4j_maxword" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="D:\solr-6.5.1\server\solr\zhh\conf"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
</analyzer>
</fieldType>
<fieldType name="text_mmseg4j_simple" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="D:\solr-6.5.1\server\solr\zhh\conf"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
</analyzer>
</fieldType>
<!-- mmseg4j-->
d. 重啟solr
solr restart -p 8983
即可在新創建的zhh這個core的Analysis中看到MMSeg4J新增的field
參考鏈接:http://m.blog.csdn.net/article/details?id=52065562
2、分詞方法與效果分析
2.1分詞方法
三種分詞模式simple、complex、max-word,默認是max-word。
分別使用以上三種方法進行分詞:
2017年3月16日-21日,應美國公共行政學會(ASPA)執行主席William Shields先生邀請,我院行政管理系郭金云副教授、碩士研究生李舒敏以及目前在美國羅格斯大學訪學的博士研究生代佳欣一同參加了在亞特蘭大舉行的第78屆美國公共行政學會年會,本屆年會的主題是“致敬公共服務:一個大膽而高尚的職業”。借此次會議所搭建的學術合作與交流平臺,我院師生分別與“公共服務動機”(PSM)概念的提出者和奠基者、美國印第安納大學詹姆斯?佩里(James L. Perry)教授,美國公共行政學會前會長、美國中佛羅里達大學劉國材教授,華人公共管理學分會會長、美國羅格斯大學張亞紅教授、臺灣臺北大學國際長張四明教授等知名專家先后進行了學術交流,為今后進一步的合作與交流奠定了良好的基礎。
simple模式:
2017 年 3 月 16 日 21 日 應 美國 公共 行政學 會 aspa 執行主席 william shields 先生 邀請 我院 行政管理 系 郭 金 云 副教授 碩士研究生 李 舒 敏 以及 目前 在 美國 羅 格 斯 大學 訪 學的 博士研究生 代 佳 欣 一同 參加 了 在 亞特蘭大 舉行 的 第 78 屆 美國 公共 行政學 會 年會 本屆 年會 的 主題 是 致敬 公共 服務 一個 大膽 而 高尚 的 職業 借此 次 會議所 搭建 的 學術 合作 與 交流平臺 我院 師生 分別 與 公共 服務 動機 psm 概念 的 提出者 和 奠基者 美國 印第安納 大學 詹姆斯 佩 里 james l perry 教授 美國 公共 行政學 會前 會長 美國 中 佛羅里達 大學 劉 國 材 教授 華人 公共 管理學 分會 會長 美國 羅 格 斯 大學 張 亞 紅 教授 臺灣 臺北 大學 國際 長 張 四 明教 授 等 知名 專家 先后 進行 了 學術交流 為 今后 進一步 的 合作 與 交流 奠定 了 良好 的 基礎
共15處錯誤。
錯誤分詞 | 正確分詞 |
---|---|
行政學/會 | 行政/學會 |
郭/金/云 | 郭金云 |
李/舒/敏 | 李舒敏 |
羅/格/斯 | 羅格斯 |
訪/學的 | 訪學/的 |
代/佳/欣 | 代佳欣 |
借此/次 | 借/此次 |
會議所 | 會議/所 |
詹姆斯/佩/里 | 詹姆斯佩里 |
行政學/會前/會長 | 行政/學會/前會長 |
中/佛羅里達/大學 | 中佛羅里達/大學 |
劉/國/材 | 劉國材 |
張/亞/紅 | 張亞紅 |
國際/長 | 國際長 |
張/四/明教/授 | 張四明/教授 |
complex模式:
2017 年 3 月 16 日 21 日 應 美國 公共 行政 學會 aspa 執行主席 william shields 先生 邀請 我院 行政管理 系 郭 金 云 副教授 碩士研究生 李 舒 敏 以及 目前 在 美國 羅 格 斯 大學 訪 學的 博士研究生 代 佳 欣 一同 參加 了 在 亞特蘭大 舉行 的 第 78 屆 美國 公共 行政 學會 年會 本屆 年會 的 主題 是 致敬 公共 服務 一個 大膽 而 高尚 的 職業 借此 次 會議所 搭建 的 學術 合作 與 交流平臺 我院 師生 分別 與 公共 服務 動機 psm 概念 的 提出者 和 奠基者 美國 印第安納 大學 詹姆斯 佩 里 james l perry 教授 美國 公共 行政學 會前 會長 美國 中 佛羅里達 大學 劉 國 材 教授 華人 公共 管理學 分會 會長 美國 羅 格 斯 大學 張 亞 紅 教授 臺灣 臺北 大學 國際 長 張 四 明 教授 等 知名 專家 先后 進行 了 學術交流 為 今后 進一步 的 合作 與 交流 奠定 了 良好 的 基礎
共13處錯誤。
錯誤分詞 | 正確分詞 |
---|---|
郭/金/云 | 郭金云 |
李/舒/敏 | 李舒敏 |
羅/格/斯 | 羅格斯 |
訪/學的 | 訪學/的 |
代/佳/欣 | 代佳欣 |
會議所 | 會議/所 |
詹姆斯/佩/里 | 詹姆斯佩里 |
行政學/會前/會長 | 行政/學會/前會長 |
中/佛羅里達/大學 | 中佛羅里達/大學 |
劉/國/材 | 劉國材 |
張/亞/紅 | 張亞紅 |
國際/長 | 國際長 |
張/四/明教/授 | 張四明/教授 |
max-word模式:
2017 年 3 月 16 日 21 日 應 美國 公共 行政 學會 aspa 執行 主席 william shields 先生 邀請 我院 行政 管理 系 郭 金 云 副 教授 碩士 研究 生 李 舒 敏 以及 目前 在 美國 羅 格 斯 大學 訪 學的 博士 研究 生 代 佳 欣 一同 參加 了 在 亞 特 蘭 大 舉行 的 第 78 屆 美國 公共 行政 學會 年會 本屆 年會 的 主題 是 致敬 公共 服務 一個 大膽 而 高尚 的 職業 借此 次 會議 所 搭建 的 學術 合作 與 交流 平臺 我院 師生 分別 與 公共 服務 動機 psm 概念 的 提出 者 和 奠基 者 美國 印 第 安 納 大學 詹 姆 斯 佩 里 james l perry 教授 美國 公共 行政 學 會前 會長 美國 中 佛 羅 里 達 大學 劉 國 材 教授 華人 公共 管理 理學 分會 會長 美國 羅 格 斯 大學 張 亞 紅 教授 臺灣 臺北 大學 國際 長 張 四 明 教授 等 知名 專家 先后 進行 了 學術 交流 為 今后 進 一步 的 合作 與 交流 奠定 了 良好 的 基礎
共21處錯誤。
錯誤分詞 | 正確分詞 |
---|---|
郭/金/云 | 郭金云 |
副/教授 | 副教授 |
碩士/研究/生 | 碩士/研究生 |
李/舒/敏 | 李舒敏 |
羅/格/斯 | 羅格斯 |
訪/學的 | 訪學/的 |
博士/研究/生 | 博士/研究生 |
代/佳/欣 | 代佳欣 |
借此/次 | 借/此次 |
亞/特/蘭/大 | 亞特蘭大 |
提出/者 | 提出者 |
奠基/者 | 奠基者 |
印/第/安/納/大學 | 印第安納大學 |
詹姆斯/佩/里 | 詹姆斯佩里 |
行政/學/會前/會長 | 行政/學會/前會長 |
中/佛/羅/里/達/大學 | 中佛羅里達/大學 |
劉/國/材 | 劉國材 |
管理/理學 | 管理學 |
張/亞/紅 | 張亞紅 |
國際/長 | 國際長 |
張/四/明 | 張四明 |
2.2分詞效果分析
可以看出,分詞正確率最高的方法是complex方法,原因是:simple與complex都是正向最大匹配,且complex在正向最大匹配的基礎上,考慮相鄰詞的詞長,設計了四個去歧義規則,而max-word是實現最多分詞,它會將可能的分詞效果都顯示出來。并且這三種分詞方法都存在著無法對人名和領域等名詞正確分詞,可以通過添加詞庫或者是算法優化來解決。
3、分詞包背后的分詞算法學習
MMSeg的字符串匹配算法分為兩種:
Simple,簡單的正向最大匹配,即按能匹配上的最長詞做切分;
Complex,在正向最大匹配的基礎上,考慮相鄰詞的詞長,設計了四個去歧義規則(Ambiguity Resolution Rules)指導分詞。
在complex分詞算法中,MMSeg將切分的相鄰三個詞作為詞塊(chunk),應用如下四個消歧義規則:
備選詞塊的長度最大(Maximum matching),即三個詞的詞長之和最大;
備選詞塊的平均詞長最大(Largest average word length),即要求詞長分布盡可能均勻;
備選詞塊的詞長變化最小(Smallest variance of word lengths );
備選詞塊中(若有)單字的出現詞自由度最高(Largest sum of degree of morphemic freedom of one-character words)。
參考鏈接:http://www.cnblogs.com/en-heng/p/5872308.html
4、分詞結果提交
由于以上三種模式都未能對人名、大學名等專有名詞進行正確的分詞,我在這里采用自定義詞庫的方法進行改進。
4.1修改solrconfig.xml配置,添加如下內容
<requestHandler name="/mmseg4j/reloadwords" class="com.chenlb.mmseg4j.solr.MMseg4jHandler">
<lst name="defaults">
<!--詞庫路徑-->
<str name="dicPath">D:\solr-6.5.1\server\solr\zhh\conf</str>
<str name="check">true</str>
<str name="reload">true</str>
</lst>
</requestHandler>
注意:縮進問題同樣不能忽略,不然會出現solr無法加載自定義詞庫的現象,而且報錯的時候只會告訴你不能加載,不會告訴你為什么不能加載,要是不知道是縮進的問題,可能很久都找不到是什么原因。
4.2在自定義詞庫目錄下放入詞庫
自定義詞庫可識別到文件名為words開頭,.dic為文件結尾的UTF-8格式的文件。如在自定義詞詞庫下創建words-zhh.dic。如果是帶BOM的UTF8文件, 第一行為空即可。每行一個詞。
4.3重啟solr并進行分詞
由上圖可以看出,已經成功加載自定義詞庫。
4.4分詞結果
參考鏈接:Solr動態加載分詞器的自定義詞庫擴展詞庫解決方案
5、基于分詞結果的詞云分析(詞頻統計+可視化)
工具:圖悅在線詞頻分析工具