分词相关技术(转载)
最近在做問(wèn)答系統(tǒng),自己在園子里面找了下資料,覺(jué)得不錯(cuò),自己是菜鳥(niǎo)原創(chuàng)不行,廢話(huà)不多說(shuō)了,送上資料。
第一個(gè)是關(guān)于Lucene的分詞技術(shù)
這里可以下載PDF看,Lucene 原理與代碼分析完整版?
?
目錄如下:
?
?
目錄
目錄
第一篇:原理篇
第一章:全文檢索的基本原理
一、總論
二、索引里面究竟存些什么
三、如何創(chuàng)建索引
第一步:一些要索引的原文檔(Document)。
第二步:將原文檔傳給分次組件(Tokenizer)。
第三步:將得到的詞元(Token)傳給語(yǔ)言處理組件(Linguistic Processor)。
第四步:將得到的詞(Term)傳給索引組件(Indexer)。
1.?利用得到的詞(Term)創(chuàng)建一個(gè)字典。
2.?對(duì)字典按字母順序進(jìn)行排序。
3.?合并相同的詞(Term)成為文檔倒排(Posting List)鏈表。
四、如何對(duì)索引進(jìn)行搜索?
第一步:用戶(hù)輸入查詢(xún)語(yǔ)句。
第二步:對(duì)查詢(xún)語(yǔ)句進(jìn)行詞法分析,語(yǔ)法分析,及語(yǔ)言處理。
1.?詞法分析主要用來(lái)識(shí)別單詞和關(guān)鍵字。
2.?語(yǔ)法分析主要是根據(jù)查詢(xún)語(yǔ)句的語(yǔ)法規(guī)則來(lái)形成一棵語(yǔ)法樹(shù)。
3.?語(yǔ)言處理同索引過(guò)程中的語(yǔ)言處理幾乎相同。
第三步:搜索索引,得到符合語(yǔ)法樹(shù)的文檔。
第四步:根據(jù)得到的文檔和查詢(xún)語(yǔ)句的相關(guān)性,對(duì)結(jié)果進(jìn)行排序。
1.?計(jì)算權(quán)重(Term weight)的過(guò)程。
2.?判斷Term之間的關(guān)系從而得到文檔相關(guān)性的過(guò)程,也即向量空間模型的算法(VSM)。
第二章:Lucene的總體架構(gòu)
第二篇:代碼分析篇
第三章:Lucene的索引文件格式
一、基本概念
二、基本類(lèi)型
三、基本規(guī)則
1.?前綴后綴規(guī)則(Prefix+Suffix)
2.?差值規(guī)則(Delta)
3.?或然跟隨規(guī)則(A, B?)
4.?跳躍表規(guī)則(Skip list)
四、具體格式
4.1.?正向信息
4.1.1.?段的元數(shù)據(jù)信息(segments_N)
4.1.2.?域(Field)的元數(shù)據(jù)信息(.fnm)
4.1.3.?域(Field)的數(shù)據(jù)信息(.fdt,.fdx)
4.1.3.?詞向量(Term Vector)的數(shù)據(jù)信息(.tvx,.tvd,.tvf)
4.2.?反向信息
4.2.1.?詞典(tis)及詞典索引(tii)信息
4.2.2.?文檔號(hào)及詞頻(frq)信息
4.2.3.?詞位置(prx)信息
4.3.?其他信息
4.3.1.?標(biāo)準(zhǔn)化因子文件(nrm)
4.3.2.?刪除文檔文件(del)
五、總體結(jié)構(gòu)
第四章:Lucene索引過(guò)程分析
一、索引過(guò)程體系結(jié)構(gòu)
二、詳細(xì)索引過(guò)程
1、創(chuàng)建IndexWriter對(duì)象
2、創(chuàng)建文檔Document對(duì)象,并加入域(Field)
3、將文檔加入IndexWriter
4、將文檔加入DocumentsWriter
4.1、得到當(dāng)前線程對(duì)應(yīng)的文檔集處理對(duì)象(DocumentsWriterThreadState)
4.2、用得到的文檔集處理對(duì)象(DocumentsWriterThreadState)處理文檔
4.3、用DocumentsWriter.finishDocument結(jié)束本次文檔添加
5、DocumentsWriter對(duì)CharBlockPool,ByteBlockPool,IntBlockPool的緩存管理
6、關(guān)閉IndexWriter對(duì)象
6.1、得到要寫(xiě)入的段名
6.2、將緩存的內(nèi)容寫(xiě)入段
6.3、生成新的段信息對(duì)象
6.4、準(zhǔn)備刪除文檔
6.5、生成cfs段
6.6、刪除文檔
第五章:Lucene段合并(merge)過(guò)程分析
一、段合并過(guò)程總論
1.1、合并策略對(duì)段的選擇
1.2、反向信息的合并
二、段合并的詳細(xì)過(guò)程
2.1、將緩存寫(xiě)入新的段
2.2、選擇合并段,生成合并任務(wù)
2.2.1、用合并策略選擇合并段
2.2.2、注冊(cè)段合并任務(wù)
2.3、段合并器進(jìn)行段合并
2.3.1、合并存儲(chǔ)域
2.3.2、合并標(biāo)準(zhǔn)化因子
2.3.3、合并詞向量
2.3.4、合并詞典和倒排表
第六章:Lucene打分公式的數(shù)學(xué)推導(dǎo)
第七章:Lucene搜索過(guò)程解析
一、Lucene搜索過(guò)程總論
二、Lucene搜索詳細(xì)過(guò)程
2.1、打開(kāi)IndexReader指向索引文件夾
2.1.1、找到最新的segment_N文件
2.1.2、通過(guò)segment_N文件中保存的各個(gè)段的信息打開(kāi)各個(gè)段
2.1.3、得到的IndexReader對(duì)象如下
2.2、打開(kāi)IndexSearcher
2.3、QueryParser解析查詢(xún)語(yǔ)句生成查詢(xún)對(duì)象
2.4、搜索查詢(xún)對(duì)象
2.4.1、創(chuàng)建Weight對(duì)象樹(shù),計(jì)算Term Weight
2.4.2、創(chuàng)建Scorer及SumScorer對(duì)象樹(shù)
2.4.3、進(jìn)行倒排表合并
2.4.4、收集文檔結(jié)果集合及計(jì)算打分
2.4.5、Lucene如何在搜索階段讀取索引信息
第八章:Lucene的查詢(xún)語(yǔ)法,JavaCC及QueryParser
一、Lucene的查詢(xún)語(yǔ)法
二、JavaCC介紹
2.1、第一個(gè)實(shí)例——正整數(shù)相加
2.2、擴(kuò)展語(yǔ)法分析器
2.3、第二個(gè)實(shí)例:計(jì)算器
三、解析QueryParser.jj
3.1、聲明QueryParser類(lèi)
3.2、聲明詞法分析器
3.3、聲明語(yǔ)法分析器
第九章:Lucene的查詢(xún)對(duì)象
1、BoostingQuery
2、CustomScoreQuery
3、MoreLikeThisQuery
4、MultiTermQuery
4.1、TermRangeQuery
4.2、NumericRangeQuery
5、SpanQuery
5.1、SpanFirstQuery
5.2、SpanNearQuery
5.3、SpanNotQuery
5.4、SpanOrQuery
5.5、FieldMaskingSpanQuery
5.6、PayloadTermQuery及PayloadNearQuery
6、FilteredQuery
6.1、TermsFilter
6.2、BooleanFilter
6.3、DuplicateFilter
6.4、FieldCacheRangeFilter<T>及FieldCacheTermsFilter
6.5、MultiTermQueryWrapperFilter<Q>
6.6、QueryWrapperFilter
6.7、SpanFilter
6.7.1、SpanQueryFilter
6.7.2、CachingSpanFilter
第十章:Lucene的分詞器Analyzer
1、抽象類(lèi)Analyzer
2、TokenStream抽象類(lèi)
3、幾個(gè)具體的TokenStream
3.1、NumericTokenStream
3.2、SingleTokenTokenStream
4、Tokenizer也是一種TokenStream
4.1、CharTokenizer
4.2、ChineseTokenizer
4.3、KeywordTokenizer
4.4、CJKTokenizer
4.5、SentenceTokenizer
5、TokenFilter也是一種TokenStream
5.1、ChineseFilter
5.2、LengthFilter
5.3、LowerCaseFilter
5.4、NumericPayloadTokenFilter
5.5、PorterStemFilter
5.6、ReverseStringFilter
5.7、SnowballFilter
5.8、TeeSinkTokenFilter
6、不同的Analyzer就是組合不同的Tokenizer和TokenFilter得到最后的TokenStream
6.1、ChineseAnalyzer
6.2、CJKAnalyzer
6.3、PorterStemAnalyzer
6.4、SmartChineseAnalyzer
6.5、SnowballAnalyzer
7、Lucene的標(biāo)準(zhǔn)分詞器
7.1、StandardTokenizerImpl.jflex
7.2、StandardTokenizer
7.3、StandardFilter
7.4、StandardAnalyzer
8、不同的域使用不同的分詞器
8.1、PerFieldAnalyzerWrapper
第三篇:問(wèn)題篇
問(wèn)題一:為什么能搜的到“中華?AND?共和國(guó)”卻搜不到“中華共和國(guó)”?
問(wèn)題二:stemming和lemmatization的關(guān)系
問(wèn)題三:影響Lucene對(duì)文檔打分的四種方式
在索引階段設(shè)置Document Boost和Field Boost,存儲(chǔ)在(.nrm)文件中。
在搜索語(yǔ)句中,設(shè)置Query Boost.
繼承并實(shí)現(xiàn)自己的Similarity
繼承并實(shí)現(xiàn)自己的collector
問(wèn)題四:Lucene中的TooManyClause異常
問(wèn)題五:Lucene的事務(wù)性
問(wèn)題六:用Lucene構(gòu)建實(shí)時(shí)的索引
1、初始化階段
2、合并索引階段
3、重新打開(kāi)硬盤(pán)索引的IndexReader
4、替代IndexReader
5、多個(gè)索引
這個(gè)轉(zhuǎn)載至:http://www.cnblogs.com/forfuture1978/archive/2010/06/13/1757479.html
第二個(gè)關(guān)于HubbleDotNet全文檢索分詞的技術(shù):
目錄如下:
HubbleDotNet 簡(jiǎn)介
HubbleDotNet 和 Lucene.net 性能對(duì)比測(cè)試
HubbleDotNet 和 Lucene.Net 匹配相關(guān)度的比較
HubbleDotNet 軟件架構(gòu)
安裝和升級(jí)
?? 安裝
?? 升級(jí)
用戶(hù)權(quán)限--功能規(guī)劃中
?? 默認(rèn)帳號(hào)**
?? 添加帳號(hào)**
?? 帳號(hào)權(quán)限**
???
索引
?? Hubble.net 的數(shù)據(jù)庫(kù)和數(shù)據(jù)表
?????? Hubble.net 數(shù)據(jù)表的數(shù)據(jù)類(lèi)型
?????? 創(chuàng)建、刪除數(shù)據(jù)庫(kù)
?????? 創(chuàng)建數(shù)據(jù)表
?????? 為數(shù)據(jù)庫(kù)現(xiàn)有表或視圖建立全文索引(一) Append Only 模式
?????? 為數(shù)據(jù)庫(kù)現(xiàn)有表或視圖建立全文索引(二) Updatable 模式
?????? 為數(shù)據(jù)庫(kù)現(xiàn)有表或視圖建立全文索引(三) 多表關(guān)聯(lián)全文索引模式
?????? 通過(guò)程序和現(xiàn)有表或視圖同步
?????? 自動(dòng)和現(xiàn)有表同步
?????? 通過(guò)后臺(tái)任務(wù)自動(dòng)同步或優(yōu)化索引
?????? 自動(dòng)與Oracle中的數(shù)據(jù)同步解析
?? 內(nèi)存索引
?? 倒排索引結(jié)構(gòu)*
?? 倒排索引優(yōu)化*
?? UnTokenized 索引*
?? 關(guān)系數(shù)據(jù)庫(kù)索引*
搜索
?? 搜索的基本流程*
?? HubbleDotNet開(kāi)源全文搜索數(shù)據(jù)庫(kù)項(xiàng)目--查詢(xún)方法匯總
?? 對(duì) Tokenized 字段搜索*
?????? 搜索語(yǔ)法*
?????????? 指定單詞權(quán)重
?????????? 指定字段權(quán)重
?????????? 指定文檔權(quán)重
?????? Match 方式
?????? Contains 方式
?????? Like 方式*
?????? 組合搜索*??????
?? Tokenized字段和Untokenized 字段組合搜索*??????
?? Tokenized字段和關(guān)系數(shù)據(jù)庫(kù)索引字段組合搜索*??????
?? 多表聯(lián)合搜索*
?????? 同構(gòu)表的聯(lián)合搜索*?
?????? 異構(gòu)表的聯(lián)合搜索*?
?? 編寫(xiě)自己的得分算法*
分詞器?
????? SimpleAnalyzer*
????? EnglishAnalyzer*
????? PanGuSegment*
????? 查看指定分詞器的分詞結(jié)果*
????? 查看某個(gè)字段對(duì)應(yīng)分詞器的分詞結(jié)果*
????? 編寫(xiě)自己的分詞器
數(shù)據(jù)庫(kù)適配器*
????? SQLSERVER 2005
????? SQLSERVER 2000
????? 連接 Oracle 數(shù)據(jù)庫(kù)
????? 編寫(xiě)自己的數(shù)據(jù)庫(kù)適配器*
?
性能優(yōu)化?
????? 大量并發(fā)訪問(wèn)的解決方案?
????? 各種數(shù)據(jù)類(lèi)型占用內(nèi)存情況*
????? 優(yōu)化分詞器*
????? 查詢(xún)級(jí)別緩存*
????? 查詢(xún)級(jí)別緩存的持久化*
????? 數(shù)據(jù)級(jí)別緩存*
????? 不同搜索方式的性能*?????
????? 分布式查詢(xún)*
????? 執(zhí)行跟蹤報(bào)告*
????????? 如何讓查詢(xún)分析器輸出執(zhí)行跟蹤報(bào)告*
????????? 如何分析執(zhí)行跟蹤報(bào)告*
分布式查詢(xún)?
????????? HubbleDotNet 分布式檢索算法介紹 (一)
????????? HubbleDotNet 分布式檢索--異步通訊模式的調(diào)用方法
測(cè)試報(bào)告
????? HubbleDotNet 海量數(shù)據(jù)測(cè)試報(bào)告
遠(yuǎn)程訪問(wèn)*
?
SQLClient*
????? 大量并發(fā)訪問(wèn)的解決方案?
????? 異步通訊模式的調(diào)用方法
示例*
?
項(xiàng)目應(yīng)用*
?
注:
* 為還沒(méi)有完成的文檔
** 為功能目前尚未實(shí)現(xiàn)
原文鏈接如下:http://www.cnblogs.com/eaglet/archive/2010/04/07/1706305.html
這個(gè)沒(méi)有文檔下載,我過(guò)段時(shí)間整理下 發(fā)個(gè)word什么的給大家下載,好坐公交的時(shí)候看,呵呵。
轉(zhuǎn)載于:https://www.cnblogs.com/2719-feng/archive/2011/10/10/2205339.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的分词相关技术(转载)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 企业信息化建设(Enterprise I
- 下一篇: 《keras中文文档》资料分享