ansj 2.0.7 错误例子分析
我在做一个solr的项目,分词选定了ansj分词。
选择ansj的原因:
1)身边若干朋友的念叨,说是效果不错
2)网上看了若干评论,说是不错
3)自己尝试了一些case,觉得确实不错。
好了,项目中选择了ansj2.0.7-min.jar作为实际使用的版本。
结果。。。愿望是美好的,现实是残酷的。
碰到了若干case,效果不好(使用IndexAnalysis):
1)上海马勒别墅
切分结果:(上/海马/勒/别墅)
预期结果:(上海/马勒/别墅)
调试了一下,在构建Graph的时候没有问题,问题出现在Merger阶段的
@Override
public List<Term> merger() {
graph.walkPath();//上海马勒别墅的问题在这里// 数字发现
if (MyStaticValue.isNumRecognition && graph.hasNum) {
NumRecognition.recognition(graph.terms);
} // 姓名识别
if (graph.hasPerson && MyStaticValue.isNameRecognition) {
// 亚洲人名识别
new AsianPersonRecognition(graph.terms).recognition();
graph.walkPathByScore();
NameFix.nameAmbiguity(graph.terms);
// 外国人名识别
new ForeignPersonRecognition(graph.terms).recognition();
graph.walkPathByScore();
} // 用户自定义词典的识别
userDefineRecognition(graph, forests); return result();
}
2)电话卡+周杰伦摩天轮巡演(开启人名识别)
切分结果:(电话/卡+周/杰伦摩/天轮/巡演)
期望结果: (电话卡/+/周杰伦/摩天轮/巡演)
结果发现, 卡+周 居然被识别成了一个名词。进一步debug发现,“+” 的PersonNatureAttr 属性值不太正常,因为"+"的TermNatures 是TermNatures.NULL.
最终debug发现, TermNatures.NULL 这个常量被修改过。
最终的最终发现,作者在AnsjItem中定义了成员变量引用到了 TermNatures.NULL,并对其进行了修改。
问题发现,并修复掉。
---------------------------------------------------------------------------------------------------------------------------------最终将bug反馈给作者。打完收工
后记,发现人名识别效果分析。
下期再谈论Ansj的人名识别话题。
ansj 2.0.7 错误例子分析的更多相关文章
- oracle 12541,12560,00511无监听程序, 协议适配器错误问题分析及解决方案
oracle 12541,12560,00511无监听程序, 协议适配器错误问题分析及解决方案 问题描述: 1. lsnrctl start.stop.非常慢,出现卡顿现象: 2. 执行lsnrc ...
- spark JavaDirectKafkaWordCount 例子分析
spark JavaDirectKafkaWordCount 例子分析: 1. KafkaUtils.createDirectStream( jssc, String.class, String.c ...
- Android4.0图库Gallery2代码分析(二) 数据管理和数据加载
Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...
- SxsTrace程序追踪 && 错误信息分析
先贴错误:应用程序无法运行,并行配置不正确 ,使用命令行sxstrace.exe.百度解决版本. 起因:同事给我一 EXE,然后基于 其进行开发 dll和模块,但是无法加入进程,无法运行. SxsTr ...
- jQuery ajax请求错误返回status 0和错误error的问题
上周发现一个jQuery ajax请求错误返回status 0和错误error的问题,responseText是"error",状态码是0而不是200: $.ajax({ type ...
- Unsupported major.minor version 49.0的错误解决
Unsupported major.minor version 49.0的错误解决 Posted on 2011-01-14 16:49 chinaifne 阅读(15840) 评论(0) 编辑 收 ...
- loadFileSystems error & ExceptionUtils错误原因分析
loadFileSystems error & ExceptionUtils错误原因分析 一见 2014/5/7 C/C++程序通过hdfs.h访问HDFS,运行时遇到如下错误,会是什么原因了 ...
- “undefined reference to JNI_GetCreatedJavaVM”和“File format not recognized”错误原因分析
"undefined reference to JNI_GetCreatedJavaVM"和"File format not recognized"错误原因分析 ...
- Spark2.1.0之源码分析——事件总线
阅读提示:阅读本文前,最好先阅读<Spark2.1.0之源码分析——事件总线>.<Spark2.1.0事件总线分析——ListenerBus的继承体系>及<Spark2. ...
随机推荐
- Linux系统监控命令
1. uptime: 负载监控,w命令更好地显示当前登录用户数的信息 2.top: 相当于uptime,提供了负载平均值的快照 (1)第一行: up 48days: 系统运行时间 2 users: 当 ...
- SQL SERVER分区具体例子详解
在日常工作中,我们会遇到以下的情况,一个表每日数万级的增长,而查询的数据通常是在本月或今年,以前的数据偶尔会用到,但查询和插入的效率越来越慢,用数据库分区会有助于解决这个问题.关于分区的理论知识网上很 ...
- CF 752C. Santa Claus and Robot
C. Santa Claus and Robot time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- [css]《css揭秘》学习笔记(一)
一.background-clip属性 <html> <head> <meta charset="utf-8"> <title>背景 ...
- 自己开发轻量级ORM(三)
上一篇中简单分享了下ORM的设计思路.现在开始讲如何用代码来实现上篇的设计模型. 我们建2个类库来分别抽象数据库表结构关系映射和SQL增删改查操作. 打开VS2010,新建2个类库.分别起名为Mode ...
- MySQL性能优化方案
$stmt->execute(); // 绑定结果 $stmt->bind_result($username); // 移动游标 $stmt->fetch(); printf(&qu ...
- shiro的入门实例-shiro于spring的整合
shiro是一款java安全框架.简单而且可以满足实际的工作需要 第一步.导入maven依赖 <!-- shiro --> <dependency> <groupId&g ...
- C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(上)
译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(上)),不对的地方欢迎指出与交流. 章节出自<Professional C ...
- 基于Ubuntu14.04-LTS下安装docker
1.sudo apt-get update --更新系统源 2.sudo apt-get install docker.io 3.将docker库的公钥中加入到本地apt中 sudo apt-key ...
- ReentrantLock实现原理
以下是本篇文章的大纲 1 synchronized和lock 1.1 synchronized的局限性 1.2 Lock简介 2 AQS 3 lock()与unlock()实现原理 3.1 基础知识 ...