从CRF测试结果中提取出连续的标注行
来源:互联网 发布:学java先学c? 编辑:程序博客网 时间:2024/06/11 17:47
现在在处理一批CRF标注的语料,需要将测试结果中标为B、I的行提取出来,对于连续的B、I标注行,要在一起抽出。如有以下测试语料标注结果(片断):
a a1 a2 O
b b1 b2 B
c c1 c2 I
d d1 d2 I
e e1 e2 O
f f1 f2 B
从中将b、c两行合在一起抽出,f行要单独抽取,目标结果格式如下:
[[[b,b1,b2,B],[c,c1,c2,I]],[f,f1,f2,B]]
解决思路:
1、利用根据字符切割的方法,将原始标注结果转为列表型数据。
2、设置前后两个游标,遍历列表中的每一句(标注结果中的空行表示句子结果),当发现有BI标注行时,将其抽取出来。
代码如下:
# -*- coding: utf8 -*- '''Created on 2015-7-15@author: admin'''sents=[] #用于保存结果的列表tempLine=[] #用于保存当前句的临时列表for eachLine in open('corpus/0701/testResult.txt','r',encoding='utf8'): #逐行读取标结果文件 if(eachLine!='\n'): #如果当前行不为空 colList=eachLine[0:-1].split('\t'); #根据制表符进行分隔,得到当前行的各列数据 tempLine.append(colList); # 将其追加到临时列表中 else: #如果当前为空行 sents.append(tempLine); #说明一句读完了,则添加到结果列表中 tempLine=[]; #清空临时列表,等待下一句# print(sents);dict=[]; #用于保存最终结果的列表for sentId in range(len(sents)): #遍历上述代码片断的结果中的句子 tempDict=[]; #用于保存当前捕捉到的结果的临时列表 firstWordId=0; #第一个遍历当前句子的游标 while(firstWordId<len(sents[sentId])-1): # 开始循环 if(sents[sentId][firstWordId][-1]!='O' ): #如果发现有非O行 secondWordId=firstWordId+1; #设置第二个遍历当前句子的游标,从第一个游标的下一元素开始 tempDict.append(sents[sentId][firstWordId]); #将当前行添加到临时表中 while(secondWordId<len(sents[sentId])): #开始第二个游标的循环 if(sents[sentId][secondWordId][-1]!='O'): #如果发现非O行 tempDict.append(sents[sentId][secondWordId]); #将当前行添加到临时表中 else: #如果当前行的标注结果是O,说明前面发现的标结果已经捕捉完毕, break; #中断第二个游标的循环 secondWordId+=1; #改变内层循环变量 dict.append(tempDict);#当内层循环结束时,说明已经发现了一组标注结果了,将他们整体添加到最终结果列表中 tempDict=[]; #清空临时列表 firstWordId+=1; #改变外层循环变量print(dict)
0 0
- 从CRF测试结果中提取出连续的标注行
- Python从google结果中提取出地址(搜索用亿邮的大学)
- 从zImage中提取出Image的方法
- 从SQL SERVER中提取出除newid()之外全重复的行算法
- 从TSPLib中提取出邻接矩阵
- 从string中提取出数字
- 从字符串中提取出汉字?
- 从字符串中提取出数字
- CRF序列标注模型几个问题的理解
- 关于CRF序列标注的一些理解
- 机器学习中,从一张图片中提取出感兴趣的区域(以交通标志为例)
- 如何从txt中或者codeblocks中提取出某一列的数值
- 从字符串中筛选出连续的数字,并将其放入另一个数组!
- 从文本中grep出连续出现30个字母的句子
- 从html table中提取出数据通过vb写的activex导入本地
- 从TSYS通用函数库中提取出了一些有用的函数
- 怎样从MIDI文件中提取出音符的绝对音高信息
- 从包括扩展名的文件名中提取出文件名和扩展名
- 内存映射文件
- 算法面试题总结
- leetcode-153-Find Minimum in Rotated Sorted Array
- ImageSwitcher和TextSwitcher使用笔记
- apache虚拟机配置
- 从CRF测试结果中提取出连续的标注行
- 学习CSS(5)
- 这几天的感想吧
- Tri Tiling(hdu1143)
- cocos2d学习之旅(二)
- 用户管理命令
- 6 Keroa
- 7 阿拉伯语
- 关于layout_weight属性的使用