资源简介
Java语言编写的优秀的中文前向最大分词程序。程序简单容易理解,对于理解中文分词思想有很大的帮助。
代码片段和文件信息
import java.io.*;
import java.util.*;
public class fenci {
private String separator = “/“;
private static fenci segmenter = null;
private static TreeMap cnWords;
private TreeSet cForeign cNumbers;
private fenci(){
cForeign = new TreeSet();
cNumbers = new TreeSet();
loadset(cNumbers “data/snumbers_u8.txt“);
loadset(cForeign “data/sforeign_u8.txt“);
System.out.print(“Loading Lexicon“);
cnWords = new TreeMap();
String newword = null;
try {
InputStream worddata = null;
worddata = new FileInputStream(new File(“data/lexicon.txt“));
BufferedReader in = new BufferedReader(new InputStreamReader(worddata));
int i = 0;
while ((newword = in.readLine()) != null){
if ((++i)%10000 == 0){
System.out.print(‘.‘);
}
if ((newword.indexOf(“#“) == -1) && (newword.length() < 5)){
cnWords.put(newword.intern() true);
if (newword.length() == 3){
if (cnWords.containsKey(newword.substring(0 2).intern()) == false){
cnWords.put(newword.substring(0 2).intern() false);
}
}
if (newword.length() == 4){
if (cnWords.containsKey(newword.substring(0 2).intern()) == false){
cnWords.put(newword.substring(0 3).intern() false);
}
}
}
}
in.close();
System.out.println();
System.out.println(“Loading Lexicon OK“);
System.out.println(“load words number is“ + i);
} catch (IOException e){
System.out.println(“Loading Lexicon failuer“);
e.printStackTrace();
}
}
public synchronized static void reset(){
fenci.segmenter = null;
}
public synchronized static fenci getSegmenter(){
if (fenci.segmenter == null){
fenci.segmenter = new fenci();
}
return fenci.segmenter;
}
private void loadset(TreeSet targetset String sourcefile){
String dataline;
try{
InputStream fr = new FileInputStream(new File(sourcefile));
BufferedReader in = new BufferedReader(new InputStreamReader(fr “UTF-8“));
while ((dataline = in.readLine()) != null){
if ((dataline.indexOf(“#“) > -1) || (dataline.length() == 0)){
continue;
}
targetset.add(dataline.intern());
}
in.close();
} catch (Exception e){
System.err.println(“Exception loading data file“ + sourcefile + “ “ + e);
e.printStackTrace();
}
}
public boolean isNumber(String testword){
boolean result = true;
for (int i=0; i if (!cNumbers.contains(testword.substring(i i+1).intern())){
result = false;
break;
}
}
return result;
}
public boolean isAllForeign(String testword){
boolean result = true;
for (int i=0; i if (!cForeign.contains(testword.substring(i i+1).intern())){
result = false;
break;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5854 2011-04-28 22:01 fenci.java
相关资源
- Java界面版火车票购票系统
- Java写的图书管理系统(带图形界面)
- JAVA计算机毕业设计题目大全
- Tomasulo算法Java模拟器
- Java资源管理器MyExplorer源码
- 架构探险从零开始写javaweb框架-全部章
- java版GUI界面的学生成绩管理系统
- java银行账户管理源程序
- JAVA图书管理系统毕业设计带源码
- javaWeb 毕业设计 图书管理系统 详细代
- java 简单的网络聊天程序 服务器连接
- java按比例实现截图功能
- java实现TCP多客户端与服务器端的通信
- 用java写的tcp数据包发送和接收代码
- javacob的jar包
- java实现任意带table表格的html页面,生
- 图形学 Bezier曲线的递推(de Casteljau)
- mysql-connector-java-5.1.44-bin.jar 包
- java进销存管理系统
- 蓝桥杯Java竞赛指导书
- 中文繁体转简体工具
- 自己写的个人通讯录java代码完整版
- 解魔方程序Java源码
- qq2007 java
- javaEE课程设计报告图书管理系统
- 工作日计算的JAVA实现
- 理发师问题java编写的啊
- JAVA程序员面试宝典 第4版 (带书签
- Java版终端 Demo
- C#调用Java接口演示
评论
共有 条评论