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

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

ID:33698429

大?。?97.00 KB

頁數(shù):9頁

時間:2019-02-28

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

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

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

2、子分詞方式,CJKTokenizer采用二元覆蓋方式。1、Lucene切分原理????????Lucene中負(fù)責(zé)語言處理的部分在org.apache.lucene.analysis包,其中,TokenStream類用來進(jìn)行基本的分詞工作,Analyzer類是TokenStream的包裝類,負(fù)責(zé)整個解析工作,Analyzer類接收整段文本,解析出有意義的詞語。??????通常不需要直接調(diào)用分詞的處理類analysis,而是由Lucene內(nèi)存內(nèi)部來調(diào)用,其中:??????(1)在索引階段,調(diào)用addDocument(do

3、c)時,Lucene內(nèi)部使用Analyzer來處理每個需要索引的列,具體如下圖:???????圖1Lucene對索引文本的處理??????IndexWriterindex=newIndexWriter(indexDirectory,??????????????????????????????????????????????????newCnAnalyzer(),??????//用于支持分詞的分析器??????????????????????????????????????????????????!incrementa

4、l,??????????????????????????????????????????????????IndexWriter.MaxFieldLength.UNLIMITED);??????(2)在搜索階段,調(diào)用QueryParser.parse(queryText)來解析查詢串時,QueryParser會調(diào)用Analyzer來拆分查詢字符串,但是對于通配符等查詢不會調(diào)用Analyzer。??????Analyzeranalyzer=newCnAnalyzer();??????????????????????//支

5、持中文的分詞??????QueryParserparser=newQueryParser(Version.LUCENE_CURRENT,"title",analyzer);??????因?yàn)樵谒饕退阉麟A段都調(diào)用了分詞過程,索引和搜索的切分處理要盡量一致,所以分詞效果改變后需要重建索引。??????為了測試Lucene的切分效果,下面是直接調(diào)用Analysis的例子:??????Analyzeranalyzer=newCnAnalyzer();??????????????????????//創(chuàng)建一個中文分析器?????

6、?TokenStreamts=analyzer.tokenStream("myfield",newStringReader("待切分文本"));??//取得Token流??????while(ts.incrementToken()){??????????????????????????????????//取得下一個詞??????????????System.out.println("token:?"+ts);??????}2、Lucene中的Analyzer??????為了更好地搜索中文,通過下圖來了解一下在Luce

7、ne中通過WhitespaceTokenizer、WordDelimiterFilter、LowercaseFilter處理英文字符串的流程:圖2Lucene處理英文字符串流程二、查找詞典算法??????詞典格式可以是方便人工查看和編輯的文本文件格式,也可以是方便機(jī)器讀入的二進(jìn)制格式。詞典的最基本文本文件格式就是每行一個詞。在基于詞典的中文分詞方法中,詞典匹配算法是基礎(chǔ)。一般詞典規(guī)模都在幾十萬詞以上,所以為了保證切分速度,需要選擇一個好的查找詞典算法。1、標(biāo)準(zhǔn)Trie樹??????一個數(shù)字搜索Trie樹的一個節(jié)點(diǎn)只保

8、留一個字符,如果一個單詞比一個字符長,則包含第一個字符的節(jié)點(diǎn)有指針指向下一個字符的節(jié)點(diǎn),依次類推。這樣組成一個層次結(jié)構(gòu)的樹,樹的第一層包括所有單詞的第一個字符,樹的第二層包括所有單詞的第二個字符,依次類推,數(shù)字搜索樹的最大高度是詞典中最長單詞的長度。比如:如下單詞序列組成的詞典(asatbebyheinisitofonorto)會生成如下圖所示

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

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

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