文本数据预处理:可能需要关注这些点

news/2024/11/23 1:51:45/

文章目录

      • 1、文本数据获取
      • 2、常规文本数据预处理
        • 2.1 将文本数据清洗干净
        • 2.2 将文本数据格式化
      • 3、任务相关的文本数据预处理
        • 3.1 不平衡问题
        • 3.2 数据增强问题
        • 3.3 数据标注问题
      • 4、一些可用的文本预处理工具
      • 5、总结

本文关键词: 文本数据预处理、中文文本预处理、自然语言处理

摘要: 要进行自然语言处理相关工作,文本数据预处理是个必不可少的过程。本文将对文本数据预处理相关的内容进行归纳整理,主要包括以下4个方面内容:

  • 文本数据获取
  • 常规文本数据预处理
  • 任务相关的文本数据预处理
  • 文本预处理工具

1、文本数据获取

“巧妇难为无米之炊”,要做文本数据处理,首先需要获得文本数据。对于此问题,大家可以“八仙过海,各显神通”,借助一切合法、合理方式收集数据集。一般的,可以通过:自有数据整理、公开数据爬取和开源数据引用三个渠道获取数据。

  • 自有数据:收集整理自有或者组织内部的可用数据集。

  • 爬取数据:爬虫是获取数据的重要手段,但是在执行该操作前需遵守相关法规和Robots协议,在爬取数据后合法应用数据。通常,可以通过requests、BeautifulSoup4和Selenium等python工具完成绝大多数爬取任务。


图片豆瓣电影评论爬取可参考:
https://www.cnblogs.com/fengxi177/p/16939376.html


  • 开源数据:当前已有很多公开的NLP数据集支撑相关的研究和应用分析,如github项目:
项目名项目链接项目概述
CLUEDatasetSearchhttps://github.com/CLUEbenchmark/CLUEDatasetSearch收集了众多中英文NLP数据集
funNLPhttps://github.com/fighting41love/funNLP分门别类的组织了众多的NLP数据集和项目
awesome-chinese-nlphttps://github.com/crownpku/Awesome-Chinese-NLP收集了中文自然语言处理相关资料
Chinese_medical_NLPhttps://github.com/lrs1353281004/Chinese_medical_NLP收集了医疗NLP领域(主要关注中文)评测数据集与论文相关资源

由此,在收集好原始数据集后便可进行后续相关的NLP分析了。

特别的,数据集可以保存为txt、json、csv、tsv、sql表等等格式,只要你喜欢,都可以(哈哈哈,有些格式可能会比较占用内存,较大数据集时需要留意)。
图片此处分享一个csv超大文件数据读取技巧,即利用pandas的chunksize分块读取。

import pandas as pddf = pd.read_csv("data.csv", chunksize=10000)  # 每次读取1w行数据
for df_chunk in df:print(df_chunk)

2、常规文本数据预处理

文本数据作为一种非结构化数据,除了特别处理过的数据集,大多数直接收集的文本数据会掺杂或多或少的无用信息,如果直接将其进行相关的文本分析于建模是无益的。通常,需要先对文本数据进行预处理操作。
文本数据预处理的主要目的一般有两个,即:
(1)将文本数据清洗干净(标准自定)
(2)将文本数据格式化(需求自定)

2.1 将文本数据清洗干净

  • 空格换行符,利用replace操作将原始文本中的空格、tab键、换行符\n、\r等与文本无关的字符直接替换为空。

  • 无用信息剔除,如:停用词表构建。

  • 标点符号去除,利用正则表达式去除标点符号,中英文标点符号可以通过如下两个方式获取。
    中文标点符号:from zhon.hanzo import punctuation (需要安装包:pip install zhon)
    英文标点符号:from string import punctuation
    特别的,文本情感分析中,可保留有情感倾向的标点符号,如:?和!

  • 在噪声数据中提取需要数据,利用正则表达式完成数据提取。如:只需要提取汉字时可以利用正则[\u4e00-\u9fa5]

  • 简体繁体转换,可安装包:pip install opencc

  • 英文数据:词形还原、大小写转换等 (推荐python包:NLTK)

2.2 将文本数据格式化

  • 文本分句,根据标点符号分句。
  • 文本分段,根据换行符或其他数据规律分段。
  • 文本根据字段存储:半结构化文本数据存储
  • excel数据提取,推荐安装python包pandas,pip install pandas
    docx格式数据提取,推荐安装python包python-docx,pip install python-docx
  • pdf数据提取,可安装包pdfminer.six,pip install pdfminer.six

至此,经过常规预处理后,文本数据会变的比较干净与规整,可以用于后续nlp研究与应用。(说明,适用于自己任务的操作才是必须的,其他的参照奥卡姆剃刀“如无必要,勿增实体”)。

3、任务相关的文本数据预处理

前面介绍了通常情况下文本预处理可能涉及的注意点,但是要真正的做好数据预处理,应该与具体的任务相结合起来。比如:数据不平衡问题,数据增强问题、数据标注问题等等。

3.1 不平衡问题

  • 不平衡分类问题:实际应用中数据存在长尾分布现象,需要注意处理不平衡分类问题。python包imbalanced-learn提供了几个不错的过采样和欠采样方法,可以试用。
  • 不平衡回归问题,一篇好文链接:https://zhuanlan.zhihu.com/p/369627086

特别的,如需获得泛化性能好的模型,首先需要关注解决不平衡问题。

3.2 数据增强问题

数据太少,那就需要利用规则和算法增强数据,使数据多样化。

3.3 数据标注问题

  • 人工标注,好处:毕竟人多力量大,有多少人工有多少智能。坏处:成本昂贵。
  • 主动学习标注,目的:通过一定的技术手段和方法降低标注成本。具体的,可利用单个机器学习模型或集成学习的思想,提取需要人工审核标注的数据。
  • 标注平台与工具:可开发相应的自动化预标注平台,通过人工审核获得标注后的高质量数据集。

4、一些可用的文本预处理工具

对于文本预处理工作,目前已有一些专门的工具包,功能比较多样,大家可以试用一下,提升自己处理数据的效率和质量。

  • 数据预处理
    https://github.com/dongrixinyu/JioNLP
  • 数据增强
    https://github.com/425776024/nlpcda

5、总结

本文对文本预处理,特别是中文文本预处理做了一个简要的概述,希望于相关的nlper有所帮助。后续,将依次递进分享相应的NLP文章,敬请关注。


你是如何看待“文本预处理”的呢? 欢迎关注留言讨论


此处本来有一张二维码,哈哈哈


特别的,如本文有疏漏,麻烦留言指出,以期校正提升。
如看到文章的小伙伴有感兴趣的nlp主题,欢迎留言交流讨论,共同撰文分享。


原文首发于:实用自然语言处理



http://www.ppmy.cn/news/21105.html

相关文章

TOGAF概述

TOGAF主要分为8个元素:念、法、技、导、行、连、考、能 念--概念阐述 法--架构开发方法 技--32个最佳实践技术 导--4种向导 行--架构内容框架 连--企业连续系列 考--参考成熟架构资产 能--架构工作能力

【C语言练习】逻辑分析题

目录题目一:求名次题目详情:解题思路:题目二:找凶手题目详情:解题思路:题目一:求名次 题目详情: 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果: A…

多线程之Callable接口、ReentrantLock、信号量 Semaphore以及CountDownLatch

目录:一、Callable接口Callable的用法小结二、ReentrantLockReentrantLock 的用法ReentrantLock 和 synchronized 的区别?为什么有了 synchronized 还需要 juc(java.util.concurrent) 下的 lock?三、信号量 Semaphore如何理解信号量&#xff…

gma 地理空间绘图:(1)绘制简单的世界地图-1.地图绘制与细节调整

了解 gma gma 是什么? gma 是一个基于 Python 的地理、气象数据快速处理和数据分析函数包(Geographic and Meteorological Analysis,gma)。gma 网站:地理与气象分析库。 gma 的主要功能有哪些? 气候气象&a…

操作系统(四)--进程的地址空间

目录 一、引言 二、进程的地址空间 ------> 2.1、进程的段 ------> 2.2、查看地址空间 ------------> 2.2.1、静态链接 ------------> 2.2.2、动态链接 ------------> 2.2.3、无名段 ------------> 2.2.4、vdso、vvaar、vsyscall 三、mmap ------&…

第八届蓝桥杯省赛 C++ A/B组 - 分巧克力

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:蓝桥杯题解集合 📝原题地址:后缀表达式 📣专栏定位:为想参加蓝桥杯的小伙伴整理常考算法题解,祝大…

ElasticSearch从入门到出门【上】

文章目录初识elasticsearch了解ESelasticsearch的作用ELK技术栈elasticsearch和lucene为什么不是其他搜索技术?倒排索引正向索引倒排索引正向和倒排ES的一些概念文档和字段索引和映射mysql与elasticsearch安装elasticsearch部署单点es部署kibana安装IK分词器在线安装…

VS搭载Sqlite3用法详解

本篇采用动态库静态调用方式,动态库链接如下https://download.csdn.net/download/u014272404/87406250静态调用方式:1.将Database.dll sqlite3.dll 添加到执行目录中2.在stdafx.h中包含(工程目录下)#include "Include/DataBa…