欢迎光临 x-algo
关注算法在工业界应用
Hi, 这是一个关注大数据算法在工业界应用的网站

CRF++地名实体识别(特征为词性和词)

类似使用CRF实现分词和词性标注,地域识别也是需要生成相应的tag进行标注。这里使用的语料库是1998年1月人民日报语料集。最终学习出来的模型,对复杂的地名识别准确率(F值)非常低,推测是预料中对地名的标注多处是前后矛盾。例如  [华南/ns 地区/n]ns  标为地名实体,但是 东北/f 地区/n 确分开标注,类似错误还有很多。将来有时间可以考虑使用微软的词库 戳我下载-微软词库

本文还是在人民日报的语料之下,在分完词的粒度BMES标注最后效果如下:

由于单字识别F值很高,并且数量多,所以整个识别的效果还是很高。 语料、相关代码下载:[戳我下载]crf++地名实体识别,下面为具体流程。

生成训练和测试数据

通过一个python脚本按照一定比例生成训练和测试数据,生成过程中按照BMES对语料进行标识,具体规则如下:

实体识别-地点标注集定义

通过调用脚本: cat people-daily.txt | python get_ner_loc_train_test_data.py  >log 生成所需要的训练和测试数据,中间过程打印出来很多调试信息,打印到标准输出话费较多时间。具体代码如下(已折叠):

模板文件

 

开始训练和测试

通过下面命令执行训练和测试过程:

分类型计算F值

通过执行: python clc.py test.rst 执行脚本,脚本内容如下:

参考文献

基于 CRF和规则相结合的地理命名实体识别方法 何炎祥1,2 罗楚威2 胡彬尧

未经允许不得转载:大数据算法 » CRF++地名实体识别(特征为词性和词)

分享到:更多 ()

评论 12

*

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #6

    这种如果准确率不够高想提高准确率怎么办?

    sky2年前 (2016-04-07)回复
    • 最有效的办法因该是更多的标注语料,但是成本太高。 我的做法是模型跑完之后进行一些规则的处理,对单个词是地名的识别还是比较准确的,错误率高的是长地名。 例如可以加一个规则是:预测标注为O B I O,可以直接将改为 O B E O

      leihao2年前 (2016-04-07)回复
  2. #5

    你好,请问怎么实现地名、人名、组织名一起识别出来呢?

    1231年前 (2017-03-22)回复
    • 一起训练就可以了吧

      leihao1年前 (2017-03-22)回复
  3. #4

    非常感谢您啊,因为我代码能力不行,我想把这识别出来的实体提取保存出来是不是要写相关的程序啊?我现在在目的是想先识别实体,然后进行实体关系的识别。

    1231年前 (2017-03-22)回复
    • 是要写一些代码,如果只是调用库,都不复杂应该

      leihao1年前 (2017-03-22)回复
  4. #3

    话说,模板怎么定义的,没看懂

    kylinhao1年前 (2017-03-29)回复
    • 可以看crf++的官网的说明

      leihao1年前 (2017-03-29)回复
  5. #2

    为什么模板有的是/% 有的是% 比如U10和U11

    hey7个月前 (10-17)回复
    • /是特征组合的分隔符

      leihao7个月前 (10-18)回复
  6. #1

    运行报错ValueError: not enough values to unpack (expected 2, got 1)是怎么回事

    二毛6个月前 (11-30)回复
    • 可能机器环境的问题,逐行debug试试找原因吧..

      leihao5个月前 (12-26)回复

关注大数据算法在工业界应用

本站的GitHub关于本站