任务三 非人物分析判断
2015-12-11 11:58
344 查看
任务三 非人物分析判断
标签(空格分隔): 一找任务描述
目前非人物以人工标注的方式处理
希望修改为:训练人物类数据,判断非人物情况。
数据库已经存储人物类的数据有:
1.基本属性
2.摘要
3.目录结构
4.标签
5.人物关系
个人的补充:做这个任务主要是为了优化NER(命名实体识别)的词库,如果不进行优化,会将很多非人物的姓名丢进去训练NER模型,导致最终训练出来的模型会将许多非人物识别为人物。
实现方案
写了一堆的规则,比如出生年月、国籍、民族等等来判断调用规则对一些常见人名比如张三李四的处理结果不太好,因此用了HanLP(一个开源自然语言处理包)中的NER模块对这些常见人名进行处理,提高了准确率
具体方案可以看tower任务的二楼流程图
代码
位于com.yeezhao.dolphin.crawler.people中的
PeopleIdentityAnalyze
一些关键点说明:
PEOPLE_DESCRIPTORS:人物描述符,作为判断是否为人物的依据
peopleAttrWords: 人物属性,如果从HBase读来的json数据含有这些属性其中之一,就认为是一个人物
Weight:不同规则的权重
handleEntry(PeopleInfo info):基于规则得到的分数 判断一条记录是不是人物
hasPeopleInfo(PeopleInfo info, Map attrMap, String key, String idForCheck):统计一条记录包含多少PEOPLE_DESCRIPTORS种的信息,作为判断是否为人物的依据之一
遇到问题
名字里带故居、墓的被识别为人物解决:用正则表达式加以判断
更新SQL表速度慢
暂时得不到解决
一些权重设置有问题,详情请见
t_people_misclassified表,里面有个
score字段,表示加权后的得分,另外有个
match字段,表示正则表达式命中的关键字,你会发现有些命中了出生年月的人得分很低,原因是我给出生年月的规则设置的权重比较低, 解决办法是给这些规则设置更细致的优先级。
相关文章推荐
- Mybatis foreach 项目实战
- Android 代码中实现返回键功能
- iOS应用架构谈 -(2)view层的组织和调用方案
- 【JOB】Oracle中JOB的创建方法以及一个细节的探究
- pl/sql预定义异常处理
- oracle跨库查询dblink的用法实例详解
- itunes下载的软件怎么安装到手机
- ORACLE SQL Developer日期显示格式设置
- 逆转字符串——输入一个字符串,将其逆转并输出。
- corosync集群的选举算法
- word-wrap和word-break的区别吗?
- Oracle JOB的建立,定时执行任务
- LeetCode - 14. Longest Common Prefix
- allegro蛇形线
- bukket插件例子(3)总结
- 关于裸盘和13.5G的lun
- iOS应用架构谈 (1)开篇
- namespace使用总结
- 关于Ruby程序中的字符转码问题--- Chilkat解决方案介绍
- C++指向类成员函数的指针详细解析