搜索引擎中文分詞原理與實(shí)現(xiàn)

搜索引擎中文分詞原理與實(shí)現(xiàn)

ID:10844713

大?。?97.00 KB

頁(yè)數(shù):9頁(yè)

時(shí)間:2018-07-08

搜索引擎中文分詞原理與實(shí)現(xiàn)_第1頁(yè)
搜索引擎中文分詞原理與實(shí)現(xiàn)_第2頁(yè)
搜索引擎中文分詞原理與實(shí)現(xiàn)_第3頁(yè)
搜索引擎中文分詞原理與實(shí)現(xiàn)_第4頁(yè)
搜索引擎中文分詞原理與實(shí)現(xiàn)_第5頁(yè)
資源描述:

《搜索引擎中文分詞原理與實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、搜索引擎中文分詞原理與實(shí)現(xiàn)因?yàn)橹形奈谋局?,詞和詞之間不像英文一樣存在邊界,所以中文分詞是一個(gè)專業(yè)處理中文信息的搜索引擎首先面對(duì)的問題,需要靠程序來切分出詞。一、Lucene中的中文分詞????????Lucene在中處理中文的常用方法有三種,以“咬死獵人的狗”為例說明之:??????單???字:【咬】【死】【獵】【人】【的】【狗】??????二元覆蓋:【咬死】【死獵】【獵人】【人的】【的狗】??????分???詞:【咬】【死】【獵人】【的】【狗】????????Lucene中的StandardTokenizer采用單子分詞方式,CJKTokenizer采用二元覆蓋方式

2、。1、Lucene切分原理????????Lucene中負(fù)責(zé)語言處理的部分在org.apache.lucene.analysis包,其中,TokenStream類用來進(jìn)行基本的分詞工作,Analyzer類是TokenStream的包裝類,負(fù)責(zé)整個(gè)解析工作,Analyzer類接收整段文本,解析出有意義的詞語。??????通常不需要直接調(diào)用分詞的處理類analysis,而是由Lucene內(nèi)存內(nèi)部來調(diào)用,其中:??????(1)在索引階段,調(diào)用addDocument(doc)時(shí),Lucene內(nèi)部使用Analyzer來處理每個(gè)需要索引的列,具體如下圖:???????圖1Luc

3、ene對(duì)索引文本的處理??????IndexWriterindex=newIndexWriter(indexDirectory,??????????????????????????????????????????????????newCnAnalyzer(),??????//用于支持分詞的分析器??????????????????????????????????????????????????!incremental,??????????????????????????????????????????????????IndexWriter.MaxFieldLength

4、.UNLIMITED);??????(2)在搜索階段,調(diào)用QueryParser.parse(queryText)來解析查詢串時(shí),QueryParser會(huì)調(diào)用Analyzer來拆分查詢字符串,但是對(duì)于通配符等查詢不會(huì)調(diào)用Analyzer。??????Analyzeranalyzer=newCnAnalyzer();??????????????????????//支持中文的分詞??????QueryParserparser=newQueryParser(Version.LUCENE_CURRENT,"title",analyzer);??????因?yàn)樵谒饕退阉麟A段都調(diào)

5、用了分詞過程,索引和搜索的切分處理要盡量一致,所以分詞效果改變后需要重建索引。??????為了測(cè)試Lucene的切分效果,下面是直接調(diào)用Analysis的例子:??????Analyzeranalyzer=newCnAnalyzer();??????????????????????//創(chuàng)建一個(gè)中文分析器??????TokenStreamts=analyzer.tokenStream("myfield",newStringReader("待切分文本"));??//取得Token流??????while(ts.incrementToken()){?????????????

6、?????????????????????//取得下一個(gè)詞??????????????System.out.println("token:?"+ts);??????}2、Lucene中的Analyzer??????為了更好地搜索中文,通過下圖來了解一下在Lucene中通過WhitespaceTokenizer、WordDelimiterFilter、LowercaseFilter處理英文字符串的流程:圖2Lucene處理英文字符串流程二、查找詞典算法??????詞典格式可以是方便人工查看和編輯的文本文件格式,也可以是方便機(jī)器讀入的二進(jìn)制格式。詞典的最基本文本文件格式就

7、是每行一個(gè)詞。在基于詞典的中文分詞方法中,詞典匹配算法是基礎(chǔ)。一般詞典規(guī)模都在幾十萬詞以上,所以為了保證切分速度,需要選擇一個(gè)好的查找詞典算法。1、標(biāo)準(zhǔn)Trie樹??????一個(gè)數(shù)字搜索Trie樹的一個(gè)節(jié)點(diǎn)只保留一個(gè)字符,如果一個(gè)單詞比一個(gè)字符長(zhǎng),則包含第一個(gè)字符的節(jié)點(diǎn)有指針指向下一個(gè)字符的節(jié)點(diǎn),依次類推。這樣組成一個(gè)層次結(jié)構(gòu)的樹,樹的第一層包括所有單詞的第一個(gè)字符,樹的第二層包括所有單詞的第二個(gè)字符,依次類推,數(shù)字搜索樹的最大高度是詞典中最長(zhǎng)單詞的長(zhǎng)度。比如:如下單詞序列組成的詞典(asatbebyheinisitofonorto)會(huì)生成如下圖所示

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。