crf++中文命名实体识别

来源:互联网 发布:python开发网页怎么样? 编辑:程序博客网 时间:2024/05/22 12:01

(在新浪搜索部实习,方向为基于crf的中文命名实体识别,现将自己一个月的学习总结如下,本人也是初学者,文中所讲仅为个人理解,错误之处欢迎各位指正)

  第一部分:基础知识

  1.1 命名实体识别概念
命名实体识别: 把文本中出现的命名实体包括人名,地名,组织机构名等实体识别出来并且加以归类,它是自然语言处理的基本任务,是机器翻译,信息检索等技术的基础。
  1.2:命名实体识别的方法           1)基于规则的方法         2)基于统计的方法

1)基于规则的方法
eg:“胡德君作为实习生加入了新浪公司”。
  在基于规则的系统中,它会根据【人名】作为一名【职位名】 加入了【机构名】这样的规则,提取出“新浪公司”这个机构名。
    缺点:规则的设计过程耗时且容易产生错误,难以涵盖所有的语言现象,需要富有经验的语言专家才能完成,并且可移植性差。
2)基于统计的方法
        主要是利用标注语料库来训练某个字作为命名实体组成部分的概率,并用它们来计算某个候选字段作为命名实体的概率值,若大于某一阈值,则识别为命名实体。
        与规则方法相比:基于统计方法的系统具有更好的健壮性和灵活性,且实现的代价较小,可移植性好。


第二部分:crf++机器学习



上图为我理解中crf++工具包的使用示图:

1.crf++学习模块:crf++提供的一个基于CRF条件随机域学习策略的学习方法。

2.训练语料:关于中文命名实体识别的训练语料,网上有一些公开的语料库(eg:人民日报语料库),将其处理为crf++能识别的格式,加入自己的标签即可。

3.特征选取函数:告诉crf机器学习过程中需要考虑训练语料中的哪些特征(如上下文,词性特征等)

4.model:crf++将学习结果以一定格式保存到model文件中。

5.测试语料:可以选择语料库中的一部分作为测试语料。

6.crf++测试模块:用于测试crf学习的效果,使用学习部分生成model去预测测试语料中的标签。


第三部分:如何提升系统的准确率和召回率

1.训练语料的质量和数量

2.特征的选取

3.调整crf++的参数

4.在召回的基础上,进行二次crf学习,可以提高准确率


0 0