分詞技術(shù)說(shuō)明書(shū)_第1頁(yè)
分詞技術(shù)說(shuō)明書(shū)_第2頁(yè)
分詞技術(shù)說(shuō)明書(shū)_第3頁(yè)
分詞技術(shù)說(shuō)明書(shū)_第4頁(yè)
分詞技術(shù)說(shuō)明書(shū)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)用標(biāo)準(zhǔn)文案分詞技術(shù)文檔說(shuō)明一.基本介紹1 .分詞技術(shù) 就是搜索引擎針對(duì)用戶提交查詢的關(guān)鍵詞串進(jìn)行的查詢處理后根據(jù)用戶的關(guān)鍵詞串用各種匹配方法進(jìn)行分詞的一種技術(shù)。2 .數(shù)據(jù)處理我們要理解分詞技術(shù)先要理解一個(gè)概念。那就是查詢處理,當(dāng)用戶向搜索引擎提交查詢后,搜索引擎接收到用戶的信息要做一系列的處理。步驟如下所示:(1) .首先是到數(shù)據(jù)庫(kù)里面索引相關(guān)的信息,這就是查詢處理。那么查詢處理又是如何工作的呢?很簡(jiǎn)單,把用戶提交的字符串沒(méi)有超過(guò)3個(gè)的中文字,就會(huì)直接到數(shù)據(jù)庫(kù)索引詞匯。超過(guò) 4個(gè)中文字的,首先用分隔符比如空格,標(biāo)點(diǎn)符號(hào),將查詢 串分割成若干子查詢串。舉個(gè)例子。“什么是百度分詞技術(shù)”我們就會(huì)把

2、這個(gè)詞分割成 “什么是,百度,分詞技術(shù)?!边@種分詞方法叫做反向匹配法。(2) .然后再看用戶提供的這個(gè)詞有沒(méi)有重復(fù)詞匯如果有的話,會(huì)丟棄掉, 默認(rèn)為一個(gè)詞匯。接下來(lái)檢查用戶提交的字符串,有沒(méi)有字母和數(shù)字。如果有的話,就把字母和數(shù)字認(rèn)為一個(gè)詞。這就是搜索引擎的查詢處理。3.分詞原理(1) .正向最大匹配法就是把一個(gè)詞從左至右來(lái)分詞。舉個(gè)例子:”不知道你在說(shuō)什么”這句話采用正向最大匹配法是如何分的呢? “不知道,你,在,說(shuō)什么”。(2) .反向最大匹配法"不知道你在說(shuō)什么"反向最大匹配法來(lái)分上面這段是如何分的?!安?,知道,你在,說(shuō),什么",這個(gè)就分的比較多了,反向最大

3、匹配法就是從右至左。(3) .就是最短路徑分詞法。就是說(shuō)一段話里面要求切出的詞數(shù)是最少的?!安恢滥阍谡f(shuō)什么"最短路徑分詞法就是指,把上面那句話分成的詞要是最少的?!安恢?,你在,說(shuō)什么",這就是最短路徑分詞法,分出來(lái)就只有3個(gè)詞了。(4) .雙向最大匹配法。而有一種特殊的情況,就是關(guān)鍵詞前后組合內(nèi)容被認(rèn)為粘性相差不大,而搜索結(jié)果中也同時(shí)包含這兩組詞的話,百度會(huì)進(jìn)行正反向同時(shí)進(jìn)行分詞匹配。二.技術(shù)說(shuō)明Lucene是一個(gè)開(kāi)放源代碼的全文檢索引擎工具包,但它不是一個(gè)完整的全文檢索引擎,而是一個(gè)全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎,部分文本分析引擎ik :采用了特有

4、的“正向迭代最細(xì)粒度切分算法“,多子處理器分析模式。paoding : Lucene中文分詞"庖丁解牛"Paoding Analysis 。主要優(yōu)勢(shì)在于原生支持詞庫(kù)更新檢測(cè)。主要劣勢(shì)為作者已經(jīng)不更新甚至不維護(hù)了。mmseg4j :用 MMSeg算法實(shí)現(xiàn)的中文分詞器。在 complex基礎(chǔ)上實(shí)現(xiàn)了最多分詞 (max-word),但是還不成熟,還有很多需要改進(jìn)的地方。Smartcn :從自定義詞庫(kù)的角度考慮,因?yàn)?smartcn在Lucene4.6中的版本,目前不支持自 定義詞庫(kù),成為致命缺陷,只能放棄。(一):ik Analyzer說(shuō)明:在IKAnalyzer2012 中分詞

5、器有兩個(gè):一個(gè)是IKAnalyzer,另外一個(gè)是IKSegmenter。 前者繼承Lucene,而后者是可以獨(dú)立。IK2012具有160萬(wàn)字/秒(3000KB/S)IK Analyzer是一個(gè)開(kāi)源的,基于 java語(yǔ)言開(kāi)發(fā)的輕量級(jí)的中文分詞工具包。從 2006年12月推出1.0版開(kāi)始,IKAnalyzer已經(jīng)推出了 4個(gè)大版本。最初,它是以開(kāi)源項(xiàng)目Luence 為應(yīng)用主體的,結(jié)合詞典分詞和文法分析算法的中文分詞組件。從 3.0版本開(kāi)始,IK發(fā)展 為面向Java的公用分詞組件,獨(dú)立于Lucene項(xiàng)目,同時(shí)提供了對(duì)Lucene的默認(rèn)優(yōu)化實(shí)現(xiàn)。 在2012版本中,IK實(shí)現(xiàn)了簡(jiǎn)單的分詞歧義排除算法,標(biāo)

6、志著 IK分詞器從單純的詞典分詞 向模擬語(yǔ)義分詞衍化。IK Analyzer 2012 特性: 優(yōu)點(diǎn):1 .采用了特有的“正向迭代最細(xì)粒度切分算法”,具有 60萬(wàn)字/秒的高速處理能力。2 .采用了多子處理器分析模式,支持:英文字母( IP地址、Email、URD、數(shù)字(日期, 常用中文數(shù)量詞,羅馬數(shù)字,科學(xué)計(jì)數(shù)法),中文詞匯(姓名、地名處理)等分詞處理。3 .優(yōu)化的詞典存儲(chǔ),更小的內(nèi)存占用。支持用戶詞典擴(kuò)展定義。(1) .基于 Lucene 實(shí)現(xiàn) 需要 IKAnalyzer-5.0.1.jar 和 lucene 相關(guān) jar 包/,區(qū)于工口£巨n巳羽見(jiàn)IKAnalyzer-5.0.1

7、.1己工和工??谠?13相關(guān)工a1:包public void setlucene(String text)I try (/創(chuàng)建分i酬費(fèi) Analyzer anal=new iRAnalyzer(true) ;/true智能切分stringReader readei:=new stringReadler (text);Tokenstream ts=ania 1 e tokenstreamreader);ts. reset () ; /必須先調(diào)用工會(huì)與邑七方法Ch a r T e rrnAt t r i bu t e term=t s a get At tribute (Cha rTerrnAt

8、tribute - class); /苣歷分詞翱據(jù) while (t.s . increm&ntToken () ) System, out .print (term. toString O |) reader . close (); t;s close ();System.out pzintln(); ) catch (lOException e) eprintStackTrace () ;|(2) .獨(dú)立Lucene實(shí)現(xiàn)只需要引用IKAnalyzer-5.0.1.jar 即可獨(dú)立工口心白幾白實(shí)現(xiàn) .只率1!引用工KAnmlywQE-S ,0.1.33匕即可 puibllo void

9、 setlEAnalyaers (String text)( try Conf i gu r a t ion cfg = De fault Config - gretZzi stance ();Systeni. out. print In. (af g a getExtStopWardDictionarys ();擴(kuò)愍停止直亨明System, out. printin. (cfg . getExtDict-icinarys () )/ 獷縣手曲System- out. println (cfg. getMainDictionar y () ) ; / 生洞3S使System. out.prin

10、tin (cfg.getQuantifieroicionary () ) ; /里句向典路tl Dictionary, iziitlsl (cfg);Dietionary dg = Dietionary - getSingrletoin ();Liet<St.ring> list=new ArrayList<Stringi> ();list B add (5) ?dg.addwosds(list);StringReadler sr=new stringReader ;,/!1幅設(shè)置為1:口1曰則褰示智能力河«。睞設(shè)置為則表示力細(xì)粒度分割I(lǐng)KSegmenter

11、ik=new IKSegmenter (srr false) ;/加果不設(shè)置乳也為工己工閂用 也我是妞粗營(yíng)外甥Lexeme lex=nul1 *while ( (lex=ik.n&3ic (.) !=tiull Sys tern. out. print (lex T getLeKemeText () 4-'11r,) ; ) caitGh (IOE xcept i on e) e - print Stack.Trace ();)(二).paodingAnalyzer說(shuō)明:支持不限制個(gè)數(shù)的用戶自定義詞庫(kù),純文本格式,一行一詞,使用后臺(tái)線程檢測(cè)詞庫(kù)的更新,自動(dòng)編譯更新過(guò)的詞庫(kù)到二進(jìn)

12、制版本,并加載,在PIII 1G內(nèi)存?zhèn)€人機(jī)器上,1秒 可準(zhǔn)確分詞 100萬(wàn)漢字。(2000KB/S) 優(yōu)點(diǎn):1 .高擴(kuò)展性:能非常方便的擴(kuò)充字典,也可以非常方便的添加停用詞。2 .效率極高-極高效率的字典查找算法;盡量避免無(wú)謂試探查找。3 .算法簡(jiǎn)練-簡(jiǎn)單易理解的算法,但效率卻是非常高效的。4 .輕松支持最大/最小切詞。缺點(diǎn):1.分詞精確度不好,涉及了漢語(yǔ)語(yǔ)義的問(wèn)題,幾乎不可完全解決。如:“和服”實(shí)例。安裝步驟:1 .需要 jar 包 paoding-analysis.jar , lucene-analyzers-2.2.0.jar , lucene-core-2.2.0.jar , luce

13、ne-highlighter-2.2.0.jar , commons-logging.jar2 .配置環(huán)境變量 PAODING DIC HOM變量名:PAODING DIC HOM豉量值: F:WorkspacesSearchEngineByPaodingWebRootdic (此路徑根據(jù)實(shí)際情況而定),dic文件夾下面全部是定義的字典信息 修改paoding .dic .home .config-fisrt=this ,使得程序知道該配置文件修改paoding .dic .home =classpath:dic ,指定字典的所在路徑。絕對(duì)路徑也可以,但 是不好3 .新建文件 paoding-

14、perties 在 src 文件夾 下面,然 后添加 paoding.dic.home=F:WorkspacesSearchEngineByPaodingWebRootdic ( 此路徑根據(jù)實(shí) 際情況而定)4 .x-noise-charactor.dic 和 x-noise-word.dic 存放忽略的字典庖丁有兩種分詞模式:most-words :最大詞量分詞方式,此模式對(duì)應(yīng)的詞典編譯類為MostWordsModeDictionariesCompilermax-word-length :按詞在詞典中的原序來(lái)進(jìn)行編譯,基本不再做其他處理,此模式對(duì)應(yīng)的詞典編譯類為 Sor

15、tingDictionariesCompiler most-words是默認(rèn)的分詞模式。一種是 MOST_WORDS,中是 MAX_WORD_LENGTH者表示盡可能多的分詞,即華中科 技大學(xué)大學(xué)將被分為“華中、華中科技、華中科技大學(xué)、科技、大學(xué)”,在 CJKKnife中, 當(dāng)它遇到“華中”的時(shí)候,就會(huì)開(kāi)始collect,然后把它移到結(jié)尾,在分出“華中科技”和“華中科技大學(xué)”后,“華”字開(kāi)頭的就切玩了,然后跳出小循環(huán),進(jìn)行下一輪的大循環(huán), 移動(dòng)開(kāi)始位置,即“中”字,繼續(xù)采用這個(gè)策略來(lái)切詞,這樣就會(huì)把詞盡可能的多切,這種 方式在索引的時(shí)候最好,可以保證盡可能多的關(guān)鍵字,這樣找到的機(jī)會(huì)就比較大。如

16、果采用后者模式,它直接將上面分出“華中,華中科技,華中科技大學(xué),科技,大學(xué)”只講最長(zhǎng)的 一個(gè) collect 。5 .(1).獨(dú)立于 lucene/m “庖丁第?!敝形姆衷~器的分詞效果public void setPaodlnqAnalysis()StringReader reader = null;Tokenstream ts = null; try ( Analyzer analyzer = new PaodingAnalyzer(); String indexStr ="大家好! T,; reader = new StringReader(indexStr); ts = ana

17、lyzer.tokenStream(indexStr, reader); Token t = ts * next(); while (t != null) System.print ft - termText () 4-M;t = ts »next (); ) catch (lOException e) e.printStackTrace(); finally try ( if(reader J = null) reader “ close(); if(reader J null) tsclose(); catch (lOException e) e.printStackTrace(

18、); )l(3) .mmseg4j說(shuō)明:自帶sogou詞庫(kù),支持名為 wordsxxx.dic , utf8文本格式的用戶自定義詞庫(kù),一行一詞。不支持自動(dòng)檢測(cè)。complex 1200kb/s 左右,simple 1900kb/s 左右1、sogou詞庫(kù),不是用官方的文件,因?yàn)楣俜降奈募性~頻等信息,加載比較慢。就把這些信息去了,轉(zhuǎn)換了下,一行一詞,并且轉(zhuǎn)換為UTF-8的文件,目前sogou詞庫(kù)有15W多。2、mmseg4j-1.5 版的分詞速度 simple 算法是 1900kb/s 左右、complex 算法是 1200kb/s 左右,complex 比 IK 要快,沒(méi) paoding 快

19、(2000KB/S 左右),simple 方式比 paoding 快。 配置:1 .需要引用 mmseg4j-1.9.2.jar 和 lucene-core-5.1.0.jar/I. complex public void setMniseg4jComplex ) try (String txt = O1" txt =' ”武漢理工大學(xué)”;File file = new File (11F: /Workspaces/SearchEn.gineBymmseg4j/WebRoot/dicia) j / Dictionary die = Dietionazy, getlnstanc

20、ef file) ;與滕老的柝事中不相加不能亙接口日叫£eg seg - new Cornpl exSe(die);MMSag mmSeg = new MMSeg(new StringReader(txt), seg); Word word = null;while ( (word = nim£eg.m&x:t(j ) ! =null ( if(wod 1= null) Systeni- out.print (word + lp i|11); i )catch (lOException e) eprirttfilLaEkTrace (|); (4) .Smarten

21、 分詞Smarten 是ICTCLAS(漢語(yǔ)詞法分析系統(tǒng))簡(jiǎn)化后的版本;沒(méi)有詞性標(biāo)注;沒(méi)有人名、地 名識(shí)別;采用的動(dòng)態(tài)規(guī)劃計(jì)算最短路徑。精彩文檔特性:1.從自定義詞庫(kù)的角度考慮,因?yàn)閟marten在Lucene4.6中的版本,目前不支持自定義詞庫(kù),成為致命缺陷2.smarten為L(zhǎng)ucene4.6版本自帶(之前版本也有),中文分詞不錯(cuò),英文分詞有問(wèn)題,Lucene 分詞后變成了 Luncn3.對(duì)中文支持稍好,但擴(kuò)展性差 /smarten public void setSmartcn O!try ( / 9 19 String text ="到lit蜩眄黜同行性"; /String test = 目前去已身:用了工uesn日4Q.星區(qū)是mlphaJS'怛是也是未來(lái)的第一歲口但是工KAnwly蕓101不支持。后可?如果作,在, / S義倬用誨 String: self_stop_words = ”的 喳* * 工隰*、"尸,,;、"是' .流” ;CharArzaySet

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論