python 利用已有Ner模型进行数据清洗合并代码


Posted in Python onDecember 24, 2019

我就废话不多说了,直接上代码吧!

# -*- coding: utf-8 -*-
from kashgari.corpus import DataReader
import re
from tqdm import tqdm


def cut_text(text, lenth):
  textArr = re.findall('.{' + str(lenth) + '}', text)
  textArr.append(text[(len(textArr) * lenth):])
  return textArr


def clean_data(source_file, target_file, ner_model):
  
  data_x, data_y = DataReader().read_conll_format_file(source_file)

  with tqdm(total=len(data_x)) as pbar:
    for idx, text_array in enumerate(data_x):
      if len(text_array) <= 100:
        ners = ner_model.predict([text_array])
        ner = ners[0]
      else:
        texts = cut_text(''.join(text_array), 100)
        ners = []
        for text in texts:
          ner = ner_model.predict([[char for char in text]])
          ners = ners + ner[0]
        ner = ners     
      # print('[-----------------------', idx, len(data_x))
      # print(data_y[idx])
      # print(ner)
    
      for jdx, t in enumerate(text_array):
        if ner[jdx].startswith('B') or ner[jdx].startswith('I') :
          if data_y[idx][jdx] == 'O':
            data_y[idx][jdx] = ner[jdx]
      
      # print(data_y[idx])
      # print('-----------------------]') 
      pbar.update(1)
      
  f = open(target_file, 'a', encoding="utf-8")  
  for idx, text_array in enumerate(data_x):
    if idx != 0:
      f.writelines(['\n'])  
    for jdx, t in enumerate(text_array):
      text = t + ' ' + data_y[idx][jdx] 
      if idx == 0 and jdx == 0:
        text = text
      else:
        text = '\n' + text
      f.writelines([text])  
  
  f.close()  
  
  data_x2, data_y2 = DataReader().read_conll_format_file(source_file)
  print(data_x == data_x2, len(data_y) == len(data_y2), '数据清洗完成')
# -*- coding: utf-8 -*-
import kashgari
from data_tools import clean_data
time_ner = kashgari.utils.load_model('time_ner.h5')
clean_data('./data/example.dev', 'example.dev', time_ner)

以上这篇python 利用已有Ner模型进行数据清洗合并代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
浅谈python中的占位符
Nov 09 Python
Python扩展内置类型详解
Mar 26 Python
python中单下划线_的常见用法总结
Jul 10 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
python实现得到当前登录用户信息的方法
Jun 21 Python
简单了解python代码优化小技巧
Jul 08 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
Python可以实现栈的结构吗
May 27 Python
实现Python3数组旋转的3种算法实例
Sep 16 Python
如何用Python和JS实现的Web SSH工具
Feb 23 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 #Python
Python3 A*寻路算法实现方式
Dec 24 #Python
python logging添加filter教程
Dec 24 #Python
python打印异常信息的两种实现方式
Dec 24 #Python
numpy实现神经网络反向传播算法的步骤
Dec 24 #Python
python异常处理和日志处理方式
Dec 24 #Python
Python 音频生成器的实现示例
Dec 24 #Python
You might like
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
js 数值项目的格式化函数代码
2010/05/14 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
原生JS轮播图插件
2017/02/09 Javascript
vue组件间通信解析
2017/03/01 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
Vue异步加载about组件
2017/10/31 Javascript
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
Python类的多重继承问题深入分析
2014/11/09 Python
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
大数据分析用java还是Python
2020/07/06 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
团委竞选演讲稿
2014/04/24 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
给老婆的道歉信
2015/01/20 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
教你如何用cmd快速登录服务器
2022/06/10 Servers