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

CRF++中文分词

使用人民日报的语料,为了方便切割,将其中的\t替换为了空格,语料直接下载:人民日报语料。生成的crf测试和训练数据:点击-训练和测试数据下载(6tag版本)

对于语料有嵌套的标注,例如:[中央/n 电视台/n]nt,为了处理方便,只考虑最细粒度的分词结果,即当作是 中央/n 电视台/n 两个词进行处理。生成训练数据的python脚本是来自 李海波的博客,由于粘贴的时候缩进错乱导致不可用,所以对脚本进行了修改。

生成训练数据

通过下面python脚本,根据人民日报的语料库生成crf的测试和训练数据。原始数据中随机10%是测试数据,90%是训练数据。程序打印出来了不少调试信息,可以忽略。生成训练数据的时候,支持4tag和6tag两个格式,6tag的格式是:

S,单个词;B,词首;E,词尾;M1/M2/M,词中

4tag和6tag的区别就是没有词中顺序状态。具体代码:

生成数据时,通过最后一个参数是4还是6区别生成4tag数据还是6tag数据。

使用模板

训练和测试

计算F值

计算结果:

参考文章

CRF++中文分词使用指南

未经允许不得转载:大数据算法 » CRF++中文分词

分享到:更多 ()

评论 22

*

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

    你好,我正在做这方面的课程设计,看到您的博客收益颇多,但是在比较基础的问题上不是很懂,请问您能发一份程序?

    学生2年前 (2016-05-12)回复
    • 上面python程序是直接可以运行的,训练部分你需要安装crf++就可以了直接调用命令训练和测试了。

      leihao2年前 (2016-05-13)回复
      • 您的第一部分4tag和6tag标注的代码复制了就不能直接运行,好像最后一行convertTag(tag)需要往前缩进,不然执行不到这一语句,然后中间部分运行了也会报错,您能不能看一下?感谢

        学生2年前 (2016-05-16)回复
        • 你是用命令行运行的吗? 如果是ide需要配置传入参数,程序我在linux环境py2是可以运行的,通过命令行运行:python get_crf_train_test_data.py 6或者python get_crf_train_test_data.py 4

          leihao2年前 (2016-05-16)回复
          • 我是在windows下安装的python2.7直接运行的,中间出现了错误,现在正在一点点修改,好像走到decode和encode部分又有问题了

            学生2年前 (2016-05-16)
          • 同学,你的问题解决了吗?我现在也遇到这样的问题,请教一下,怎么解决的?

            长江七号1年前 (2017-03-04)
          • UnicodeDecodeError: 'utf8' codec can't decode byte 0xc2 in position 0: invalid continuation byte,这个好像是第一个字符“迈向”中的“迈”字,对其解码报错,走到这里程序停了

            学生2年前 (2016-05-16)
          • 我把uni = words.decode('utf-8')和li.append(u.encode('utf-8'))中的utf-8改正为gb2312现在程序已经跑通了,还在运行当中,后来查了一下.txt文件好像默认存储编码是gb2312,但是还是没搞清楚原因,为什么在你那里和我这不同,难道是系统环境不一样?别处,中间某处也加了一个语句修改,目的是去掉空字符。

            学生2年前 (2016-05-16)
          • windows下这些命令在哪输入python get_crf_train_test_data.py 6或者python get_crf_train_test_data.py 4,直接运行代码结果是这个tag[6,4] convert raw data to train.data and tag.test.data,有时间望指导,谢谢

            二毛8个月前 (12-03)
          • 最好用linux, win下面python在dos下执行, win下可能有换行符和路径等问题

            leihao8个月前 (12-26)
  2. #2

    请问,训练数据集中的将实体[ ]包起来,比如[中国/n 故宫/n]nt,是如何做到的

    请问,训练数据集中的将实体[ ]包起来,比如[中国/n 故宫/n]nt,是如何做到的2年前 (2016-08-19)回复
    • 手工标注的语料

      leihao2年前 (2016-08-19)回复
      • UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 15: illegal multibyte sequence 你好,请教一下 出现这问题怎么解决?

        长江七号1年前 (2017-03-04)回复
      • UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 15: illegal multibyte sequence 出现这问题怎么解决

        1231年前 (2017-03-04)回复
        • 文件开始有#coding=utf8这一行吗?

          leihao1年前 (2017-03-04)回复
          • 有的 实现不了。怎么解决呢。代码和你公布的一样的,一直提醒这个错误。我现在在做实体识别,你公布的代码里面的地名识别可以在代码里面增加识别人名和其他领域内自定义的名吗?非常感谢

            1231年前 (2017-03-04)
          • Traceback (most recent call last): File "crfeval.py", line 16, in for l in file:UnicodeDecodeError: 'gbk' codec can't decode byte 0x91 in position 2: illegal multibyte sequence 其中一个代码提示这个错误

            1231年前 (2017-03-04)
          • (1)代码linux环境执行没有问题,win可能有问题;(2)尝试修改为所有文件编码为utf-8(3)添加人名需要标注数据并重新训练,自定义词典可以通过维特比算法的时候限制label的取值范围实现

            leihao1年前 (2017-03-04)
          • 请问您装的ubuntu系统吗,

            1231年前 (2017-03-13)
          • centos 6

            leihao1年前 (2017-03-14)
  3. #1

    你好,是怎么随机的实现10%是测试数据,90%是训练数据的?

    1231年前 (2017-03-26)回复
    • 从原始预料中,随机分的。。

      leihao1年前 (2017-03-26)回复

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

本站的GitHub关于本站