中文分词Java简单实现
2017-11-09 10:36
411 查看
中文分词Java简单实现
存备忘
存备忘
package helloJavaWorld; //用栈存取词语 class StackTest { private Object[] stack; //元素个数; private int size; //默认长度为10; public StackTest(){ this(10); } //也可以自己设置长度,即容量; public StackTest(int len){ stack = new Object[len]; } //返回元素个数; public int size(){ return size; } //返回数组长度,即容量; public int capacity(){ return stack.length; } //实现动态的数组; public void ensureCapacity(){ if(size() == capacity()){ Object[] newStack = new Object[size() * 3 / 2 + 1]; System.arraycopy(stack, 0, newStack, 0, size()); stack = newStack; } } //入栈; public void push(Object o){ size++; ensureCapacity(); stack[size - 1] = o; } //判空; public boolean isEmpty(){ return size == 0; } //出栈; public Object pop(){ //首先要判空; if(isEmpty()){ throw new ArrayIndexOutOfBoundsException("不能为空"); } Object o = stack[--size]; stack[size] = null; return o; } } /** * 建立Split类 * 设置词典内容 * @author zhangliang * */ class Split { private String[] dictionary = {"我","是","武汉","理工大","理工大学","武汉理工大学","的","一名","二","年级","二年级","学生"}; //词典 private String input = null; public Split(String input) { this.input = input; } //分词 public void start() { String temp = null; StackTest stack = new StackTest(20); for(int i=0;i<this.input.length();i++) { temp = this.input.substring(i); // 每次从字符串开头截取一个字,并存到temp中 // 如果该词在词典中, 则删除该词并在原始字符串中截取该词 if(this.isInDictionary(temp)) { stack.push(temp); //入栈 this.input = this.input.replace(temp, ""); i = -1; // i=-1是因为要重新查找, 而要先执行循环中的i++ } } // 当前循环完毕,词的末尾截去一个字,继续循环, 直到词变为空 if(null != this.input && !"".equals(this.input)) { this.input = this.input.substring(0,this.input.length()-1); this.start(); } //出栈 while (!stack.isEmpty()) { System.out.print(stack.pop() + " ");} } //判断当前词是否在词典中 public boolean isInDictionary(String temp) { for(int i=0;i<this.dictionary.length;i++) { if(temp.equals(this.dictionary[i])) { return true; } } return false; } } public class splitChinsesCharacter { public static void main(String[] args){ String input = "我是武汉理工大学一名二年级的学生"; // 要匹配的字符串 new Split(input).start(); } }
相关文章推荐
- 用PHP实现简单的反向最大匹配中文分词(代码)
- 简单实现中文分词中的常用字过滤
- 使用Lucene和IKAnalyzer实现 中文简单 分词
- Java中将中文姓名转换为拼音的简单实现
- 中文分词之Java实现使用IK Analyzer实现
- 最简单的对Java List列表按中文拼音排序的实现方式
- 搜索引擎之中文分词实现(java版)
- java简单实现季节,性别分词处理
- 04_java Lucene学习——分词Analyzer(02):lucene4.0_学写简单的中文同义词分词器
- 一个简单最大正向匹配(Maximum Matching)MM中文分词算法的实现
- 中文分词之Java实现使用IK Analyzer实现
- 搜索引擎之中文分词实现(java版)
- java简单实现季节,性别分词处理
- 基于Tire树和最大概率法的中文分词功能的Java实现
- PHP简单实现中文分词全文索引实例(tag专题)
- 中文分词之Java实现使用IK Analyzer实现
- 搜索引擎之中文分词实现(java版)
- 基于Tire树和最大概率法的中文分词功能的Java实现
- 简单实现中文分词中的常用字过滤
- 中文分词之Java实现使用IK Analyzer实现