首页后端开发JAVAjava分词实现代码 java分词工具类

java分词实现代码 java分词工具类

时间2023-04-21 13:00:02发布访客分类JAVA浏览1558
导读:java编个中文分词的程序 import java.io.Reader;import java.io.StringReader;import org.apache.lucene.analysis.*;import org.apache.lu...

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点吸烟.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语言中文分词程序怎么编写分词程序正

现可以提供两种思路:

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

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

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

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

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

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

java语言编写一个String的分词程序,功能就是计算输入英文句子的单词个数

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class Danci {

public static void main(String[] args){

String str = new String();

System.out.print("请输入一个英文句子:");

try{

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //获取键盘输入

str = br.readLine();

} catch(IOException e){

e.printStackTrace();

}

String []s = str.split(" "); //转换成数组

System.out.println("你输入的句子共有单词 "+s.length+" 个"); //s.length获取数组长度

}

}

//此程序只能获取一句话的单词个数.

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: java分词实现代码 java分词工具类
本文地址: https://pptw.com/jishu/4468.html
基于go语言搜索引擎 基于go语言的管理系统 java人物跳动代码 java控制跳转语句

游客 回复需填写必要信息