NER的数据处理
import os
class TransferData:
def __init__(self):
cur = '/'.join(os.path.abspath(__file__).split('/')[:-1]) #获取当前文件地址的上级目录
#对分类进行标记
self.label_dict = {
'检查和检验': 'CHECK',
'症状和体征': 'SIGNS',
'疾病和诊断': 'DISEASE',
'治疗': 'TREATMENT',
'身体部位': 'BODY'}
self.origin_path = os.path.join(cur, 'data_origin') #原始数据地址
self.train_filepath = os.path.join(cur, 'train.txt') #转化后的训练数据地址
return
def transfer(self):
f = open(self.train_filepath, 'w+',encoding='utf-8') #以写入的方式打开训练数据要保存的文件
count = 0
for root,dirs,files in os.walk(self.origin_path):
#for (root, dirs, files) in walk(roots):
# roots代表需要遍历的根文件夹;
# root表示正在遍历的文件夹的名字(根/子);
# dirs记录正在遍历的文件夹下的子文件夹集合;
# files记录正在遍历的文件夹中的文件集合
for file in files:
filepath = os.path.join(root, file)
if 'original' not in filepath:
continue
label_filepath = filepath.replace('.txtoriginal','')
print(filepath, '\t\t', label_filepath) #data_origin\一般项目\一般项目-1.txtoriginal.txt data_origin\一般项目\一般项目-1.txt
content = open(filepath,encoding='utf-8').read().strip() #打开案例描述文件,去掉收尾空格
res_dict = {}
for line in open(label_filepath,encoding='utf-8'): #打开实体类别文件
res = line.strip().split(' ') #每个实体描述按空格分隔 ['右髋部',‘21’,‘23’,‘身体部位’]
start = int(res[1]) #实体的其实字符位置
end = int(res[2]) #实体的结束字符位置
label = res[3] #实体类别
label_id = self.label_dict.get(label) #返回分类字典中实体类别对应的values,作为实体名称的id
for i in range(start, end+1):
if i == start:
label_cate = label_id + '-B' #定义实体的首字符
else:
label_cate = label_id + '-I' #实体的非首字符
res_dict[i] = label_cate #构建实体字典{位置index:字符}
for indx, char in enumerate(content): #indx文本中字符的位置,char字符
char_label = res_dict.get(indx, 'O') #如果indx在字典的key中,则返回字典value;否则返回O,代表非实体
print(char, char_label) #字符:字符实体标注
f.write(char + '\t' + char_label + '\n')
f.close()
return
if __name__ == '__main__':
handler = TransferData()
train_datas = handler.transfer()
NER的数据处理的更多相关文章
- NLP入门(五)用深度学习实现命名实体识别(NER)
前言 在文章:NLP入门(四)命名实体识别(NER)中,笔者介绍了两个实现命名实体识别的工具--NLTK和Stanford NLP.在本文中,我们将会学习到如何使用深度学习工具来自己一步步地实现N ...
- 深度学习+CRF解决NER问题
参考https://github.com/shiyybua/NER 1.开发环境:python3.5+tensorflow1.5+pycharm 2.从https://github.com/shiyy ...
- Netty:数据处理流程
Netty作为异步的.事件驱动一个网络通信框架,使用它可以帮助我们快速开发高性能高可靠性的网络服务. 为了更好的使用Netty来解决开发中的问题,学习Netty是很有必要的. Netty现在主流有三个 ...
- 《Caffe下跑AlxNet之数据处理过程》
环境:Windows 最近用Caffe跑了一下AlxNet网络,现在总结一下数据处理部分:(处理过的数据打包链接:http://pan.baidu.com/s/1sl8M5ad 密码:ph1y) ...
- 七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理
第三天我们将学习Asp.Net中数据处理功能,了解数据访问层,EF,以及EF中常用的代码实现方式,创建数据访问层和数据入口,处理Post数据,以及数据验证等功能. 系列文章 七天学会ASP.NET M ...
- ajax的使用:例题、ajax的数据处理
需要注意的是,调用的封装的数据库,和jQuery的保存地址 一.注册 (1)写文本框来进行用户名的验证 <input type="text" id="uid&quo ...
- geotrellis使用(三)geotrellis数据处理过程分析
之前简单介绍了geotrellis的工作过程以及一个简单的demo,最近在此demo的基础上实现了SRTM DEM数据的实时分析以及高程实时处理,下面我就以我实现的上述功能为例,简单介绍一下geotr ...
- geotrellis使用(四)geotrellis数据处理部分细节
前面写了几篇博客介绍了Geotrellis的简单使用,具体链接在文后,今天我主要介绍一下Geotrellis在数据处理的过程中需要注意的细节,或者一些简单的经验技巧以供参考. 一.直接操作本地Geot ...
- Web页面实现后台数据处理进度与剩余时间的显示
1.页面后台代码添加如下属性: /// <summary> /// 总数 /// </summary> private double total { set { Session ...
随机推荐
- P 3396 哈希冲突 根号分治
Link 据说这是一道论文题????.具体论文好像是 集训队论文<根号算法--不只是分块> 根号分治的裸题. 首先我们考虑暴力怎么打. 先预处理出每个模数的答案,之后再 O(1) 的回答, ...
- 【题解】【POI2000】病毒
题目链接 这题让我们构造一个无限长的,不包括给定字符串的01串. 把给定字符串放到\(AC\)自动机上,在结尾处打上标记. 发现,如果我们要构造一个无限长的串,必然要有一个环. 那么这个环上就一定不能 ...
- P4107 [HEOI2015]兔子与樱花 贪心
题目描述 传送门 分析 一道贪心题 首先我们可以证明最优的贡献一定是从下依次合并到上的 不会出现一个节点不能合并到父亲节点,却能合并到父亲节点的祖先节点的情况 我们设当前的节点为 \(u\),\(u\ ...
- Prometheus 入门教程(一):Prometheus 快速入门
文章首发于[陈树义]公众号,点击跳转到原文:https://mp.weixin.qq.com/s/ZXlBPHGcWeYh2hjBzacc3A Prometheus 是任何一个高级工程师必须要掌握的技 ...
- 习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
#include<stdio.h> #include<string.h> #include<ctype.h> double getweight(char x) { ...
- go语言安装使用
go语言安装使用 下载地址 https://golang.google.cn/dl/ https://studygolang.com/dl windows https://studygolang.co ...
- spring boot:swagger3的安全配置(swagger 3.0.0 / spring security / spring boot 2.3.3)
一,swagger有哪些环节需要注意安全? 1,生产环境中,要关闭swagger application.properties中配置: springfox.documentation.swagger- ...
- DateDiff() 方法语法 T-SQL语法
表达式DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]]) 允许数据类型: timeinterval 表示 ...
- 数据库备份作业的T-SQL语句
1.关于大容量数据导入导出的一些方法SQL SERVER提供多种工具用于各种数据源的数据导入导出,这些数据源包括本文文件.ODBC数据源.OLE DB数据源.ASCII文本文件和EXCEL电子表格.2 ...
- 【设计模式】第一篇:概述、耦合、UML、七大原则,详细分析总结(基于Java)
迷茫了一周,一段时间重复的 CRUD ,着实让我有点烦闷,最近打算将这些技术栈系列的文章先暂时搁置一下,开启一个新的篇章<设计模式>,毕竟前面写了不少 "武功招式" 的 ...