java中文分詞csdn,java中文分詞算法訓練

本文目錄一覽:

java編個中文分詞的程序

import java.io.Reader;

import java.io.StringReader;

import org.apache.lucene.analysis.*;

import org.apache.lucene.analysis.cjk.CJKAnalyzer;

import org.apache.lucene.analysis.cn.ChineseAnalyzer;

import org.apache.lucene.analysis.standard.StandardAnalyzer;

import org.mira.lucene.analysis.MIK_CAnalyzer;

public class JeAnalyzer {

    public static void testStandard(String testString) {

        try {

            Analyzer analyzer = new StandardAnalyzer();

            Reader r = new StringReader(testString);

            StopFilter sf = (StopFilter) analyzer.tokenStream(“”, r);

            System.err.println(“=====standard analyzer====”);

            Token t;

            while ((t = sf.next()) != null) {

                System.out.println(t.termText());

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    public static void testCJK(String testString) {

        try {

            Analyzer analyzer = new CJKAnalyzer();

            Reader r = new StringReader(testString);

            StopFilter sf = (StopFilter) analyzer.tokenStream(“”, r);

            System.err.println(“=====cjk analyzer====”);

            Token t;

            while ((t = sf.next()) != null) {

                System.out.println(t.termText());

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    public static void testChiniese(String testString) {

        try {

            Analyzer analyzer = new ChineseAnalyzer();

            Reader r = new StringReader(testString);

            TokenFilter tf = (TokenFilter) analyzer.tokenStream(“”, r);

            System.err.println(“=====chinese analyzer====”);

            Token t;

            while ((t = tf.next()) != null) {

                System.out.println(t.termText());

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    public static String transJe(String testString, String c1, String c2) {

        String result = “”;

        try {

            Analyzer analyzer = new MIK_CAnalyzer();

            Reader r = new StringReader(testString);

            TokenStream ts = (TokenStream) analyzer.tokenStream(“”, r);

            Token t;

            while ((t = ts.next()) != null) {

                result += t.termText() + “,”;

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

        return result;

    }

    public static void main(String[] args) {

        try {

            String testString = “中文分詞的方法其實不局限於中文應用,也被應用到英文處理,如手寫識別,單詞之間的空格就很清楚,中文分詞方法可以幫助判別英文單詞的邊界”;

            System.out.println(“測試的語句    “+testString);

            String sResult[] = transJe(testString, “gb2312”, “utf-8”).split(“,”);

            for (int i = 0; i  sResult.length; i++) {

                System.out.println(sResult[i]);

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

jar包  

lucene-analyzers-2.4.1.jar

lucene-core-2.4.1.jar

IKAnalyzer2.0.2OBF.jar

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、對文本進行分詞

移除停用詞:ListWord words = WordSegmenter.seg(“楊尚川是APDPlat應用級產品開發平台的作者”);

保留停用詞:ListWord 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

雙向最大最小匹配算法:BidirectionalMaximumMinimumMatching

全切分算法: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,***為各種分詞算法名稱,這是分詞結果和人工標註標準不一致的文本

java word分詞器怎樣安裝在java中

word分詞是一個Java實現的分佈式的中文分詞組件,提供了多種基於詞典的分詞算法,並利用ngram模型來消除歧義。

如果需要安裝word分詞器可以參考下面的步驟:

1、確保電腦上已經安裝了JDK軟件和Eclispe工具,沒有安裝的可以到對應的官網下載安裝:

JDK官網:

Eclipse官網:

2、下載word分詞器的相關jar包:

打開word分詞器的官方github主頁:

下拉找到ReadME部分,點擊「編譯好的jar下載」:

頁面將會跳轉到到百度雲盤的下載頁面,按照需求下載指定的版本即可。

注意:word1.3需要JDK1.8。

下載完成之後解壓到指定目錄。

3、創建Java項目,導入word分詞器的相關jar包:

打開Eclipse,右鍵創建Java project項目:

然後右鍵項目選擇Build path打開導入頁面,導入剛才下載的jar包到項目中:

導入成功之後就可以在自己的項目中使用word分詞器了。

java語言中文分詞程序怎麼編寫分詞程序正

現可以提供兩種思路:

1.String或是StringBuffer(建議用) 中的indexOf(“中華”)方法,查找給定的的字符串中是否有給定詞表中的詞。

2.借鑒編譯原理中的狀態裝換的思想。

先編寫一個狀態機,用於測試給定字符串中的詞是否滿足詞表中的內容。

寫在最後:1)建議使用第一種方法,因為在java 內部實現的查找操作其實 和你想得思路是相同的,不過他的效率會高些。

2)如果個人的編程能力比較強或是不考慮效率只是想實現專有的分詞算法。可以使用第二種方法。

3)以上的兩種方法都可以使用多線程來提高程序的效率。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/304623.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-01 11:05
下一篇 2025-01-01 11:05

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python實現爬樓梯算法

    本文介紹使用Python實現爬樓梯算法,該算法用於計算一個人爬n級樓梯有多少種不同的方法。 有一樓梯,小明可以一次走一步、兩步或三步。請問小明爬上第 n 級樓梯有多少種不同的爬樓梯…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29

發表回復

登錄後才能評論