zoukankan      html  css  js  c++  java
  • 任务三 非人物分析判断

    任务三 非人物分析判断

    标签(空格分隔): 一找


    任务描述

    目前非人物以人工标注的方式处理
    希望修改为:训练人物类数据,判断非人物情况。
    数据库已经存储人物类的数据有:
    1.基本属性
    2.摘要
    3.目录结构
    4.标签
    5.人物关系

    个人的补充:做这个任务主要是为了优化NER(命名实体识别)的词库,如果不进行优化,会将很多非人物的姓名丢进去训练NER模型,导致最终训练出来的模型会将许多非人物识别为人物。

    实现方案

    1. 写了一堆的规则,比如出生年月、国籍、民族等等来判断

    2. 调用规则对一些常见人名比如张三李四的处理结果不太好,因此用了HanLP(一个开源自然语言处理包)中的NER模块对这些常见人名进行处理,提高了准确率

    具体方案可以看tower任务的二楼流程图

    代码

    位于com.yeezhao.dolphin.crawler.people中的PeopleIdentityAnalyze

    一些关键点说明:

    • PEOPLE_DESCRIPTORS:人物描述符,作为判断是否为人物的依据
    • peopleAttrWords: 人物属性,如果从HBase读来的json数据含有这些属性其中之一,就认为是一个人物
    • Weight:不同规则的权重
    • handleEntry(PeopleInfo info):基于规则得到的分数 判断一条记录是不是人物
    • hasPeopleInfo(PeopleInfo info, Map<String, String> attrMap, String key, String idForCheck):统计一条记录包含多少PEOPLE_DESCRIPTORS种的信息,作为判断是否为人物的依据之一

    遇到问题

    1. 名字里带故居、墓的被识别为人物
      解决:用正则表达式加以判断

    2. 更新SQL表速度慢
      暂时得不到解决

    3. 一些权重设置有问题,详情请见t_people_misclassified表,里面有个score字段,表示加权后的得分,另外有个match字段,表示正则表达式命中的关键字,你会发现有些命中了出生年月的人得分很低,原因是我给出生年月的规则设置的权重比较低, 解决办法是给这些规则设置更细致的优先级。

  • 相关阅读:
    iOS让软键盘消失的简单方法
    苹果使用蓝汛CDN网络分发ios8
    -pie can only be used when targeting iOS 4.2 or later
    java并发容器(Map、List、BlockingQueue)具体解释
    SQL SERVER 服务启动失败
    Android5.0新特性-Material Design
    java对象和json数据转换实现方式3-使用jackson实现
    XML Publiser For Excel Template
    Unity3D之Mecanim动画系统学习笔记(六):使用脚本控制动画
    Unity3D之Mecanim动画系统学习笔记(五):Animator Controller
  • 原文地址:https://www.cnblogs.com/wacc/p/5038580.html
Copyright © 2011-2022 走看看