真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

中文分詞算法java代碼 中文分詞算法java代碼是什么

java中文分詞組件word怎么使用

參考如下

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、做網(wǎng)站與策劃設(shè)計,德保網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:德保等地區(qū)。德保做網(wǎng)站價格咨詢:028-86922220

1、快速體驗

運(yùn)行項目根目錄下的腳本demo-word.bat可以快速體驗分詞效果

用法: command [text] [input] [output]

命令command的可選值為:demo、text、file

demo

text 楊尚川是APDPlat應(yīng)用級產(chǎn)品開發(fā)平臺的作者

file d:/text.txt d:/word.txt

exit

2、對文本進(jìn)行分詞

移除停用詞:ListWord words = WordSegmenter.seg("楊尚川是APDPlat應(yīng)用級產(chǎn)品開發(fā)平臺的作者");

保留停用詞:ListWord words = WordSegmenter.segWithStopWords("楊尚川是APDPlat應(yīng)用級產(chǎn)品開發(fā)平臺的作者");

System.out.println(words);

輸出:

移除停用詞:[楊尚川, apdplat, 應(yīng)用級, 產(chǎn)品, 開發(fā)平臺, 作者]

保留停用詞:[楊尚川, 是, apdplat, 應(yīng)用級, 產(chǎn)品, 開發(fā)平臺, 的, 作者]

3、對文件進(jìn)行分詞

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、自定義配置文件

默認(rèn)配置文件為類路徑下的word.conf,打包在word-x.x.jar中

自定義配置文件為類路徑下的word.local.conf,需要用戶自己提供

如果自定義配置和默認(rèn)配置相同,自定義配置會覆蓋默認(rèn)配置

配置文件編碼為UTF-8

5、自定義用戶詞庫

自定義用戶詞庫為一個或多個文件夾或文件,可以使用絕對路徑或相對路徑

用戶詞庫由多個詞典文件組成,文件編碼為UTF-8

詞典文件的格式為文本文件,一行代表一個詞

可以通過系統(tǒng)屬性或配置文件的方式來指定路徑,多個路徑之間用逗號分隔開

類路徑下的詞典文件,需要在相對路徑前加入前綴classpath:

指定方式有三種:

指定方式一,編程指定(高優(yōu)先級):

WordConfTools.set("dic.path", "classpath:dic.txt,d:/custom_dic");

DictionaryFactory.reload();//更改詞典路徑之后,重新加載詞典

指定方式二,Java虛擬機(jī)啟動參數(shù)(中優(yōu)先級):

java -Ddic.path=classpath:dic.txt,d:/custom_dic

指定方式三,配置文件指定(低優(yōu)先級):

使用類路徑下的文件word.local.conf來指定配置信息

dic.path=classpath:dic.txt,d:/custom_dic

如未指定,則默認(rèn)使用類路徑下的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、顯式指定分詞算法

對文本進(jìn)行分詞時,可顯式指定特定的分詞算法,如:

WordSegmenter.seg("APDPlat應(yīng)用級產(chǎn)品開發(fā)平臺", SegmentationAlgorithm.BidirectionalMaximumMatching);

SegmentationAlgorithm的可選類型為:

正向最大匹配算法:MaximumMatching

逆向最大匹配算法:ReverseMaximumMatching

正向最小匹配算法:MinimumMatching

逆向最小匹配算法:ReverseMinimumMatching

雙向最大匹配算法:BidirectionalMaximumMatching

雙向最小匹配算法:BidirectionalMinimumMatching

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

全切分算法:FullSegmentation

最少分詞算法:MinimalWordCount

最大Ngram分值算法:MaxNgramScore

9、分詞效果評估

運(yùn)行項目根目錄下的腳本evaluation.bat可以對分詞效果進(jìn)行評估

評估采用的測試文本有253 3709行,共2837 4490個字符

評估結(jié)果位于target/evaluation目錄下:

corpus-text.txt為分好詞的人工標(biāo)注文本,詞之間以空格分隔

test-text.txt為測試文本,是把corpus-text.txt以標(biāo)點(diǎn)符號分隔為多行的結(jié)果

standard-text.txt為測試文本對應(yīng)的人工標(biāo)注文本,作為分詞是否正確的標(biāo)準(zhǔn)

result-text-***.txt,***為各種分詞算法名稱,這是word分詞結(jié)果

perfect-result-***.txt,***為各種分詞算法名稱,這是分詞結(jié)果和人工標(biāo)注標(biāo)準(zhǔn)完全一致的文本

wrong-result-***.txt,***為各種分詞算法名稱,這是分詞結(jié)果和人工標(biāo)注標(biāo)準(zhǔn)不一致的文本

java如何分詞??

如果你的分詞規(guī)則是在一個字符串的開頭和結(jié)尾加上"_",然后兩個字符一分的話,代碼可以這樣寫:

import java.util.ArrayList;

import java.util.List;

public class Participle

{

private static final String HEAD_END_STR = "_";

private static final int PARTICIPLE_LENGTH = 2;

public static void main(String[] args)

{

String exampleWord = "計算機(jī)";

exampleWord = "_" + exampleWord + "_";

int length = exampleWord.length();

ListString result = new ArrayListString();

for (int i = 0; i length - 1; i++)

{

String str = exampleWord.substring(i, i + PARTICIPLE_LENGTH);

result.add(str);

}

System.out.println(result);

}

}

輸出結(jié)果:_計, 計算, 算機(jī), 機(jī)_

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

現(xiàn)可以提供兩種思路:

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

2.借鑒編譯原理中的狀態(tài)裝換的思想。

先編寫一個狀態(tài)機(jī),用于測試給定字符串中的詞是否滿足詞表中的內(nèi)容。

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

2)如果個人的編程能力比較強(qiáng)或是不考慮效率只是想實(shí)現(xiàn)專有的分詞算法??梢允褂玫诙N方法。

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

Java中文分詞算法

這兩天正好在玩lucene,沒用庖丁分詞,主要是嫌它要配置環(huán)境,麻煩

下面是demo,記得要加lucene-core-2.3.2.jar和lucene-Analyzer.jar以及IKAnalyzer.jar這幾個包,有問題call我

import java.io.Reader;

import java.io.StringReader;

import org.apache.lucene.analysis.Analyzer;

import org.apache.lucene.analysis.StopFilter;

import org.apache.lucene.analysis.Token;

import org.apache.lucene.analysis.TokenFilter;

import org.apache.lucene.analysis.TokenStream;

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.IK_CAnalyzer;

public class TestJeAnalyzer {

private static String testString1 = "冗長的代碼常常是復(fù)雜性的標(biāo)志,會導(dǎo)致代碼難以測試和維護(hù).";

public static void testStandard(String testString) throws Exception{

Analyzer analyzer = new StandardAnalyzer();

Reader r = new StringReader(testString);

StopFilter sf = (StopFilter) analyzer.tokenStream("", r);

System.err.println("=====standard analyzer====");

System.err.println("分析方法:默認(rèn)沒有詞只有字");

Token t;

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

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

}

}

public static void testCJK(String testString) throws Exception{

Analyzer analyzer = new CJKAnalyzer();

Reader r = new StringReader(testString);

StopFilter sf = (StopFilter) analyzer.tokenStream("", r);

System.err.println("=====cjk analyzer====");

System.err.println("分析方法:交叉雙字分割");

Token t;

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

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

}

}

public static void testChiniese(String testString) throws Exception{

Analyzer analyzer = new ChineseAnalyzer();

Reader r = new StringReader(testString);

TokenFilter tf = (TokenFilter) analyzer.tokenStream("", r);

System.err.println("=====chinese analyzer====");

System.err.println("分析方法:基本等同StandardAnalyzer");

Token t;

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

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

}

}

public static void testJe(String testString) throws Exception{

// Analyzer analyzer = new MIK_CAnalyzer();

Analyzer analyzer = new IK_CAnalyzer();

Reader r = new StringReader(testString);

TokenStream ts = (TokenStream)analyzer.tokenStream("", r);

System.err.println("=====je analyzer====");

System.err.println("分析方法:字典分詞,正反雙向搜索,具體不明");

Token t;

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

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

}

}

public static void main(String[] args) throws Exception{

// String testString = testString1;

String testString = testString1;

System.out.println(testString);

testStandard(testString);

testCJK(testString);

// testPaoding(testString);

testChiniese(testString);

testJe(testString);

}

}

漢語句子拆分算法 java實(shí)現(xiàn) 高手請指教

這個分詞是一個很大很難的東西,中科院做了五年才做出ICTCLAS,如果你自己寫的話估計可以暈了,建議你用現(xiàn)成的分詞工具,用java調(diào)用,比較好的有上面的ICTCLAS,如果你是做搜索引擎,那么用lucene支持的一些分詞工具會很不錯

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?=?"中文分詞的方法其實(shí)不局限于中文應(yīng)用,也被應(yīng)用到英文處理,如手寫識別,單詞之間的空格就很清楚,中文分詞方法可以幫助判別英文單詞的邊界";

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


當(dāng)前文章:中文分詞算法java代碼 中文分詞算法java代碼是什么
文章分享:http://weahome.cn/article/hgjsjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部