• 大小: 63KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-05
  • 语言: Java
  • 标签: mmseg4j  luncene5.X  

资源简介

中文分词器 mmseg4j luncene5.X 源码 jar包

资源截图

代码片段和文件信息

package com.chenlb.mmseg4j;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * 所有词都记录在第一个字的结点下.
 * 
 * @author chenlb 2009-2-20 下午11:30:14
 */
public class CharNode {

private int freq = -1; //Degree of Morphemic Freedom of One-Character 单字才需要
private int maxLen = 0; //wordTail的最长

private KeyTree ktWordTails = new KeyTree();
private int wordNum = 0;

public CharNode() {

}

public void addWordTail(char[] wordTail) {
ktWordTails.add(wordTail);
wordNum++;
if(wordTail.length > maxLen) {
maxLen = wordTail.length;
}
}
public int getFreq() {
return freq;
}

public void setFreq(int freq) {
this.freq = freq;
}

public int wordNum() {
return wordNum;
}

/**
 * @param sen 句子 一串文本.
 * @param offset 词在句子中的位置
 * @param tailLen 词尾的长度 实际是去掉词的长度.
 * @author chenlb 2009-4-8 下午11:10:30
 */
public int indexOf(char[] sen int offset int tailLen) {
//return binarySearch(wordTails sen offset+1 tailLen casc);
return ktWordTails.match(sen offset+1 tailLen) ? 1 : -1;
}

/**
 * @param sen 句子 一串文本.
 * @param wordTailOffset 词在句子中的位置 实际是 offset 后面的开始找.
 * @return 返回词尾长 没有就是 0
 * @author chenlb 2009-4-10 下午10:45:51
 */
public int maxMatch(char[] sen int wordTailOffset) {
return ktWordTails.maxMatch(sen wordTailOffset);
}

/**
 * 
 * @return 至少返回一个包括 0的int
 * @author chenlb 2009-4-12 上午10:01:35
 */
public ArrayList maxMatch(ArrayList tailLens char[] sen int wordTailOffset) {
return ktWordTails.maxMatch(tailLens sen wordTailOffset);
}

public int getMaxLen() {
return maxLen;
}
public void setMaxLen(int maxLen) {
this.maxLen = maxLen;
}

public static class KeyTree {
TreeNode head = new TreeNode(‘ ‘);

public void add(char[] w) {
if(w.length < 1) {
return;
}
TreeNode p = head;
for(int i=0; i TreeNode n = p.subNode(w[i]);
if(n == null) {
n = new TreeNode(w[i]);
p.born(w[i] n);
}
p = n;
}
p.alsoLeaf = true;
}

/**
 * @return 返回匹配最长词的长度 没有找到返回 0.
 */
public int maxMatch(char[] sen int offset) {
int idx = offset - 1;
TreeNode node = head;
for(int i=offset; i node = node.subNode(sen[i]);
if(node != null) {
if(node.isAlsoLeaf()) {
idx = i; 
}
} else {
break;
}
}
return idx - offset + 1;
}

public ArrayList maxMatch(ArrayList tailLens char[] sen int offset) {
TreeNode node = head;
for(int i=offset; i node = node.subNode(sen[i]);
if(node != null) {
if(node.isAlsoLeaf()) {
tailLens.add(i-offset+1); 
}
} else {
break;
}
}
return tailLens;
}

public boolean match(char[] sen int offset int len) {
TreeNode node = head;
for(int i=0; i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-11-10 17:44  com\
     目录           0  2015-11-10 17:44  com\chenlb\
     目录           0  2015-11-10 17:44  com\chenlb\mmseg4j\
     目录           0  2015-11-10 17:44  com\chenlb\mmseg4j\analysis\
     文件         566  2015-11-10 17:26  com\chenlb\mmseg4j\analysis\ComplexAnalyzer.java
     文件        4526  2015-11-10 17:26  com\chenlb\mmseg4j\analysis\CutLetterDigitFilter.java
     文件         571  2015-11-10 17:26  com\chenlb\mmseg4j\analysis\MaxWordAnalyzer.java
     文件        1381  2015-11-10 17:26  com\chenlb\mmseg4j\analysis\MMSegAnalyzer.java
     文件        2617  2015-11-10 17:26  com\chenlb\mmseg4j\analysis\MMSegTokenizer.java
     文件         572  2015-11-10 17:26  com\chenlb\mmseg4j\analysis\SimpleAnalyzer.java
     文件        1731  2015-11-10 17:26  com\chenlb\mmseg4j\analysis\TokenUtils.java
     文件        3802  2015-11-10 17:28  com\chenlb\mmseg4j\CharNode.java
     文件        2681  2015-11-10 17:28  com\chenlb\mmseg4j\Chunk.java
     文件        4097  2015-11-10 17:28  com\chenlb\mmseg4j\ComplexSeg.java
     文件       12847  2015-11-10 17:28  com\chenlb\mmseg4j\Dictionary.java
     文件        1439  2015-11-10 17:28  com\chenlb\mmseg4j\MaxWordSeg.java
     文件       10355  2015-11-10 17:28  com\chenlb\mmseg4j\MMSeg.java
     目录           0  2015-11-10 17:44  com\chenlb\mmseg4j\rule\
     文件         696  2015-11-10 17:28  com\chenlb\mmseg4j\rule\LargestAvgLenRule.java
     文件         813  2015-11-10 17:28  com\chenlb\mmseg4j\rule\LargestSumDegreeFreedomRule.java
     文件         622  2015-11-10 17:28  com\chenlb\mmseg4j\rule\MaxMatchRule.java
     文件        1147  2015-11-10 17:28  com\chenlb\mmseg4j\rule\Rule.java
     文件         761  2015-11-10 17:28  com\chenlb\mmseg4j\rule\SmallestVarianceRule.java
     文件        2345  2015-11-10 17:28  com\chenlb\mmseg4j\Seg.java
     文件        1173  2015-11-10 17:28  com\chenlb\mmseg4j\Sentence.java
     文件         695  2015-11-10 17:28  com\chenlb\mmseg4j\SimpleSeg.java
     文件        2465  2015-11-10 17:28  com\chenlb\mmseg4j\Word.java
     文件       43234  2015-11-10 17:43  mmseg4j-1.9.2.jar

评论

共有 条评论