<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                轉載請注明出處:[http://blog.csdn.net/xiaojimanman/article/details/42916755](http://blog.csdn.net/xiaojimanman/article/details/42916755) 在lucene創建索引的過程中,數據信息的處理是一個十分重要的過程,在這一過程中,主要的部分就是這一篇博客的主題:**分詞器**。在下面簡單的demo中,介紹了7中比較常見的分詞技術,即:CJKAnalyzer、KeywordAnalyzer、SimpleAnalyzer、StopAnalyzer、WhitespaceAnalyzer、StandardAnalyzer、IKAnalyzer;自己可以通過注釋的形式一一驗證。源程序如下: **Analyzer分詞demo** ~~~ /** *@Description: 分詞技術demo */ package com.lulei.lucene.study; import java.io.StringReader; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.cjk.CJKAnalyzer; import org.apache.lucene.analysis.core.KeywordAnalyzer; import org.apache.lucene.analysis.core.SimpleAnalyzer; import org.apache.lucene.analysis.core.StopAnalyzer; import org.apache.lucene.analysis.core.WhitespaceAnalyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.apache.lucene.util.Version; import org.wltea.analyzer.lucene.IKAnalyzer; public class AnalyzerStudy { public static void main(String[] args) throws Exception { //需要處理的測試字符串 String str = "這是一個分詞器測試程序,希望大家繼續關注我的個人系列博客:基于Lucene的案例開發,這里加一點帶空格的標簽 LUCENE java 分詞器"; Analyzer analyzer = null; //標準分詞器,如果用來處理中文,和ChineseAnalyzer有一樣的效果,這也許就是之后的版本棄用ChineseAnalyzer的一個原因 analyzer = new StandardAnalyzer(Version.LUCENE_43); //第三方中文分詞器,有下面2中構造方法。 analyzer = new IKAnalyzer(); analyzer = new IKAnalyzer(false); analyzer = new IKAnalyzer(true); //空格分詞器,對字符串不做如何處理 analyzer = new WhitespaceAnalyzer(Version.LUCENE_43); //簡單分詞器,一段一段話進行分詞 analyzer = new SimpleAnalyzer(Version.LUCENE_43); //二分法分詞器,這個分詞方式是正向退一分詞(二分法分詞),同一個字會和它的左邊和右邊組合成一個次,每個人出現兩次,除了首字和末字 analyzer = new CJKAnalyzer(Version.LUCENE_43); //關鍵字分詞器,把處理的字符串當作一個整體 analyzer = new KeywordAnalyzer(); //被忽略的詞分詞器 analyzer = new StopAnalyzer(Version.LUCENE_43); //使用分詞器處理測試字符串 StringReader reader = new StringReader(str); TokenStream tokenStream = analyzer.tokenStream("", reader); tokenStream.reset(); CharTermAttribute term = tokenStream.getAttribute(CharTermAttribute.class); int l = 0; //輸出分詞器和處理結果 System.out.println(analyzer.getClass()); while(tokenStream.incrementToken()){ System.out.print(term.toString() + "|"); l += term.toString().length(); //如果一行輸出的字數大于30,就換行輸出 if (l > 30) { System.out.println(); l = 0; } } } } ~~~ 注:上述程序對analyzer進行了9次賦值,自己可以通過一一注解的形式查看每一種分詞技術的分詞效果。 **分詞器介紹** 下面將會對這些分詞器做一些簡單的介紹,以及上述程序在該分詞器下的運行截圖: **StandardAnalyzer** StandardAnalyzer標準分詞器,如果用來處理中文,和ChineseAnalyzer有一樣的效果,這也許就是之后的版本棄用ChineseAnalyzer的一個原因。用StandardAnalyzer處理英文效果還不錯,但是對中文的處理只是將其分成單個漢字,并不存在任何語義或詞性,如果實在沒有其他的分詞器,用StandardAnalyzer來處理中文還是可以的,上述事例使用StandardAnalyzer分詞技術的運行結果如下圖: ![](https://box.kancloud.cn/2016-02-22_56ca7bede0b4b.jpg) **IKAnalyzer** IKAnalyzer是基于Lucene的第三方中文分詞技術,該分詞技術基于現有的中文詞庫實現的,在構造Analyzer對象時有兩種構造方法,無參構造等同于new IKAnalyzer(false) ,在介紹true/false兩種參數下分詞器的不同之前先看看這兩種情況下的事例運行結果: false運行結果如下圖: ![](https://box.kancloud.cn/2016-02-22_56ca7bedf2500.jpg) true運行結果如下圖: ![](https://box.kancloud.cn/2016-02-22_56ca7bee0d835.jpg) 從上述事例中,我們可以簡單的看出,false的情況下會對已分的詞進行再分,如果存在長度較小的詞元,也將其作為一個分詞結果。IKAnalyzer是一種比較常用的中文分詞技術,但是其分詞效果過于依賴字典,所以要使其達到更好的效果,需要不斷的升級自己的字典。 **WhitespaceAnalyzer** WhitespaceAnalyzer空格分詞,這個分詞技術就相當于按照空格簡單的切分字符串,對形成的子串不做其他的操作,結果同string.split(" ")的結果類似。上述事例在WhitespaceAnalyzer分詞技術下的運行結果如下圖: ![](https://box.kancloud.cn/2016-02-22_56ca7bee23af4.jpg) 這種分詞技術也許你會絕對沒有太大的作用,它對輸入的字符串幾乎沒有做太多的處理,對語句的處理結果也不是太好,如果這樣想就錯了,下面就簡單的想一下這個問題,這篇博客的標簽是 lucene、java、分詞器,那這三個詞在索引中又該如何的存儲,采用何種分詞技術呢?這里不做任何解答,自己思考下,在以后的小說案例中會對標簽這個域提出具體的解決方案。 **SimpleAnalyzer** SimpleAnalyzer簡單分詞器,與其說是一段話進行分詞,不如說是一句話就是一個詞,遇到標點、空格等,就將其之前的內容當作一個詞。上述事例在SimpleAnalyzer分詞技術下的運行結果如下圖: ![](https://box.kancloud.cn/2016-02-22_56ca7bee356bd.jpg) **CJKAnalyzer** CJKAnalyzer是二分法分詞器,這個分詞方式是正向退一分詞(二分法分詞),同一個字會和它的左邊和右邊組合成一個次,每個人出現兩次,除了首字和末字,也就是說會將任何兩個相鄰的漢字當作是一個詞,這種分詞技術會產生大量的無用詞組。上述事例在CJKAnalyzer分詞技術下的運行結果如下圖: ![](https://box.kancloud.cn/2016-02-22_56ca7bee4b51a.jpg) **KeywordAnalyzer** KeywordAnalyzer關鍵字分詞器,把處理的字符串當作一個整體,這個分詞器,在lucene之前的版本中或許還有點作用,但最近的幾個版本中,Lucene對域的類型做了細分,它的作用就不是太大了,不做在luke中,還是相當重要的。上述事例在KeywordAnalyzer分詞技術下的運行結果如下圖: ![](https://box.kancloud.cn/2016-02-22_56ca7bee5c5a8.jpg) **StopAnalyzer** StopAnalyzer被忽略的詞分詞器,被忽略的詞就是在分詞結果中,被丟棄的字符串,如標點、空格等。上述事例在StopAnalyzer分詞技術下的運行結果如下圖: ![](https://box.kancloud.cn/2016-02-22_56ca7bee6be9f.jpg) 上述的7種分詞技術都可以對中文做處理,對外文(非英語)的處理有以下幾種分詞技術: BrazilianAnalyzer 巴西語言分詞? CzechAnalyzer 捷克語言分詞 DutchAnalyzer 荷蘭語言分詞 FrenchAnalyzer 法國語言分詞 GermanAnalyzer 德國語言分詞 GreekAnalyzer 希臘語言分詞 RussianAnalyzer 俄羅斯語言分詞 ThaiAnalyzer 泰國語言分詞
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看