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

 更新时间:2019年12月24日 19:56:12   作者:gmHappy  
今天小编就为大家分享一篇python 利用已有Ner模型进行数据清洗合并代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

# -*- 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模型进行数据清洗合并代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Anaconda创建Python指定版本的虚拟环境的教程详解

    使用Anaconda创建Python指定版本的虚拟环境的教程详解

    由于工作的需要和学习的需要,需要创建不同Python版本的虚拟环境,所以这篇文章主要为大家详细介绍了如何使用Anaconda创建Python指定版本的虚拟环境,需要的可以参考下
    2024-03-03
  • python 模拟创建seafile 目录操作示例

    python 模拟创建seafile 目录操作示例

    这篇文章主要介绍了python 模拟创建seafile 目录操作,结合实例形式详细分析了Python模拟创建seafile 目录相关操作技巧,需要的朋友可以参考下
    2019-09-09
  • Python使用pylab库实现绘制直方图功能示例

    Python使用pylab库实现绘制直方图功能示例

    这篇文章主要介绍了Python使用pylab库实现绘制直方图功能,结合实例形式分析了Python数据读取、遍历以及基于pylab库绘制直方图的相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • python爬虫爬取微博评论案例详解

    python爬虫爬取微博评论案例详解

    这篇文章主要介绍了python爬虫爬取微博评论,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • pandas的相关系数与协方差实例

    pandas的相关系数与协方差实例

    今天小编就为大家分享一篇pandas的相关系数与协方差实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python写的ARP攻击代码实例

    python写的ARP攻击代码实例

    这篇文章主要介绍了python写的ARP攻击代码实例,需要的朋友可以参考下
    2014-06-06
  • tensorflow 动态获取 BatchSzie 的大小实例

    tensorflow 动态获取 BatchSzie 的大小实例

    这篇文章主要介绍了tensorflow 动态获取 BatchSzie 的大小实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 彻底搞懂 python 中文乱码问题(深入分析)

    彻底搞懂 python 中文乱码问题(深入分析)

    现在有的小伙伴为了躲避中文乱码的问题甚至代码中不使用中文,注释和提示都用英文,我曾经也这样干过,但这并不是解决问题,而是逃避问题,今天我们一起彻底解决 Python 中文乱码的问题
    2020-02-02
  • python 根据列表批量下载网易云音乐的免费音乐

    python 根据列表批量下载网易云音乐的免费音乐

    这篇文章主要介绍了python 根据列表下载网易云音乐的免费音乐,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-12-12
  • 降低python版本的操作方法

    降低python版本的操作方法

    在本篇内容里小编给大家整理的是一篇关于降低python版本的操作方法,需要的朋友们可以学习参考下。
    2020-09-09

最新评论