HashMap實現中文分詞器

2021-08-28 03:28:50 字數 1006 閱讀 4673

public class tokenizerdemo 

public static void main(string args)

//最大逆序匹配

for(int j=0; j輸出結果:

中國北京

中關村海淀

注意:

如果不跳過已經匹配的詞會出現"北京劇院" 拆分成 [北京]、[京劇]、[劇院] 三個詞,

如果跳過匹配過的詞就會拆分成 [北京]、[劇院]。

從詞典中找出最長詞的長度,這裡為maxsize=3,按照maxsize的長度從文字的第一位(i=0)擷取要抽取的文字【中國人】,然後去map中查詢是否有對應的值,如果沒有減去乙個長度擷取(maxsize-1)【中國】,去map中查詢,找到則停止當前查詢,接著從匹配當前詞後面的字(i=2)【人民共】開始繼續上述的步驟開始查詢。

第一次迴圈(i=0):

中國人 -> 無命中(map中沒找到) (j=0)

中國 -> map命中 (j=1) 【注釋:命中後i+2(當前詞)的長度。所以i=2】

第二次迴圈(i=2):

人民共 -> 無命中 (j=0)

人民 -> 無命中 (j=1)

人 -> 無命中 (j=2)

第三次迴圈(i=3):

民共和 -> 無命中 (j=0)

民共 -> 無命中 (j=1)

民 -> 無命中 (j=2)

...依次類推,找出文字中所有匹配詞典中的詞

很簡單的**就說明了分詞器的原理(只是最簡單、能命中詞而以)。

敏感詞、文字過濾是乙個**必不可少的功能,可以使用這麼簡單的幾行**實現**的敏感詞過濾功能,自己這麼簡單幾行**就能實現是不是很棒。

安裝中文分詞器

2.複製ikanalyzer的配置檔案和自定義詞典和停用詞詞典到solr的classpath下。也就是在solr的web inf目錄下建立classes資料夾 拷入的檔案有 ext.dic ikanalyzer.cfg.xml stopword.dic 3.在solrhome collection1...

ElasticSearch IK中文分詞器的配置

elasticsearch本身自帶的中文分詞,就是單純把中文乙個字乙個字的分開,根本沒有詞彙的概念。但是實際應用中,使用者都是以詞彙為條件,進行查詢匹配的,如果能夠把文章以詞彙為單位切分開,那麼與使用者的查詢條件能夠更貼切的匹配上,查詢速度也更加快速。1.安裝 然後重啟es 2.測試使用 使用預設 ...

新增ik中文分詞器和pinyin分詞器

1.把ik檔案上傳到docker掛載的plugins1和plugins2中 2.es文件型別對映 在kibana修改一下內容 1.實體文件對映類 document indexname user type user data public class userentity 2.實體類對映關係 impo...