java中文分词代码 java单词拆分

Java中文分词算法这两天正好在玩lucene,没用庖丁分词,主要是嫌它要配置环境,麻烦
下面是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 = "冗长的代码常常是复杂性的标志 , 会导致代码难以测试和维护.";
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("分析方法:默认没有词只有字");
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编个中文分词的程序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; isResult.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语言中文分词程序怎么编写分词程序正现可以提供两种思路:
1.String或是StringBuffer(建议用) 中的indexOf("中华")方法 , 查找给定的的字符串中是否有给定词表中的词 。
2.借鉴编译原理中的状态装换的思想 。
先编写一个状态机,用于测试给定字符串中的词是否满足词表中的内容 。
写在最后:1)建议使用第一种方法 , 因为在java 内部实现的查找操作其实 和你想得思路是相同的,不过他的效率会高些 。
2)如果个人的编程能力比较强或是不考虑效率只是想实现专有的分词算法 。可以使用第二种方法 。
3)以上的两种方法都可以使用多线程来提高程序的效率 。
java如何分词??如果你的分词规则是在一个字符串的开头和结尾加上"_",然后两个字符一分的话,代码可以这样写:
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 = "计算机";
exampleWord = "_"exampleWord"_";
int length = exampleWord.length();
ListString result = new ArrayListString();
for (int i = 0; ilength - 1; i)
{
String str = exampleWord.substring(i, iPARTICIPLE_LENGTH);
result.add(str);
}
System.out.println(result);
}
}
输出结果:_计, 计算, 算机, 机_
【java中文分词代码 java单词拆分】java中文分词代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java单词拆分、java中文分词代码的信息别忘了在本站进行查找喔 。

    推荐阅读