Atitit. camel分词器 分词引擎 camel拆分 的实现设计

1. camel分词器1

1.1. 实现的界定符号大写字母小写字母数字1

1.2. 特殊处理 对于JSONObject 多个大写字母连写的处理1

1.3. camel分词器code1

2. 代码实现1

2.1. public class CamelScannerQ1 extends Scanner {2

2.2. public class iniState extends State {3

2.3. public class BigCaseLetterState extends State {4

2.4. public class LowerLetterState extends State {5

2.5. public class NumState extends State {7

1. camel分词器

1.1. 实现的界定符号大写字母小写字母数字

1.2. 特殊处理 对于JSONObject 多个大写字母连写的处理

1.3. camel分词器code

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

2. 代码实现

package com.attilax.fsm.camelScanner;

import java.util.ArrayList;

import java.util.List;

import com.attilax.fsm.Context;

import com.attilax.fsm.FinishState;

import com.attilax.fsm.Scanner;

import com.attilax.fsm.Token;

import com.attilax.json.JSONArray;

import com.attilax.json.JSONObject;

2.1. public class CamelScannerQ1 extends Scanner {

public static void main(String[] args) {

String s = "fld1=1,fld2='at''t,lax',fld3='val3'";

s = "aaaaCamelJSONObject123forMac";

s="com.sun.jna.platform.win32.Variant$VARIANT$_VARIANT$__VARIANT$BRECORD$ByReference.class";

s="";

//s="a";

@SuppressWarnings("rawtypes")

List tokenList = new CamelScannerQ1().getTokenList(s);

System.out.println(JSONArray.fromObject(tokenList).toString(2));

}

public List<String> getTokenList_retStr(String s)

{

if(s.length()==0)

return new ArrayList<String>();

List<String> li_r=new ArrayList<String>();

List<Token> li=getTokenList(s);

for (Token token : li) {

li_r.add(token.value);

}

return li_r;

}

public List getTokenList(String s) {

// DslPaserContext context = new DslPaserContext();

Context context = new Context();

context.setState(new iniState());

int n = 0;

while (!(context.state instanceof FinishState)) {

// System.out.println(n);

// ����

context.request(s);

n++;

if (n > 200)

break;

}

for (Token tk : context.tokenList) {

// if(tk.value.trim().length()>0)

System.out.println(tk.value + "===");

}

return (List) context.tokenList;

}

}

package com.attilax.fsm.camelScanner;

import java.util.List;

import com.attilax.fsm.Context;

import com.attilax.fsm.State;

import com.attilax.lang.text.strUtil;

import com.attilax.util.numUtil;

2.2. public class iniState extends State {

@Override

public void handle(String sampleParameter, Context context) {

context.curcharIndex=0;

char curChar=context.sa[context.curcharIndex];

if(strUtil.isBigLetter(curChar))

{

newToken(context, curChar);

context.state=new BigCaseLetterState();

}

if(strUtil.isLowerLetter(curChar))

{

newToken(context, curChar);

context.state=new LowerLetterState();

}

if(numUtil.isNum(curChar))

{

newToken(context, curChar);

context.state=new NumState();

}

}

}

package com.attilax.fsm.camelScanner;

import com.attilax.fsm.Context;

import com.attilax.fsm.FinishState;

import com.attilax.fsm.State;

import com.attilax.fsm.Token;

import com.attilax.lang.text.strUtil;

import com.attilax.util.numUtil;

2.3. public class BigCaseLetterState extends State {

@Override

public void handle(String sampleParameter, Context context) {

if(MoveNextisEnd(context) ) //or next cur move

return;

char curChar=context.sa[context.curcharIndex];

if(strUtil.isBigLetter(curChar))

{

context.curToken.value=context.curToken.value+String.valueOf(curChar);

context.state=new BigCaseLetterState();

}

if(strUtil.isLowerLetter(curChar))

{

context.curToken.value=context.curToken.value+String.valueOf(curChar);

context.state=new LowerLetterState();

}

if(numUtil.isNum(curChar))

{

context.tokenList.add(context.curToken);

context.curToken=new Token();

context.curToken.value=context.curToken.value+String.valueOf(curChar);

context.state=new NumState();

}

}

}

package com.attilax.fsm.camelScanner;

import com.attilax.fsm.Context;

import com.attilax.fsm.FinishState;

import com.attilax.fsm.State;

import com.attilax.fsm.Token;

import com.attilax.lang.text.strUtil;

import com.attilax.util.numUtil;

2.4. public class LowerLetterState extends State {

@Override

public void handle(String sampleParameter, Context context) {

// TODO Auto-generated method stub

if(MoveNextisEnd(context) )

return;

String trim = context.curToken.value.trim();

String allUpperLetter =trim.substring(0,trim.length()-1);

if(allUpperLetter.startsWith("J"))

System.out.println("");

if(strUtil.isBigLetter(allUpperLetter)  && allUpperLetter.length()>1)  //multi upperLetter

{

final String word=allUpperLetter.substring(0,trim.length()-2);

Token t=new Token(){

{

this.value=word;

}

};

context.tokenList.add(t);

Token t2=new Token();

t2.value=trim.substring( trim.length()-2);

context.curToken=t2;

//context.tokenList.add(t2);

}

char curChar=context.sa[context.curcharIndex];

if(strUtil.isBigLetter(curChar))

{

addCurTokenNnewToken(context, curChar);

context.state=new BigCaseLetterState();

}

if(strUtil.isLowerLetter(curChar))

{

context.curToken.value=context.curToken.value+String.valueOf(curChar);

// context.state=new LowerLetterState();  //state not change

}

if(numUtil.isNum(curChar))

{

addCurTokenNnewToken(context, curChar);

context.state=new NumState();

}

}

package com.attilax.fsm.camelScanner;

import com.attilax.fsm.Context;

import com.attilax.fsm.FinishState;

import com.attilax.fsm.State;

import com.attilax.fsm.Token;

import com.attilax.lang.text.strUtil;

import com.attilax.util.numUtil;

2.5. public class NumState extends State {

@Override

public void handle(String sampleParameter, Context context) {

// TODO Auto-generated method stub

if(MoveNextisEnd(context) )

return;

char curChar=context.sa[context.curcharIndex];

if(strUtil.isBigLetter(curChar))

{

addCurTokenNnewToken(context, curChar);

context.state=new BigCaseLetterState();

}

if(strUtil.isLowerLetter(curChar))

{

addCurTokenNnewToken(context, curChar);

context.state=new LowerLetterState();

}

if(numUtil.isNum(curChar))

{

context.curToken.value=context.curToken.value+String.valueOf(curChar);

// context.state=new NumState();

}

}

}

}

Atitit. camel分词器 分词引擎 camel拆分 的实现设计相关推荐

  1. 中文分词器分词效果的评测方法

    [原创]中文分词器分词效果的评测方法 2013年8月27日 由 learnhard留言 » 转载请注明出处:http://www.codelast.com/ 现在有很多开源的中文分词器库,如果你的项目 ...

  2. 公司开源的java分词,Java开源项目cws_evaluation:中文分词器分词效果评估

    通过对前文<word分词器.ansj分词器.mmseg4j分词器.ik-analyzer分词器分词效果评估>中写的评估程序进行重构改进,形成了一个新的Java开源项目cws_evaluat ...

  3. word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器分词效果评估(转)

    转自:http://yangshangchuan.iteye.com/blog/2056537(有代码可下载) word分词器.ansj分词器.mmseg4j分词器.ik-analyzer分词器分词效 ...

  4. word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器分词效果评估

    2019独角兽企业重金招聘Python工程师标准>>> word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义. 能准确识别英文. ...

  5. ik分词器 分词原理_Solr7.7.2中文分词器

    中文分词器的配置 1.7版本之后solr内置了中文分词器所以可以使用solr内置的分词器进行配置 1.在解压的目录内找到分词器包 2.将包放在solr项目的lib下 3.修改配置文件修改他下面的con ...

  6. ik分词器 分词原理_ElasticSearch 集成Ik分词器

    1 . 由于 ElasticSearch 默认的分词器不支持中文分词,所以我们需要集成IK 分词器. 2. 集成步骤 https://github.com/medcl/elasticsearch-an ...

  7. ik中文分词器分词原则、原理

    转自:https://blog.csdn.net/lala12d/article/details/82776571 仅供学习 1.IK分词器也是基于正向匹配的分词算法. 2.IK分词器,基本可分为两种 ...

  8. ElasticSearch学习笔记(分词器的介绍使用)

    1)分词的概念 分词Search是一个构建于Lucene之上的优秀的分布式全文检索引擎(服务器),它是使用Java开发的,提供基于RESTful风格的Web服务接口.表面上我们只要将一段冗长的要检索的 ...

  9. elasticsearch基础6——head插件安装和web页面查询操作使用、ik分词器

    文章目录 一.基本了解 1.1 插件分类 1.2 插件管理命令 二.分析插件 2.1 es中的分析插件 2.1.1 官方核心分析插件 2.1.2 社区提供分析插件 2.2 API扩展插件 三.Head ...

  10. 【全文搜索引擎】Elasticsearch之分词器

    分词器 分词器(Analyzer):将一段文本,按照一定逻辑,分析成多个词语的一种工具 如:华为手机 - > 华为.手.手机 ElasticSearch 内置分词器 Standard Analy ...

最新文章

  1. 大地震前有三个明显征兆:1.井水异常2.牲畜反应异常3.专家出来辟谣。但是细心网友指出,第三和第二重复了。...
  2. 【AI白身境】学深度学习你不得不知的爬虫基础
  3. 关于.Net2.0下配置架构的使用
  4. WPF MVVM 弹框之等待框
  5. Java中线程池,你真的会用吗
  6. Quartz2D知识点聚合案例
  7. C#中使用NPIO实现导入导出Excel简单操作
  8. webpack实用配置
  9. hdu 4856 Tunnels
  10. 天线下倾角示意图_《天线和下倾角.ppt
  11. 压测学习总结(5)——如何使用Jmeter 进行简单的并发操作
  12. std::map的使用
  13. python怎么下载网站_python怎么下载网页上的文件
  14. itil v4和v3的区别_ITIL从v3到v4 - 这是新的ITIL
  15. 图像特征算法——SIFT、HOG
  16. 计算机系统是几位怎么看,Win10系统如何查看系统位数是32位还是64位
  17. Because You Loved Me歌词
  18. OpenGl学习笔记二:创建自己的着色器
  19. echarts 饼形图{c} 显示 [Obejct,Obejct]
  20. 三星 android 模拟器下载地址,GalaxyOfWar电脑版下载 安卓模拟器图文安装教程

热门文章

  1. POJ 2192 Zipper (简单DP)
  2. java线程--object.waitobject.notify
  3. 【C语言】【笔试题】实现函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中...
  4. 如何在vim中打印出^M
  5. 尝试在RHEL6安装Wordpress —— 接触LAMP
  6. 转 常用C#正则表达式收集。
  7. otsu结合OpenCV实现灰度图像自动阈值处理
  8. [leetcode] (周赛)869. 重新排序得到 2 的幂
  9. 1032. Sharing (25)
  10. 目标检测方法总结(R-CNN系列)