IKAnalyzer使用不同版本中文分詞的切詞方式實(shí)現(xiàn)相同功能效果
最近公司在做一個(gè)題庫(kù)的功能,需要用到 中文分詞和公式分詞的工具,最開(kāi)始用 IKAnalyzer 2012F
版本 + lunece 6.5.1
做了一版中文分詞工具。
具體如下:
一、IKAnalyzer 2012F + lunece 6.5.1 實(shí)現(xiàn)中文分詞
public static List<String> analysisByIK(Analyzer analyzer,String field, String content){ if(StringUtils.isNullOrEmpty(content)){ return null; } TokenStream ts = null; try { ts = analyzer.tokenStream(field, new StringReader(content)); CharTermAttribute term = ts.addAttribute(CharTermAttribute.class); ts.reset(); List<String> vocabularies = new ArrayList<>(); while (ts.incrementToken()) { vocabularies.add(term.toString()); } ts.end(); return vocabularies; } catch (Exception e) { logger.error(e.getMessage(), e); } finally { if (ts != null) { try { ts.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; }
調(diào)用方式:
String str = "已知三角形ABC中,角A等于角B加角C,那么三角形ABC是 A、銳角三角形 B、直角三角形 C、鈍角三角形 D、不能確定"; Analyzer analyzer = new IKAnalyzer(true); ikList = analysisByIK(analyzer, "myfield", str); listAnalyzer.addAll(ikList);
輸出結(jié)果listAnalyzerd
:
[已知, 三角形, abc, 中, 角, a, 等于, 角, b, 加, 角, c, 那么, 三角形, abc, 是, a, 銳角三角形, b, 直角三角形, c, 鈍角三角形, d, 不能, 確定]
但是由于公式切詞是 原來(lái)公司大牛寫(xiě)的,在滿足公式切詞的條件下,中文切詞的IKAnalyzer 2012F
與其不兼容。于是嘗試其他版本,最終決定用 IKAnalyzer 3.2.8
實(shí)現(xiàn)了兼容。
二、IKAnalyzer 3.2.8 + lunece 3.1.0 兼容版本
public static List<String> analysisByIK3Point2(Analyzer analyzer,String field, String content) throws Exception{ if(StringUtils.isNullOrEmpty(content)){ return null; } List<String> list = new ArrayList<>(); Reader reader = new StringReader(content); TokenStream stream = (TokenStream)analyzer.tokenStream(field, reader); //添加工具類(lèi) 注意:以下這些與之前l(fā)ucene2.x版本不同的地方 TermAttribute termAtt = (TermAttribute)stream.addAttribute(TermAttribute.class); OffsetAttribute offAtt = (OffsetAttribute)stream.addAttribute(OffsetAttribute.class); // 循環(huán)打印出分詞的結(jié)果,及分詞出現(xiàn)的位置 while(stream.incrementToken()){ list.add(termAtt.term()); // System.out.println(termAtt.term()); } return list; }
調(diào)用方式:
String str = "已知三角形ABC中,角A等于角B加角C,那么三角形ABC是 A、銳角三角形 B、直角三角形 C、鈍角三角形 D、不能確定"; Analyzer analyzer = new IKAnalyzer(true); ikList = analysisByIK3Point2(analyzer, "myfield", str); listAnalyzer.addAll(ikList);
輸出結(jié)果:
[已知, 三角形, abc, 中, 角, a, 等于, 角, b, 加, 角, c, 那么, 三角形, abc, 是, a, 銳角三角形, b, 直角三角形, c, 鈍角三角形, d, 不能, 確定]
即使用不同版本實(shí)現(xiàn)相同功能效果。 主要是 因?yàn)?code>IKAnalyzer 2012F 依賴(lài)Analyzer
的tokenStream
是final
方法,但是公式分詞用到的tokenSteam
方法是抽象方法。兩者沖突了,所以考慮去做兼容。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- IKAnalyzer結(jié)合Lucene實(shí)現(xiàn)中文分詞(示例講解)
- python使用jieba實(shí)現(xiàn)中文分詞去停用詞方法示例
- java中文分詞之正向最大匹配法實(shí)例代碼
- python中文分詞教程之前向最大正向匹配算法詳解
- Python中文分詞工具之結(jié)巴分詞用法實(shí)例總結(jié)【經(jīng)典案例】
- Python結(jié)巴中文分詞工具使用過(guò)程中遇到的問(wèn)題及解決方法
- php實(shí)現(xiàn)的中文分詞類(lèi)完整實(shí)例
- 開(kāi)源php中文分詞系統(tǒng)SCWS安裝和使用實(shí)例
- 幾款開(kāi)源的中文分詞系統(tǒng)
- PHP中文分詞 自動(dòng)獲取關(guān)鍵詞介紹
- PHP中文分詞的簡(jiǎn)單實(shí)現(xiàn)代碼分享
相關(guān)文章
Java服務(wù)假死之生產(chǎn)事故的排查與優(yōu)化問(wèn)題
在服務(wù)器上通過(guò)curl命令調(diào)用一個(gè)Java服務(wù)的查詢接口,半天沒(méi)有任何響應(yīng),怎么進(jìn)行這一現(xiàn)象排查呢,下面小編給大家記一次生產(chǎn)事故的排查與優(yōu)化——Java服務(wù)假死問(wèn)題,感興趣的朋友一起看看吧2022-07-07Java Thread之Sleep()使用方法總結(jié)
這篇文章主要介紹了Java Thread之Sleep()使用方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05教你在一分鐘之內(nèi)理解Java Lambda表達(dá)式并學(xué)會(huì)使用
今天給大家?guī)У奈恼率荍ava8新特性的相關(guān)知識(shí),文章圍繞著如何在一分鐘之內(nèi)理解Java Lambda表達(dá)式并學(xué)會(huì)使用展開(kāi),文中有非常詳細(xì)的介紹,需要的朋友可以參考下2021-06-06spring boot 自定義規(guī)則訪問(wèn)獲取內(nèi)部或者外部靜態(tài)資源圖片的方法
這篇文章主要介紹了spring boot 自定義規(guī)則訪問(wèn)獲取內(nèi)部或者外部靜態(tài)資源圖片的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01cmd中javac和java使用及注意事項(xiàng)詳解
這篇文章主要介紹了cmd中javac和java使用及注意事項(xiàng)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07詳解Spring Cloud Zuul中路由配置細(xì)節(jié)
本篇文章主要介紹了詳解Spring Cloud Zuul中路由配置細(xì)節(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10