• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-21
  • 语言: Java
  • 标签: Java  FMM  中文分词  

资源简介

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

评论

共有 条评论