Solr與開源中文分詞(ansj)整合
1. ansj分詞原始碼及jar包下載地址
原始碼:
https://github.com/NLPchina/ansj_seg
jar包:
http://maven.nlpcn.org/org/ansj/
http://maven.nlpcn.org/org/nlpcn/nlp-lang
2. 在solr使用ansj分詞
(1) ansj的solr擴充套件及編譯
ansj支援了lucene的擴充套件,使用下面幾個jar包:
ansj_lucene4_plug-2.0.2.jar
ansj_seg-2.0.8-min.jar
nlp-lang-0.3.jar
要在solr中使用ansj,可以在lucene外掛的原始碼上做一下擴充套件:
外掛的程式碼目錄(maven工程)為ansj_seg/plug/ansj_lucene4_plug,匯入此maven工程,配置好依賴關係,增加一個solr擴充套件類AnsjTokenizerFactory.
編譯後生成一個新的ansj_lucene4_plug-2.0.2.jar包,重新命名為ansj_lucene4_plug-2.0.2-solr.jar.
(2) 在tomcat+solr中使用ansj分詞擴充套件並進行配置package org.ansj.solr; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.ansj.lucene.util.AnsjTokenizer; import org.ansj.splitWord.analysis.IndexAnalysis; import org.ansj.splitWord.analysis.ToAnalysis; import org.apache.lucene.analysis.Tokenizer; import org.apache.lucene.analysis.util.TokenizerFactory; import org.apache.lucene.util.AttributeFactory; public class AnsjTokenizerFactory extends TokenizerFactory{ boolean pstemming; boolean isQuery; private String stopwordsDir; public Set<String> filter; public AnsjTokenizerFactory(Map<String, String> args) { super(args); assureMatchVersion(); isQuery = getBoolean(args, "isQuery", true); pstemming = getBoolean(args, "pstemming", false); stopwordsDir = get(args,"stopwords"); addStopwords(stopwordsDir); } //add stopwords list to filter private void addStopwords(String dir) { if (dir == null){ System.out.println("no stopwords dir"); return; } //read stoplist System.out.println("stopwords: " + dir); filter = new HashSet<String>(); File file = new File(dir); InputStreamReader reader; try { reader = new InputStreamReader(new FileInputStream(file),"UTF-8"); BufferedReader br = new BufferedReader(reader); String word = br.readLine(); while (word != null) { filter.add(word); word = br.readLine(); } } catch (FileNotFoundException e) { System.out.println("No stopword file found"); } catch (IOException e) { System.out.println("stopword file io exception"); } } @Override public Tokenizer create(AttributeFactory factory, Reader input) { if(isQuery == true){ //query return new AnsjTokenizer(new ToAnalysis(new BufferedReader(input)), input, filter, pstemming); } else { //index return new AnsjTokenizer(new IndexAnalysis(new BufferedReader(input)), input, filter, pstemming); } } }
將下列jar包放在${tomcat}/webapps/solr/WEB-INF/lib/目錄下:
ansj_lucene4_plug-2.0.2-solr.jar
ansj_seg-2.0.8-min.jar
nlp-lang-0.3.jar
solr資料集的schema.xml中增加text_ansj分詞配置:
<fieldType name="text_ansj" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.ansj.solr.AnsjTokenizerFactory" isQuery="false" stopwords="/xxx/tomcat/apache-tomcat-8.0.9/webapps/solr/WEB-INF/classes/stopwords.dic"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.ansj.solr.AnsjTokenizerFactory" stopwords="/xxx/tomcat/apache-tomcat-8.0.9/webapps/solr/WEB-INF/classes/stopwords.dic"/>
</analyzer>
</fieldType>
(3) 使用ansj分詞配置及自定義詞典
將下列檔案放在${tomcat}/webapps/solr/WEB-INF/classes目錄下:
ansj_seg/library
ansj_seg/train_file
ansj_seg/library.properties
注意library.properties中的配置路徑,通常需要使用絕對路徑,相對路徑是相對於tomcat的啟動目錄而言的。
------
相對ik分詞,ansj準確度更高。
IK分詞在細粒度模式下有些錯誤的詞被分出來,英文分詞時會將單詞切割開:如javascript可能會分成ja,java,javascript; nagios可能被切分成nagios,ios, 檢索時會出現問題。
相關推薦
Solr與開源中文分詞(ansj)整合
1. ansj分詞原始碼及jar包下載地址 原始碼: https://github.com/NLPchina/ansj_seg jar包: http://maven.nlpcn.org/org/ansj/ http://maven.nlpcn.org/org/nlpcn/n
solr與ik中文分詞的配置,以及新增Core(Add Core)的方式
在下用的版本是solr7.2.1與ikanalyzer-solr6.5: 說明:在solr版本5之後就可以不用依賴tomcat進行啟動,可以自行啟動,啟動方式下面會進行講解。 需要注意的是:對於solr6以下的版本可用jdk7,從solr6開始只能使用jdk8了。 so
開源中文分詞工具探析(三):Ansj
Ansj是由孫健(ansjsun)開源的一箇中文分詞器,為ICTLAS的Java版本,也採用了Bigram + HMM分詞模型(可參考我之前寫的文章):在Bigram分詞的基礎上,識別未登入詞,以提高分詞準確度。雖然基本分詞原理與ICTLAS的一樣,但是Ansj做了一些工程上的優化,比如:用DAT高效地實現檢
開源中文分詞工具探析(六):Stanford CoreNLP
inf git deb seq 效果 analysis stream fix sps CoreNLP是由斯坦福大學開源的一套Java NLP工具,提供諸如:詞性標註(part-of-speech (POS) tagger)、命名實體識別(named entity recog
7個優秀的開源中文分詞庫推薦
中文分詞是中文文字處理的基礎步驟,也是中文人機自然語言互動的基礎模組。由於中文句子中沒有詞的界限,因此在進行中文自然語言處理時,通常需要先進行分詞。 縱觀整個開源領域,陸陸續續做中文分詞的也有不少,不過目前仍在維護的且質量較高的並不多。下面整理了一些個人認為比較優秀的中文分詞庫,以供大家
Hanlp等七種優秀的開源中文分詞庫推薦
中文分詞是中文文字處理的基礎步驟,也是中文人機自然語言互動的基礎模組。由於中文句子中沒有詞的界限,因此在進行中文自然語言處理時,通常需要先進行分詞。 縱觀整個開源領域,陸陸續續做中文分詞的也有不少,不過目前仍在維護的且質量較高的並不多。下面整理了一些個人認為比較優秀的中文分
學習筆記:從0開始學習大資料-29. solr增加ik中文分詞器並匯入doc,pdf文件全文檢索
環境 centos7,solr7.5.0 1. 新建core 從 solr-7.5.0/example/files/conf 作為配置檔案模板,建立core,名為mycore 2.下載分詞器 從https://search.maven.org/search?q=g:com
Solr安裝及中文分詞器配置
1、上傳並解壓Solr、Tomcat 2、複製Solr到Tomcat cp -r solr-7.3.1/server/solr-webapp/webapp /home/tomcat/webapps/solr 3、複製jar包到Tomcat下的Solr cp -
10大Java開源中文分詞器的使用方法和分詞效果對比
原文地址:http://my.oschina.net/apdplat/blog/412921 本文的目標有兩個: 1、學會使用10大Java開源中文分詞器 2、對比分析10 大Java開源中文分詞器的分詞效果 本文給出了10大Java開源中文分詞的使用方法以及分詞
【NLP】11大Java開源中文分詞器的使用方法和分詞效果對比
本文的目標有兩個: 1、學會使用11大Java開源中文分詞器 2、對比分析11大Java開源中文分詞器的分詞效果 本文給出了11大Java開源中文分詞的使用方法以及分詞結果對比程式碼,至於效果哪個好,那要用的人結合自己的應用場景自己來判斷。 11大Java開源中文分詞器,不同的分詞器
開源中文分詞工具探析(七):LTP
LTP是哈工大開源的一套中文語言處理系統,涵蓋了基本功能:分詞、詞性標註、命名實體識別、依存句法分析、語義角色標註、語義依存分析等。 【開源中文分詞工具探析】系列: 1. 前言 同THULAC一樣,LTP也是基於結構化感知器(Structured Perceptron, SP),以最大熵準則建模標註序列
開源中文分詞工具探析(四):THULAC
THULAC是一款相當不錯的中文分詞工具,準確率高、分詞速度蠻快的;並且在工程上做了很多優化,比如:用DAT儲存訓練特徵(壓縮訓練模型),加入了標點符號的特徵(提高分詞準確率)等。 【開源中文分詞工具探析】系列: 1. 前言 THULAC所採用的分詞模型為結構化感知器(Structured Percep
開源中文分詞工具探析(五):FNLP
FNLP是由Fudan NLP實驗室的邱錫鵬老師開源的一套Java寫就的中文NLP工具包,提供諸如分詞、詞性標註、文字分類、依存句法分析等功能。 【開源中文分詞工具探析】系列: 1. 前言 類似於THULAC,FNLP也是採用線性模型(linear model)分詞。較於對數線性模型(log-linea
SolrCloud-5.5.1配置中文分詞ansj-3.4.6
今天分享一下這兩天倒持的給solr5.5.1配置中文分詞的一些事項,本人剛剛開始研究SolrCloud,比照網上的教程與自己親身試驗的總結一下,通過這兩天的折騰覺得找對匹配的版本是頂頂重要的一件事。 首先按照網上的教程來: 第一步,下載ansj的
Solr之配置中文分詞器
1、使用solr自帶分詞器 1.1、拷貝Jar包 cp /opt/solr/solr-7.3.1/contrib/analysis-extras/lucene-libs/lucene-ana
solr6.4+拼音分詞與ik中文分詞
整理一下前端時間用的solr結合拼音分詞與ik中文分詞。solr比lucene封裝較好,可以直接在配置檔案中配置這些分詞就可以直接用。 主要工具包: pinyinAnalyzer.jar ik-analyzer-solr6.x.jar pinyin4j-2.5.0
solr 7+tomcat 8 + mysql實現solr 7基本使用(安裝、整合中文分詞器、定時同步資料庫資料以及專案整合)
基本說明 Solr是一個開源專案,基於Lucene的搜尋伺服器,一般用於高階的搜尋功能; solr還支援各種外掛(如中文分詞器等),便於做多樣化功能的整合; 提供頁面操作,檢視日誌和配置資訊,功能全面。 solr 7 + tomcat 8實現solr 7的安裝 Sol
solr 中文分詞mmeseg4j與ik analyzer效果對比
摘要: 之前用solr6成功集成了中文分詞mmeseg4j,也順利整合了ik analyzer,對比一下他們分詞的效果。 1884年,中法戰爭時被派福建會辦海疆事務。 ik analyzer:18
Solr之——整合mmseg4j中文分詞庫
在上一篇博文《Solr之——整合Tomcat》中,我們介紹了Solr與Tomcat的整合方式,還沒有閱讀上一篇博文的朋友,請先閱讀上一篇博文《Solr之——整合Tomcat》,本文是在上一篇博文的基礎上整合mmseg4j中文分詞詞庫的。下面我們一起來實現Solr與mmse
開源 Java 中文分詞器 Ansj 作者孫健專訪
Ansj 是一個開源的 Java 中文分詞工具,基於中科院的 ictclas 中文分詞演算法,比其他常用的開源分詞工具(如mmseg4j)的分詞準確率更高。 線上演示:http://ansj.sdapp.cn/demo/seg.jsp 官網地址:http://www.