當前位置:首頁 » 操作系統 » 最大正向匹配演算法

最大正向匹配演算法

發布時間: 2022-09-11 10:25:27

java中文分片語件word怎麼使用

參考如下
1、快速體驗
運行項目根目錄下的腳本demo-word.bat可以快速體驗分詞效果
用法: command [text] [input] [output]
命令command的可選值為:demo、text、file
demo
text 楊尚川是APDPlat應用級產品開發平台的作者
file d:/text.txt d:/word.txt
exit

2、對文本進行分詞
移除停用詞:List<Word> words = WordSegmenter.seg("楊尚川是APDPlat應用級產品開發平台的作者");
保留停用詞:List<Word> words = WordSegmenter.segWithStopWords("楊尚川是APDPlat應用級產品開發平台的作者");
System.out.println(words);

輸出:
移除停用詞:[楊尚川, apdplat, 應用級, 產品, 開發平台, 作者]
保留停用詞:[楊尚川, 是, apdplat, 應用級, 產品, 開發平台, 的, 作者]

3、對文件進行分詞
String input = "d:/text.txt";
String output = "d:/word.txt";
移除停用詞:WordSegmenter.seg(new File(input), new File(output));
保留停用詞:WordSegmenter.segWithStopWords(new File(input), new File(output));

4、自定義配置文件
默認配置文件為類路徑下的word.conf,打包在word-x.x.jar中
自定義配置文件為類路徑下的word.local.conf,需要用戶自己提供
如果自定義配置和默認配置相同,自定義配置會覆蓋默認配置
配置文件編碼為UTF-8

5、自定義用戶詞庫
自定義用戶詞庫為一個或多個文件夾或文件,可以使用絕對路徑或相對路徑
用戶詞庫由多個詞典文件組成,文件編碼為UTF-8
詞典文件的格式為文本文件,一行代表一個詞
可以通過系統屬性或配置文件的方式來指定路徑,多個路徑之間用逗號分隔開
類路徑下的詞典文件,需要在相對路徑前加入前綴classpath:

指定方式有三種:
指定方式一,編程指定(高優先順序):
WordConfTools.set("dic.path", "classpath:dic.txt,d:/custom_dic");
DictionaryFactory.reload();//更改詞典路徑之後,重新載入詞典
指定方式二,Java虛擬機啟動參數(中優先順序):
java -Ddic.path=classpath:dic.txt,d:/custom_dic
指定方式三,配置文件指定(低優先順序):
使用類路徑下的文件word.local.conf來指定配置信息
dic.path=classpath:dic.txt,d:/custom_dic

如未指定,則默認使用類路徑下的dic.txt詞典文件

6、自定義停用詞詞庫
使用方式和自定義用戶詞庫類似,配置項為:
stopwords.path=classpath:stopwords.txt,d:/custom_stopwords_dic

7、自動檢測詞庫變化
可以自動檢測自定義用戶詞庫和自定義停用詞詞庫的變化
包含類路徑下的文件和文件夾、非類路徑下的絕對路徑和相對路徑
如:
classpath:dic.txt,classpath:custom_dic_dir,
d:/dic_more.txt,d:/DIC_DIR,D:/DIC2_DIR,my_dic_dir,my_dic_file.txt

classpath:stopwords.txt,classpath:custom_stopwords_dic_dir,
d:/stopwords_more.txt,d:/STOPWORDS_DIR,d:/STOPWORDS2_DIR,stopwords_dir,remove.txt

8、顯式指定分詞演算法
對文本進行分詞時,可顯式指定特定的分詞演算法,如:
WordSegmenter.seg("APDPlat應用級產品開發平台", SegmentationAlgorithm.BidirectionalMaximumMatching);

SegmentationAlgorithm的可選類型為:
正向最大匹配演算法:MaximumMatching
逆向最大匹配演算法:ReverseMaximumMatching
正向最小匹配演算法:MinimumMatching
逆向最小匹配演算法:ReverseMinimumMatching
雙向最大匹配演算法:BidirectionalMaximumMatching
雙向最小匹配演算法:BidirectionalMinimumMatching
雙向最大最小匹配演算法:
全切分演算法:FullSegmentation
最少分詞演算法:MinimalWordCount
最大Ngram分值演算法:MaxNgramScore

9、分詞效果評估
運行項目根目錄下的腳本evaluation.bat可以對分詞效果進行評估
評估採用的測試文本有253 3709行,共2837 4490個字元
評估結果位於target/evaluation目錄下:
corpus-text.txt為分好詞的人工標注文本,詞之間以空格分隔
test-text.txt為測試文本,是把corpus-text.txt以標點符號分隔為多行的結果
standard-text.txt為測試文本對應的人工標注文本,作為分詞是否正確的標准
result-text-***.txt,***為各種分詞演算法名稱,這是word分詞結果
perfect-result-***.txt,***為各種分詞演算法名稱,這是分詞結果和人工標注標准完全一致的文本
wrong-result-***.txt,***為各種分詞演算法名稱,這是分詞結果和人工標注標准不一致的文本

㈡ seo問題,什麼叫正向匹配什麼叫逆向匹配舉例說明

下面牛到家SEO介紹的分詞演算法中最簡單的正向最大匹配和反向最大匹配。

這種兩種方法都是機械分詞方法,它是按照一定的策略將待分析的漢字串與一個」充分大的」機器詞典中的詞條進行配,若在詞典中找到某個字元串,則匹配成功(識別出一個詞)。
按照掃描方向的不同,串匹配分詞方法可以分為正向匹配和逆向匹配;按照不同長度優先匹配的情況,可以分為最大(最長)匹配和最小(最短)匹配;按照是否與詞性標注過程相結合,又可以分為單純分詞方法和分詞與標注相結合的一體化方法。常用的幾種機械分詞方法如下:
1)正向最大匹配法(由左到右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的詞數最小)。
還可以將上述各種方法相互組合,例如,可以將正向最大匹配方法和逆向最大匹配方法結合起來構成雙向匹配法。由於漢語單字成詞的特點,正向最小匹配和逆向最小匹配一般很少使用。一般說來,逆向匹配的切分精度略高於正向匹配,遇到的歧義現象也較少。統計結果表明,單純使用正向最大匹配的錯誤率為1/169,單純使用逆向最大匹配的錯誤率為1/245。但這種精度還遠遠不能滿足實際的需要。實際使用的分詞系統,都是把機械分詞作為一種初分手段,還需通過利用各種其它的語言信息來進一步提高切分的准確率。
一種方法是改進掃描方式,稱為特徵掃描或標志切分,優先在待分析字元串中識別和切分出一些帶有明顯特徵的詞,以這些詞作為斷點,可將原字元串分為較小的串再來進機械分詞,從而減少匹配的錯誤率。另一種方法是將分詞和詞類標注結合起來,利用豐富的詞
類信息對分詞決策提供幫助,並且在標注過程中又反過來對分詞結果進行檢驗、調整,從而極大地提高切分的准確率
定義比較抽象,舉個例子來說明正向最大匹配和反向最大匹配。
例子:』今天來了許多新同事』
1.正向最大匹配方式,最大長度為5
今天來了許
今天來了
今天來
今天 ====》 得到一個詞–今天
來了許多新
來了許多
來了許
來了
來 ====》 得到一個詞–來
了許多新同
了許多新
了許多
了許
了 ====》 得到一個詞–了
許多新同事
許多新同
許多新
許多 ====》得到一個詞– 許多
新同事
新同
新 ====》得到一個詞– 新
同事 ====》得到一個詞– 同事
最後正向最大匹配的結果是:
/今天/來/了/許多/新/同事/
2.反向最大匹配方式,最大長度為5
許多新同事
多新同事
新同事
同事 ====》得到一個詞– 同事
來了許多新
了許多新
許多新
多新
新 ====》得到一個詞– 新
天來了許多
來了許多
了許多
許多 ====》得到一個詞– 許多
今天來了
天來了
來了
了 ====》得到一個詞– 了
今天來
天來
來 ====》得到一個詞– 來
今天 ====》得到一個詞– 今天
最後反向最大匹配的結果是:
/今天/來/了/許多/新/同事/
正向最大匹配和反向最大匹配的結果並不一定相同
例子:』我一個人吃飯』
1.正向最大匹配方式,最大長度為5
我一個人吃
我一個人
我一個
我一
我 ====》得到一個詞– 我
一個人吃飯
一個人吃
一個人
一個 ====》得到一個詞– 一個
人吃飯
人吃
人 ====》得到一個詞– 人
吃飯 ====》得到一個詞– 吃飯
最後正向最大匹配的結果是:
/我/一個/人/吃飯/
2.反向最大匹配方式,最大長度為5
一個人吃飯
個人吃飯
人吃飯
吃飯 ====》得到一個詞– 吃飯
我一個人
一個人
個人 ====》得到一個詞– 個人
我一
一 ====》得到一個詞– 一
我 ====》得到一個詞– 我
最後反向最大匹配的結果是:
/我/一/個人/吃飯/
這次兩種方式的結果就不一致了。更多SEO知識請網路搜牛到家SEO

㈢ 什麼是百度分詞百度分詞技術又是什麼

首先查詢專用詞典(人名,部分地名等),將專有名稱切出,剩下的部分採取雙向匹配分詞策略。

如果兩者切分結果相同,說明沒有歧義,直接輸出分詞結果

如果不一致,則輸出最短路徑的那個結果

如果長度相同。則選擇單字詞少的那一組切分結果。如果單字也相同,則選擇正向分詞結果。

如果說網路有優勢的話,唯一的優勢就是那個很大的專用詞典。

這個專用詞典登錄了人名(比如大長今)。稱謂(比如老太太)。部分地名(比如阿聯酋等)。

從語料庫裡面不斷識別出詞典未登錄詞。逐漸擴充這個專門詞典。Spelling Checker(網路詞典)拼寫檢查錯誤提示(以及拼音提示功能),拼寫檢查錯誤提示是搜索引擎都具備的一個功能。也就是說用戶提交查詢給搜索引擎,搜索引擎檢查看是否用戶輸入的拼寫有錯誤。

對於中文用戶來說一般造成的錯誤是輸入法造成的錯誤。

那麼我們就來分析看看網路是怎麼實現這一功能的。

我們分析拼寫檢查系統關注以下幾個問題:

(1)系統如何判斷用戶的輸入是有可能發生錯誤的查詢?

那麼網路有又是如何做到這些的?網路判斷用戶輸入是否錯誤的標准,

我覺得應該是查字典,如果發現字典裡面不包含這個詞彙,那麼很有可能是個錯誤的輸入。此時啟動錯誤提示功能,這個很好判斷,

因為如果是一個正常詞彙的話,網路一般不會有錯誤提示。而你故意輸入一個詞典不可能包含的所謂詞彙

此時網路一般會提示你正確的檢索詞彙。

網路又是怎麼提示正確詞彙的呢?

很明顯是通過拼音的方式,在網路輸入查詢「紫材」。

網路提供的提示詞彙為: 「紫菜」,

是同音字。所以網路必然維持著一個同音詞詞典。裡面保留著同音詞信息

比如可能包含著下面這條詞條: 「 zi cai 紫材」,

另外還有一個標注拼音程序,

現在能夠看到的基本流程是:用戶輸入「紫材」,查詞典。發現沒有這個詞彙,啟動標注拼音程序。將「紫材」標注為拼音「 cai」。然後查找同音詞詞典,發現同音詞「紫菜」,那麼提示用戶可能的正確拼寫。

但是還有一些遺留的小問題。比如是否將詞表裡面所有同音詞都作為用戶的提示信息?

比如某個拼音有10個同音詞,是否都輸出呢?

大家覺得網路會都輸出嗎?網路並沒有將所有同音詞都輸出,而是選擇一定篩選標准。選擇其中幾個輸出,怎麼證明這一點?

我們看看拼音「liu li」的同音詞。搜狗拼音輸入法提示同音詞彙有「六里 劉歷 琉璃 流利 劉麗」等N個。

這里是故意輸入一個詞典不包含的詞彙,這樣網路的拼寫檢查才開始工作。網路提示您要找的是不是: 「流氓」。我們改換輸入「遛邙」。

看網路的查詢呈現,

就沒有提示您要找的是不是「流氓」了。看看我兩次輸入的字有什麼區別,這說明什麼?

說明不是所有同音詞都給提示,而是選擇性的做呈現提示。那麼選擇的標準是什麼?

大家再回頭看看,第一次和第二次輸入的「遛氓與遛邙」是有絕對的區別的。

第一次輸入的「遛氓」的「氓」字是流氓的氓字,所以網路做了提示您要找的是不是「流氓」了。

去網路,就是有一點對的,一個字是對的,網路也會給你個流氓

另外一個小問題:同音詞詞典是否包含一字詞? 包含2字詞,3字詞,那麼是否包含4字詞以及更長的詞條?

這里一字詞好回答,不用測試也能知道肯定不包含,因為你輸入一個字,誰知道是否是錯誤的呢?

反正只要是漢字就能在詞表裡面找到,所以沒有判斷依據。

二字詞是包含的,上面有例子

三字詞也包含嗎?

下面我們查詢 「中城葯」網路錯誤提示:「中成葯」

修改查詢為「重城葯」。

那麼我們看看4字詞彙網路怎麼處理?網路是不是還是會給我們提示呢,

輸入:靜華煙雲

輸入 靜話煙雲

輸入 京花閻暈

那麼更長的詞彙網路是否也提示?

我們現在輸入: 「落花世界有風軍」, 這個查詢是什麼意思,估計讀過古詩的都知道。看看網路的提示

這說明什麼?

說明同音詞詞典包含不同長度的同音詞信息。

另外也說明了網路的核心中文處理技術,也就是那個詞典還真挺大的。

還有一個比較重要的問題。如果漢字是多音字那麼怎麼處理?網路比較偷懶。它根本就沒有對多音字做處理。

我們來看看網路的一個標注拼音的錯誤。在看這個錯誤前先看看對於多音字網路是怎麼提示錯誤的。

網路提示「局長」!!「俱長」的拼音有幾種拼法,大家說說?兩種「ju zhang / ju chang」

可見如果是多音字則幾種情況都提示。

現在我們來看看錯誤的情況,我們輸入查詢「距長」,看看結果

網路提示為「局長」當然好解釋,因為是同音字。

但是為什麼會被提示「局長」呢?這說明網路的同音字詞典有錯誤,

說明在「ju chang」這個詞條裡麵包含「局長」這個錯誤的同音詞。

讓我們順藤摸瓜。這個錯誤又說明什麼問題呢?

說明網路的同音詞典是自動生成的。而且沒有人工校對。還說明在自動生成同音詞典的過程中,網路不是根據對一篇文章標注拼音然後,在抽取詞彙和對應的拼音信息獲得的。而是完全按照某個詞典的詞條來標注音節的,以對於多音字造成的錯誤無法識別出來,

如果是對篇章進行拼音標注,可能就不會出現這種很容易發現的錯誤標注。當然還有另外一種解釋,就是「局長」是故意被網路提示出來可能的正確提示詞彙。

因為考慮到南方人「zh」和 「ch」等前後鼻音分不清么。

我們繼續測試到底是何種情況

是網路有錯誤還是這是網路的先進的演算法?

我們輸入查詢「懸賞」,故意將之錯誤輸入為「懸桑」。

沒有錯誤提示。說明確實沒有考慮這種情況,鼻音沒有考慮。

根據以上推導, 我們可以得出如下結論:

網路是將分詞詞典裡面每個詞條利用拼音標注程序標注成拼音,然後形成同音詞詞典。

所以兩個詞典是同樣大的而且這個詞典也隨著分詞詞典的增長而在不斷增長。

至於標注過程中多音字網路沒有考慮,如果是多音字就標注成多個發音組合,

通過這種方式形成同音詞詞典。這樣的同音詞詞典顯然包含著很多錯誤。

最後一個問題:網路對於英文進行拼寫檢查么?讓我們試試看,輸入查詢「china」,

大家告訴我,什麼情況

專注中文搜索的網路還能搜索到英文

真是意外的驚喜。變換一下查詢「chini」。

那麼拼音搜索和中文檢查錯誤是否採用同一套同音詞詞典呢,讓我們來實驗一下,搜索」rongji」,

最後讓我們總結歸納一下網路的拼寫檢查系統:

就是網路的後台作業:

(1)前面我們說過,網路分詞使用的詞典至少包含兩個詞典一個是普通詞典,另外一個是專用詞典(專名等),

最後讓我們總結歸納一下網路的拼寫檢查系統:

網路利用拼音標注程序依次掃描所有詞典中的每個詞條,

然後標注拼音,如果是多音字則把多個音都標上,比如」長大」,會被標注為」zhang da/chang da」兩個詞條.

(2)通過標注完的詞條,建立同音詞詞典,比如上面的」長大」,會有兩個詞條: zhang daà長大chang daà長大。

(3)利用用戶查詢LOG頻率信息給予每個中文詞條一個權重;LOG大家知道是什麼嗎?函數

(4)同音詞詞典建立完成了,當然隨著分詞詞典的逐步擴大,同音詞詞典也跟著同步擴大;

拼寫檢查:

(1)用戶輸入查詢,如果是多個子字元串,不作拼寫檢查;

(2)對於用戶查詢,先查分詞詞典,如果發現有這個單詞詞條,不作拼寫檢查;

(3)如果發現詞典裡面不包含用戶查詢,啟動拼寫檢查系統:

首先利用拼音標注程序對用戶輸入進行拼音標注

(4)對於標注好的拼音在同音詞詞典裡面掃描,

如果沒有發現則不作任何提示;

(5)如果發現有詞條,則按照順序輸出權重比較大的幾個提示結果;

拼音提示:

(1)對於用戶輸入的拼音在同音詞詞典裡面掃描,如果沒有發現則不作任何提示;

(2)如果發現有詞條,則按照順序輸出權重比較大的幾個提示結果。

對網路分詞演算法的進一步分析,上面說過,經過分析得出網路的分詞系統採用雙向最大匹配分詞,

但是後來發現推理過程中存在一個漏洞,而且推導出來的網路分詞演算法步驟還是過於繁瑣。所以進一步進行分析,看看是否前面的推導有錯誤。

那麼以前的分析有什麼漏洞呢?

我們推導網路分詞有反向最大匹配的依據是網路將「北京華煙雲」分詞為「北/京華煙雲」,從這里看好像採用了反向最大匹配。因為正向最大匹配的結果應該是「北京/華/煙雲」,但是由此就推論說網路採用了雙向最大匹配還是太倉促了。

前面我們也講過,網路有兩個詞典,一個普通詞典,一個專有詞典。

而且是專有詞典的詞彙先切分,然後將剩餘片斷交給普通詞典去切分。

以上面的「北京華煙雲」之所以被切分成「北/京華煙雲」,

另外一個可能是「京華煙雲」這個詞彙是在專有詞典裡面存儲的。

所以先分析,這樣得出「京華煙雲」剩下「北」,沒什麼好切分的,所以就呈現出來了。

這里只是假設,那麼是否確實「京華煙雲」在專有詞典呢?

我們再看一個例子「山東北京華煙雲」,

如果「京華煙雲」在普通詞典,如果是反向切分,那麼結果應該是,如果是正向切分應該是,無論如何都分不出。這說明什麼?說明「京華煙雲」是在那個專有詞典

所以先切分出「京華煙雲」,然後剩下的「山東北」交由普通詞典切分,明顯是正向最大匹配的結果呈現。

當然按照我們在前面講的演算法推導「山東北」的切分也會得出的結論。

但是明顯比正向最大匹配多幾個判斷步驟,既然效果一樣,另外一個更加簡潔的方法也能說得通,那當然選擇簡便的方法了。所以初步判斷網路採取的是正向最大匹配。

我們繼續測試採用何種分詞演算法,

為了減少專有詞典首先分詞造成的影響,那麼查詢裡面不能出現相對特殊的詞彙

我們查詢「天才能量級」,看看

這里應該沒有專有詞典出現過的詞彙,網路切分為天才 /能量/ 級

看來是正向最大匹配的結果。

另外,如果所有查詢詞彙都出現在專有詞典,那麼採取的是何種方法?

這樣首先就得保證詞彙都出現在專有詞典,這么保證這一點呢?我們構造查詢「山東京城」,網路切分為「山東/京城」,說明「東京」是在普通詞典的。構造查詢「陳曉東京華煙雲」,

通過前面分析可以看出兩個詞彙都在專有詞典裡面,網路切分為陳曉東 /京華煙雲 ,

說明對於專有詞典詞彙也是採取正向最大匹配或者雙向最大匹配。

那麼使用反向最大匹配了嗎?構造查詢例子「陳曉東方不敗」。

首先我們肯定「陳曉東」和「東方不敗」都是在專有詞典出現的,

如果是正向切分陳曉東 /方/ 不敗

那麼應該是或者如果是反向切分則是陳曉/東方不敗

可以看出網路的切分是或者,說明採用的是正向最大匹配。

通過分析,網路的詞典不包含「不敗」這個單詞。所以實際上網路的切分很明顯這和我們以前推導的演算法是有矛盾的,所以以前的分析演算法確實有問題,所以結論是網路採取的是正向最大匹配演算法

重新歸納一下網路的分詞系統:首先用專有詞典採用最大正向匹配分詞,切分出部分結果,剩餘沒有切分交給普通詞典,同樣採取正向最大匹配分詞,最後輸出結果。

另外,GOOGLE也是採用正向最大匹配分詞演算法,

不過好像沒有那個專用詞典,所以很多專名都被切碎了

㈣ 什麼叫正向最大匹配演算法,反向最大匹配演算法

分詞演算法里的吧

比如 我是一個好人

由於 詞語很多,所以分詞中先設定一個可能的,最長的片語的詞數
比如說,我認定最長的片語是3個字,那在比對中,會將句子3個字為始進行比對
正向匹配演算法好象是從左到右 反向區域演算法是從右到左,具體忘記了

以 「我是一個好人」 為例

正向的順序為
我是一
我是
我 ===> 得到一個詞
是一個
是一
是 ===>得到一個詞
一個好
一個===> 得到一個詞
好人===>得到一個詞
結果 我、是、一個、好人

反向演算法
個好人
好人==> 好人
是一個
一個==> 一個
我是
是==> 是
我==> 我
結果 我、是、一個、好人

㈤ 切詞技術是什麼

二、 中文分詞技術的分類

我們討論的分詞演算法可分為三大類:基於字典、詞庫匹配的分詞方法;基於詞頻度統計的分詞方法和基於知識理解的分詞方法。

第一類方法應用詞典匹配、漢語詞法或其它漢語語言知識進行分詞,如:最大匹配法、最小分詞方法等。這類方法簡單、分詞效率較高,但漢語語言現象復雜豐富,詞典的完備性、規則的一致性等問題使其難以適應開放的大規模文本的分詞處理。第二類基於統計的分詞方法則基於字和詞的統計信息,如把相鄰字間的信息、詞頻及相應的共現信息等應用於分詞,由於這些信息是通過調查真實語料而取得的,因而基於統計的分詞方法具有較好的實用性。

下面簡要介紹幾種常用方法:

1)逐詞遍歷法

逐詞遍歷法將詞典中的所有詞按由長到短的順序在文章中逐字搜索,直至文章結束。也就是說,不管文章有多短,詞典有多大,都要將詞典遍歷一遍。這種方法效率比較低,大一點的系統一般都不使用。

2)基於字典、詞庫匹配的分詞方法(機械分詞法)

這種方法按照一定策略將待分析的漢字串與一個「充分大的」機器詞典中的詞條進行匹配,若在詞典中找到某個字元串,則匹配成功。識別出一個詞,根據掃描方向的不同分為正向匹配和逆向匹配。根據不同長度優先匹配的情況,分為最大(最長)匹配和最小(最短)匹配。根據與詞性標注過程是否相結合,又可以分為單純分詞方法和分詞與標注相結合的一體化方法。常用的方法如下:

(一)最大正向匹配法 (Maximum Matching Method)通常簡稱為MM法。

其基本思想為:假定分詞詞典中的最長詞有i個漢字字元,則用被處理文檔的當前字串中的前i個字作為匹配欄位,查找字典。若字典中存在這樣的一個i字詞,則匹配成功,匹配欄位被作為一個詞切分出來。如果詞典中找不到這樣的一個i字詞,則匹配失敗,將匹配欄位中的最後一個字去掉,對剩下的字串重新進行匹配處理…… 如此進行下去,直到匹配成功,即切分出一個詞或剩餘字串的長度為零為止。這樣就完成了一輪匹配,然後取下一個i字字串進行匹配處理,直到文檔被掃描完為止。

其演算法描述如下:

初始化當前位置計數器,置為0;

從當前計數器開始,取前2i個字元作為匹配欄位,直到文檔結束;

如果匹配欄位長度不為0,則查找詞典中與之等長的作匹配處理。

如果匹配成功,則,

a)把這個匹配欄位作為一個詞切分出來,放入分詞統計表中

b)把當前位置計數器的值加上匹配欄位的長度

c)跳轉到步驟2)

否則

a) 如果匹配欄位的最後一個字元為漢字字元

則①把匹配欄位的最後一個字去掉;

②匹配欄位長度減2;

否則①把匹配欄位的最後一個位元組去掉;

②匹配欄位長度減1;

b)跳轉至步驟3)

否則a)如果匹配欄位的最後一個字元為漢字字元,

則 當前位置計數器的值加2;

否則當前位置計數器的值加1;

b)跳轉到步驟2)

(二)逆向最大匹配法 (Reverse Maximum Matcing Method)通常簡稱為RMM法。RMM法的基本原理與MM法相同 ,不同的是分詞切分的方向與MM法相反,而且使用的分詞辭典也不同。逆向最大匹配法從被處理文檔的末端開始匹配掃描,每次取最末端的2i個字元(i字字串)作為匹配欄位,若匹配失敗,則去掉匹配欄位最前面的一個字,繼續匹配。相應地,它使用的分詞詞典是逆序詞典,其中的每個詞條都將按逆序方式存放。在實際處理時,先將文檔進行倒排處理,生成逆序文檔。然後,根據逆序詞典,對逆序文檔用正向最大匹配法處理即可。

由於漢語中偏正結構較多,若從後向前匹配,可以適當提高精確度。所以,逆向最大匹配法比正向最大匹配法的誤差要小。統計結果表明 ,單純使用正向最大匹配的錯誤率為 1/16 9,單純使用逆向最大匹配的錯誤率為 1/245。例如切分欄位「碩士研究生產」,正向最大匹配法的結果會是「碩士研究生 / 產」,而逆向最大匹配法利用逆向掃描,可得到正確的分詞結果「碩士 / 研究 / 生產」。

當然,最大匹配演算法是一種基於分詞詞典的機械分詞法,不能根據文檔上下文的語義特徵來切分詞語,對詞典的依賴性較大,所以在實際使用時,難免會造成一些分詞錯誤,為了提高系統分詞的准確度,可以採用正向最大匹配法和逆向最大匹配法相結合的分詞方案(即雙向匹配法,見(四)。)

(三)最少切分法:使每一句中切出的詞數最小。

(四)雙向匹配法:將正向最大匹配法與逆向最大匹配法組合。先根據標點對文檔進行粗切分,把文檔分解成若干個句子,然後再對這些句子用正向最大匹配法和逆向最大匹配法進行掃描切分。如果兩種分詞方法得到的匹配結果相同,則認為分詞正確,否則,按最小集處理。

3).全切分和基於詞的頻度統計的分詞方法

基於詞的頻度統計的分詞方法是一種全切分方法。在討論這個方法之前我們先要明白有關全切分的相關內容。

全切分

全切分要求獲得輸入序列的所有可接受的切分形式,而部分切分只取得一種或幾種可接受的切分形式,由於部分切分忽略了可能的其他切分形式,所以建立在部分切分基礎上的分詞方法不管採取何種歧義糾正策略,都可能會遺漏正確的切分,造成分詞錯誤或失敗。而建立在全切分基礎上的分詞方法,由於全切分取得了所有可能的切分形式,因而從根本上避免了可能切分形式的遺漏,克服了部分切分方法的缺陷。

全切分演算法能取得所有可能的切分形式,它的句子覆蓋率和分詞覆蓋率均為100%,但全切分分詞並沒有在文本處理中廣泛地採用,原因有以下幾點:

1)全切分演算法只是能獲得正確分詞的前提,因為全切分不具有歧義檢測功能,最終分詞結果的正確性和完全性依賴於獨立的歧義處理方法,如果評測有誤,也會造成錯誤的結果。

2)全切分的切分結果個數隨句子長度的增長呈指數增長,一方面將導致龐大的無用數據充斥於存儲資料庫;另一方面當句長達到一定長度後,由於切分形式過多,造成分詞效率嚴重下降。

基於詞的頻度統計的分詞方法:

這是一種全切分方法。它不依靠詞典,而是將文章中任意兩個字同時出現的頻率進行統計,次數越高的就可能是一個詞。它首先切分出與詞表匹配的所有可能的詞,運用統計語言模型和決策演算法決定最優的切分結果。它的優點在於可以發現所有的切分歧義並且容易將新詞提取出來。

㈥ java中文分片語件word怎麼使用

參考如下
1、快速體驗
運行項目根目錄下的腳本demo-word.bat可以快速體驗分詞效果
用法: command [text] [input] [output]
命令command的可選值為:demo、text、file
demo
text 楊尚川是APDPlat應用級產品開發平台的作者
file d:/text.txt d:/word.txt
exit

2、對文本進行分詞
移除停用詞:List<Word> words = WordSegmenter.seg("楊尚川是APDPlat應用級產品開發平台的作者");
保留停用詞:List<Word> words = WordSegmenter.segWithStopWords("楊尚川是APDPlat應用級產品開發平台的作者");
System.out.println(words);

輸出:
移除停用詞:[楊尚川, apdplat, 應用級, 產品, 開發平台, 作者]
保留停用詞:[楊尚川, 是, apdplat, 應用級, 產品, 開發平台, 的, 作者]

3、對文件進行分詞
String input = "d:/text.txt";
String output = "d:/word.txt";
移除停用詞:WordSegmenter.seg(new File(input), new File(output));
保留停用詞:WordSegmenter.segWithStopWords(new File(input), new File(output));

4、自定義配置文件
默認配置文件為類路徑下的word.conf,打包在word-x.x.jar中
自定義配置文件為類路徑下的word.local.conf,需要用戶自己提供
如果自定義配置和默認配置相同,自定義配置會覆蓋默認配置
配置文件編碼為UTF-8

5、自定義用戶詞庫
自定義用戶詞庫為一個或多個文件夾或文件,可以使用絕對路徑或相對路徑
用戶詞庫由多個詞典文件組成,文件編碼為UTF-8
詞典文件的格式為文本文件,一行代表一個詞
可以通過系統屬性或配置文件的方式來指定路徑,多個路徑之間用逗號分隔開
類路徑下的詞典文件,需要在相對路徑前加入前綴classpath:

指定方式有三種:
指定方式一,編程指定(高優先順序):
WordConfTools.set("dic.path", "classpath:dic.txt,d:/custom_dic");
DictionaryFactory.reload();//更改詞典路徑之後,重新載入詞典
指定方式二,Java虛擬機啟動參數(中優先順序):
java -Ddic.path=classpath:dic.txt,d:/custom_dic
指定方式三,配置文件指定(低優先順序):
使用類路徑下的文件word.local.conf來指定配置信息
dic.path=classpath:dic.txt,d:/custom_dic

如未指定,則默認使用類路徑下的dic.txt詞典文件

6、自定義停用詞詞庫
使用方式和自定義用戶詞庫類似,配置項為:
stopwords.path=classpath:stopwords.txt,d:/custom_stopwords_dic

7、自動檢測詞庫變化
可以自動檢測自定義用戶詞庫和自定義停用詞詞庫的變化
包含類路徑下的文件和文件夾、非類路徑下的絕對路徑和相對路徑
如:
classpath:dic.txt,classpath:custom_dic_dir,
d:/dic_more.txt,d:/DIC_DIR,D:/DIC2_DIR,my_dic_dir,my_dic_file.txt

classpath:stopwords.txt,classpath:custom_stopwords_dic_dir,
d:/stopwords_more.txt,d:/STOPWORDS_DIR,d:/STOPWORDS2_DIR,stopwords_dir,remove.txt

8、顯式指定分詞演算法
對文本進行分詞時,可顯式指定特定的分詞演算法,如:
WordSegmenter.seg("APDPlat應用級產品開發平台", SegmentationAlgorithm.BidirectionalMaximumMatching);

SegmentationAlgorithm的可選類型為:
正向最大匹配演算法:MaximumMatching
逆向最大匹配演算法:ReverseMaximumMatching
正向最小匹配演算法:MinimumMatching
逆向最小匹配演算法:ReverseMinimumMatching
雙向最大匹配演算法:BidirectionalMaximumMatching
雙向最小匹配演算法:BidirectionalMinimumMatching
雙向最大最小匹配演算法:
全切分演算法:FullSegmentation
最少分詞演算法:MinimalWordCount
最大Ngram分值演算法:MaxNgramScore

9、分詞效果評估
運行項目根目錄下的腳本evaluation.bat可以對分詞效果進行評估
評估採用的測試文本有253 3709行,共2837 4490個字元
評估結果位於target/evaluation目錄下:
corpus-text.txt為分好詞的人工標注文本,詞之間以空格分隔
test-text.txt為測試文本,是把corpus-text.txt以標點符號分隔為多行的結果
standard-text.txt為測試文本對應的人工標注文本,作為分詞是否正確的標准
result-text-***.txt,***為各種分詞演算法名稱,這是word分詞結果
perfect-result-***.txt,***為各種分詞演算法名稱,這是分詞結果和人工標注標准完全一致的文本
wrong-result-***.txt,***為各種分詞演算法名稱,這是分詞結果和人工標注標准不一致的文本

㈦ 中文分詞中正向最大匹配演算法的分詞速度是多少准確率大概為多少

主要看你的詞表結構了,最大詞長的初始值,查詞典的次數和匹配的次數,然後得出時間復雜度,原始hash演算法復雜度沒記錯的話應該是2.89,11年看過一個文獻,提出一種改進的演算法時間復雜度是2.291……

另外,分詞演算法並不是原封不動的,比如有些搜索引擎的詞表結構就採用tire樹結構,這樣不用設置最大詞長,不過內存空間方面就要有取捨,甚至還有採用減少查典次數增加匹配次數的搜索引擎……
所以單純的給你一個189.3m/M純內存分詞速度,但是這演算法換個台更高配置的伺服器卻變成了497.6ms/M,這沒有任何意義……
記得哪個文獻上有人說,分詞本身不是目的,而是後續處理過程的必要階段,所以,除非你是研究演算法的,否則單純追求這東西的速度和准確率沒什麼太大意義

㈧ matlab用正向最大匹配演算法實現中文分詞!急!!!

sqlConnection con = new SqlConnection
con.Open();
string sqlstr = "sql語句";
SqlDataAdapter da = new SqlDataAdapter(sqlstr, con);
DataSet ds= new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
con.Close();

㈨ 加分求搜索引擎的工作機制

搜索引擎是一種依靠技術取勝的產品,搜索引擎的各個組成部分,包括頁面搜集器、索引器、檢索器等,都是搜索引擎產品提供商進行比拼的著力點。

近幾年,搜索引擎的商業化取得了巨大的成功,如著名搜索引擎公司Google、Yahoo(本文中提到Yahoo時,特指英文Yahoo)、網路等紛紛成功上市,引發了眾多公司涉足於該領域,帶動了人力、資本的大量投入,連軟體巨人Microsoft公司也禁不住誘惑積極打造自己的搜索引擎。但是,從性能上來說,目前的搜索引擎還不盡如人意,搜索返回的結果往往與用戶的檢索要求相去甚遠,有效性還不是很高。本文將對搜索引擎的工作原理及其實現技術進行分析,從中可以了解限制搜索引擎用戶體驗改善的因素到底有哪些。


——————————————————————————

[相關鏈接]

搜索引擎的技術流派

搜索引擎的技術流派可以分為三類:第一類是利用計算機程序自動進行信息處理的自動化派,其典型代表是Google以及Ghunt等;第二類是以人工進行信息分類處理為主的人力加工派,這方面的典型代表是早期的Yahoo,正在興起的Web2.0、網摘等社區化搜索是這一流派的新發展;第三類是強調智能化人機交互、協同的融合派,目前英文Yahoo的搜索引擎在發展這方面的技術,MSNLive也顯示出其更加重視融合性的技術,聯索IFACE專業搜索融入了用戶知識和機器學習方法,可以看做是融合派在中文搜索引擎方面的典型代表。

如果按照網頁庫的容量、相關度計算技術、用戶搜索體驗以及商業模式等方面來劃分,到目前為止,搜索引擎的發展大約經歷了兩代。第一代搜索引擎(1994年~1997年)的索引網頁量一般都在數百萬量級左右,採用全文檢索技術和分布式並行運算技術,但極少重新搜集網頁並去刷新索引,而且其檢索速度較慢,一般都要等待10秒甚至更長的時間,同時承受的檢索請求也受到很大限制,商業模式處於探索期並且尚未成型。

第二代搜索引擎(1998年至今)大多採用分布式協同處理方案,其網頁索引庫一般都在數千萬個網頁量級甚至更多,採用可伸縮的索引庫架構,每天能夠響應數千萬次甚至數以億計的用戶檢索請求。1997年11月,當時最先進的幾個搜索引擎宣稱能建立1億數量級的網頁索引。以Google為代表的第二代搜索引擎通過鏈接分析和點擊分析(網頁流行度)方法來計算(網頁權威性)相關度取得了巨大的成功。另外,以自然語言進行問題解答的搜索引擎在某種程度上改善了用戶體驗,更重要的是第二代搜索引擎奠定了目前搜索引擎普遍採用的成熟商業模式,如Google、Overture、網路等收費搜索服務均受益於此商業模式。

相關名詞解釋

全文搜索引擎是由一個稱為蜘蛛(Spider)的機器人程序以某種策略自動地在互聯網中搜集和發現信息,由索引器為搜集到的信息建立網頁索引資料庫,由檢索器根據用戶輸入的查詢條件檢索索引庫,並將查詢結果返回給用戶。服務方式是面向網頁的全文檢索服務。

目錄索引搜索引擎主要以人工方式搜集信息,由編輯人員查看信息之後,人工形成信息摘要,並將信息置於事先確定的分類框架中。信息大多面向網站,提供目錄瀏覽服務和直接檢索服務。用戶完全可以不用關鍵詞(Keywords)進行查詢,僅靠分類目錄也可找到需要的信息。

元搜索引擎是指在統一的用戶查詢界面與信息反饋的形式下,共享多個搜索引擎的資源庫為用戶提供信息服務的系統。元搜索引擎是藉助於其他搜索引擎進行工作,沒有自己的索引庫,它是將用戶的查詢請求同時向多個搜索引擎遞交,將返回的結果進行重復排除、重新排序等處理後,作為自己的結果返回給用戶。

自動分類技術是計算機根據分類標准自動將文檔歸類到已經存在的類別體系(或者主題)下的某一個具體類別中。目前自動分類並不能完全代替人工所做的相關工作,只是提供了一個花費較少的可選擇方法。

文本聚類技術是利用計算機將已經存在的大量文本(很多文檔)進行分組的全自動處理過程。聚類可以提供對一個大的文本集內容的概況了解,可以識別隱藏的共同點,可以便捷地瀏覽相近或相關的文本。

網文摘錄又稱網摘,它具有對內容頁的收藏、分類、摘錄、加註標簽、保存到信息庫、信息庫共享等功能,主要是為了滿足用戶閱讀網路內容和信息知識積累的需要。

熱點內容
分布式緩存部署步驟 發布:2025-05-14 13:24:51 瀏覽:610
php獲取上一月 發布:2025-05-14 13:22:52 瀏覽:89
購買雲伺服器並搭建自己網站 發布:2025-05-14 13:20:31 瀏覽:688
sqlserver建立視圖 發布:2025-05-14 13:11:56 瀏覽:484
搭建httpsgit伺服器搭建 發布:2025-05-14 13:09:47 瀏覽:255
新電腦拿回來我該怎麼配置 發布:2025-05-14 13:09:45 瀏覽:240
視頻伺服器新建ftp用戶 發布:2025-05-14 13:03:09 瀏覽:225
php花生 發布:2025-05-14 12:54:30 瀏覽:550
java人才 發布:2025-05-14 12:29:10 瀏覽:649
如何打開軟密碼 發布:2025-05-14 12:28:55 瀏覽:427