java编个中文分词的程序

我想编个中文分词的程序,大神帮帮忙?... 我想编个中文分词的程序,大神帮帮忙? 展开
 我来答
a2040605
2014-03-17 · TA获得超过337个赞
知道小有建树答主
回答量:194
采纳率:100%
帮助的人:136万
展开全部
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
更多追问追答
追问
只是什么算法实现的啊?
追答
分析方法:字典分词,正反双向搜索
kf1815
2014-03-17
知道答主
回答量:4
采纳率:100%
帮助的人:6004
展开全部
现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

从基于字符串匹配的分词方法,中文分词的实现思路如下:
1 提供一个词典
2 在字符串中正向扫描或者反向扫描匹配 将字符串中多个字符取出后进行词典匹配

这个是效率最低的方式

另外就是基于统计方式,记录字与字一同出现的频率,实现分词
追问
可以写个程序吗
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式