「中文分词java代码」java实现中文分词

博主:adminadmin 2023-01-11 03:09:07 570

今天给各位分享中文分词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程序啊? 老师给了一段文字,让我们分词

这里的分词是什么意思呢?如果是按照空格将一段文字分解成字符串数组的话,我想无所谓中英文的区别吧。java.util.StringTokenizer这个类就可以实现这个功能

java语言中文分词程序怎么编写分词程序正

现可以提供两种思路:

1.String或是StringBuffer(建议用) 中的indexOf("中华")方法,查找给定的的字符串中是否有给定词表中的词。

2.借鉴编译原理中的状态装换的思想。

先编写一个状态机,用于测试给定字符串中的词是否满足词表中的内容。

写在最后:1)建议使用第一种方法,因为在java 内部实现的查找操作其实 和你想得思路是相同的,不过他的效率会高些。

2)如果个人的编程能力比较强或是不考虑效率只是想实现专有的分词算法。可以使用第二种方法。

3)以上的两种方法都可以使用多线程来提高程序的效率。

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程序:从一篇语料中提取所有的以'/'为结束的中文分词,并将统计结果写入文件中

package com.jy.test.alltest;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

public class Test {

/**

* @param args

* @throws IOException

*/

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

System.out.println("请输入语料文件路径名:");

Scanner sc = new Scanner(System.in);

String fileName= sc.nextLine();

// File fileName = new File("c:\\wj.txt"); 这个是测试时用的语料文件,非用户输入

BufferedReader reader = new BufferedReader(new FileReader(fileName));

BufferedWriter bw =new BufferedWriter(new FileWriter("c:\\news.txt"));

//默认文件写入C盘下的TXT文档中,如需修改,改变路径即可。

String line;

while( ( line=reader.readLine() )!=null ){

String[] s1 = line.split(" ");

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

String[] s2 = s1[i].split("/");

System.out.println(s2[0]);

bw.write(s2[0]);

}

}

reader.close();

bw.close();

}

}

关于中文分词java代码和java实现中文分词的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。