Scala使用Ansj分詞

2021-08-28 20:50:32 字數 1697 閱讀 1258

org.ansj

ansj_seg

5.1.6

org.nlpcn

nlp-lang

1.7.7

ansj分詞有四種模式:

使用者自定義詞典

數字識別

人名識別

機構名識別

新詞發現χ√

χχχ使用者自定義詞典

數字識別

人名識別

機構名識別

新詞發現√√

√χχ使用者自定義詞典

數字識別

人名識別

機構名識別

新詞發現√√

√√√使用者自定義詞典

數字識別

人名識別

機構名識別

新詞發現√√√χχ

val str = "這是乙個詐騙簡訊,恭喜您中獎啦!"

val result = toanalysis.parse(str)

println(result)

顯示結果:

這/r,是/v,乙個/m,詐騙/vn,簡訊/n,,/w,恭喜/v,您/r,中獎/v,啦/y,!/w
使用者還可以通過建立stoprecognition()來進行過濾,例如:

val filter = new stoprecognition()

filter.insertstopnatures("w",null) //過濾掉標點和null

自定義詞庫的好處就是可以按照你自己的方式定義詞,例如「這是乙個詐騙簡訊」裡的「這是」,按照ansj原來的分詞方式,會將「這是」分為:這/r,是/v,你可以將「這是」認定為乙個詞,並且可以自定義這個詞的屬性,豈不是美滋滋?

1.在resource目錄下,建立library目錄,建立userlibrary.dic檔案:

2.在檔案中寫入內容:

這是    	r    1000
注意:中間分割付一定是\t

3.**:

import org.nlpcn.commons.lang.tire.library.library

val forest = library.makeforest(classof[nothing].getresourceasstream("/library/userlibrary.dic")) //載入字典檔案

val filter = new stoprecognition()

filter.insertstopnatures("w") //過濾掉標點

val str = "這是乙個詐騙簡訊,恭喜您中獎啦!"

val result = toanalysis.parse(str,forest)

.recognition(filter)// 過濾掉標點

.tostringwithoutnature(",")// 分詞缺省會打出詞性,此語句用於不打出詞性,並且分好的詞用「,」隔開

println(result)

結果:

這是,乙個,詐騙,簡訊,恭喜,您,中獎,啦
ansj分詞 使用手冊:

ansj 分詞系統的詞性

最近做nlp,需要詞性,特地查了下保留下i下來 漢語文字詞性標註標記集 1.名詞 1個一類,7個二類,5個三類 名詞分為以下子類 n 名詞 nr 人名 nr1 漢語姓氏 nr2 漢語名字 nrj 日語人名 nrf 音譯人名 ns 地名 nsf 音譯地名 nt 機構團體名 nz 其它專名 nl 名詞性...

ansj分詞方式詳細解析

toanalysis 精準分詞精準分詞是ansj分詞的店長推薦款 它在易用性,穩定性.準確性.以及分詞效率上.都取得了乙個不錯的平衡.如果你初次嘗試ansj如果你想開箱即用.那麼就用這個分詞方式是不會錯的.dicanalysis 使用者自定義詞典優先策略的分詞使用者自定義詞典優先策略的分詞,如果你的...

ansj分詞方式詳細解析

toanalysis 精準分詞精準分詞是ansj分詞的店長推薦款 它在易用性,穩定性.準確性.以及分詞效率上.都取得了乙個不錯的平衡.如果你初次嘗試ansj如果你想開箱即用.那麼就用這個分詞方式是不會錯的.dicanalysis 使用者自定義詞典優先策略的分詞使用者自定義詞典優先策略的分詞,如果你的...