在做推荐系统或者纯自然语言处理的过程中,都会接触到大量的非结构化数据。这些数据格式不统一、质量层次不齐,因此,在文本数据处理过程中一直都是一项非常耗费精力的工作。

除了要对文本数据进行预处理之外,文本数据的表示、向量分析、数据可视化都是一项非常麻烦的工作。

在此之前,首先需要利用pandas等Python库去读取文本数据,然后加上复杂的中间处理逻辑,才能完成一整套文本数据的处理流程。

而今天要介绍的这个Python库可以一站式解决文本数据处理中遇到的各种问题,真正做到了从zerohero

Texthero

Texthero库的名称是由texthero组成,从它的名称就可以很直观的理解它的重点功能。

Texthero可以在pandas的基础之上进行使用,它是一种高度集成的Python库。因此,在使用过程中,很少会涉及到编程语言层面的障碍。

作为使用者,只需给定文本数据,使用Texthero,可以预处理文本数据,将其映射到向量中,并且可视化所获得的向量空间仅需几行。

Texthero具有如下功能:

  • 文本数据预处理
  • 自然语言处理
  • 文本表示
  • 向量空间分析
  • 文本数据可视化

文本数据预处理

在处理文本数据的过程中,会遇到各种各样的脏数据,例如,空格、数字、符号,通过Texthero,只需要1行代码即可把这些脏数据进行清理。

举个例子,有一行文本数据,This sèntencé (123 /) needs to [OK!] be cleaned! ,下面就来看一下清理过程。

>>> import texthero as hero>>> import pandas as pd>>> text = "This sèntencé    (123 /) needs to [OK!] be cleaned!   ">>> s = pd.Series(text)

删除数字,

>>> s = hero.remove_digits(s)>>> s0    This sèntencé    (  /) needs to [OK!] be cleaned!

删除括号,

>>> s = hero.remove_brackets(s)>>> s0    This sèntencé    needs to  be cleaned!

删除附加符号,例如,变音符号,

>>> s = hero.remove_diacritics(s)>>> s0    This sentence    needs to  be cleaned!

删除标点符号,

>>> s = hero.remove_punctuation(s)>>> s0    This sentence    needs to  be cleaned

删除额外的空格,

>>> s = hero.remove_whitespace(s)>>> s0    This sentence needs to be cleaned

现在来对比一下,清理前和清理后的数据区别,

>>> text = "This sèntencé    (123 /) needs to [OK!] be cleaned!   ">>> text = "This sentence needs to be cleaned"

是不是发现数据干净多了?

也许,有同学会提出疑问“这么多行命令,太麻烦了吧?

在Texthero中,也可以通过1行命令来完成数据预处理,

import texthero as herodf = pd.read_csv(    "")df['tfidf'] = (    df['text']    .pipe(hero.clean))

也就是说,调用一下clean函数就可以完成清理。

我阅读了一下Texthero源码,发现,clean函数包含了如下功能:

  • 填充无效值
  • 把文本转化为小写
  • 删除数字
  • 移除标点符号
  • 删除所有变音符号和重音符号
  • 删除中间词汇
  • 删除空格

上述功能只需要1行代码就可以完成。

我认为数据预处理这项功能非常有价值,不仅可以在自然语言、推荐系统领域能够用到。涉及到处理离线数据的很多场景,都会涉及脏数据处理的问题,往往我们需要利用规则或者正则表达式的方式去处理,而利用Texthero很简单的就可以处理这些脏数据。

自然语言处理

在自然语言处理方面,它支持如下功能:

  • 关键短语提取
  • 关键字提取
  • 命名实体识别

文本表示

Texthero在文本表示方面支持如下功能:

  • TF-IDF
  • 词频
  • 词嵌入

向量空间分析

Texthero在向量空间分析方面支持如下功能:

  • 聚类
  • 主题建模

另外,Texthero还支持文本数据可视化。

下面,就来以1个例子,来看一下Texthero的用法。

import texthero as heroimport pandas as pd

df = pd.read_csv("https://github.com/jbesomi/texthero/raw/master/dataset/bbcsport.csv")

df['tfidf'] = (    df['text']    .pipe(hero.clean)    .pipe(hero.tfidf))

df['kmeans_labels'] = (    df['tfidf']    .pipe(hero.kmeans, n_clusters=5)    .astype(str))

df['pca'] = df['tfidf'].pipe(hero.pca)

hero.scatterplot(df, 'pca', color='kmeans_labels', title="K-means BBC Sport news")

在这个示例中,就分别用到Texthero如下功能:

  • 数据预处理
  • TF-IDF
  • k-means聚类
  • 数据可视化

下面看一下效果,

如果是手动实现数据预处理、数据可视化、TF-IDF、聚类,那么代码量要比这样多上很多倍。


推荐阅读

AI开发效率倍增!让JupyterLab成为无所不能的开发神器

爬取10000+招聘网站数据,告诉你算法工程师应该选择哪个方向!

数据科学神器 | 一款极大提升数据分析效率的VS Code插件!

个人微信

欢迎各位一起讨论、一起学习,共同促进,感兴趣的可以加我个人微信。

python df共有几行_从zero到hero,一款Python自然语言处理效率利器!相关推荐

  1. python write 写多行_如何用 Python 执行单行命令

    一般来说,面对日常处理的一些小任务,直接用 sed,grep 之类的就可以搞定,更复杂一点的就会考虑 awk 或者用一些现成的轮子,要是 awk 搞不定我就只好用 Python 了.但有些时候,我仅仅 ...

  2. python 数组合并排重_并排深度学习:Julia vs Python

    python 数组合并排重 Julia could possibly be the biggest threat to Python. For a variety of applications, J ...

  3. python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?

    对于程序员的语言千千万JAVA\C\C++\PHP\Python不同的程序员使用着不同的语言,做着功能相似需求却不同的产品. 但是最近Python在人工智能的推动下突然出现在人们的面前,其实和Java ...

  4. python爬虫挖掘平台搭建_一篇非常棒的安装Python及爬虫入门博文!

    原标题:一篇非常棒的安装Python及爬虫入门博文! 一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) 第一部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据 ...

  5. python手机端编程环境_移动端自动化测试解决方案(Appium + Python) - (1) 环境搭建...

    最近对iOS自动化测试做了一番探究,希望通过自动化测试更好的去提高公司项目的测试效率 .在网上找了很多的文章和相关资料,都因为时间比较久导致无法实现基本环境的搭建,我在这儿分享给大家分享我的实现过程. ...

  6. python中digits什么意思_在Caffe中使用 DIGITS自定义Python层

    Caffe 使得我们有了使用Python自定义层的能力,而不是通常的C++/CUDA.这是一个非常有用的特性,但它的文档记录不足,难以正确实现本演练将向您展示如何使用DIGHT来学习实现Python层 ...

  7. 编程入门python java和c语言_学习编程适不适合从Python入门?哪种语言更适合入门?...

    本文对比了C语言和Python语言,分析它们作为编程入门语言各自的利弊,并给出了我推荐的编程学习道路. 我本身已经入门了Python脚本语言,在进阶C语言和JAVA语言后,Python重学就轻松很多, ...

  8. python全栈测试开发_用于全栈自动化测试的最佳Python工具

    我知道大多数测试人员会说Java是他们创建自动化测试的首选语言. 但是我最喜欢的是Python.为什么?为什么是Python ? Al Sweigart,<自动化那些无聊的东西>的作者,P ...

  9. python处理adb截屏_《自拍教程38》Python adb一键截屏

    做Android手机系统或App测试的过程中, 如果碰到了bug,开发一般会需要测试人员提供当时的bug截图, 如何用Python 批处理脚本, 快速实现截图呢? 准备阶段 adb shell scr ...

最新文章

  1. 老李分享:Mac快捷键
  2. bzoj 1901: Zju2112 Dynamic Rankings
  3. java 爬虫 保存cookies_写爬虫,免不了要研究JavaScript设置cookies的问题
  4. nginx 目录讲解
  5. Linux下安装、查看、删除软件包
  6. 扯淡!C语言怎么可能被淘汰呢?
  7. php输入地址查询,PHP查询用户IP所在地址
  8. 【CodeForces - 1020C】Elections (枚举投票数,贪心)
  9. python的回收机制_Python的垃圾回收机制深入分析
  10. 拓端tecdat:R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性
  11. jeesite图片上传并显示
  12. 微信小程序漏洞:可下载任意微信小游戏源代码(附赠源码)
  13. 订阅号助手android,微信订阅号助手app
  14. 计算机公式固定数值符号,【2人回答】Excel如何锁定,如何Excel某计算公式中锁定其中一个数值?-3D溜溜网...
  15. C# AHP层次分析法计算特征向量(和法、根法、幂法)
  16. java弹窗显示错误代码_打开电脑一直弹出“当前页面的脚本发生错误。代码0”...
  17. 2019.07.一年级暑假——自动随机生成100以内加减法算术题的python实现
  18. 2018.3.输入1个长度不大于100的字符串(由字母和空格组成),输出串中包含的单词个数。如不存在单词则输出0.
  19. QuartusII常用操作整理
  20. 【项目实战19】k8s(5)—service服务(IPVS均衡负载)

热门文章

  1. AcWing1069.凸多边形的划分(区间DP)题解
  2. 使用python的笔记
  3. ##CSP 201803-2 碰撞的小球(C语言)100分
  4. R语言中,保留含有特定字符的元素
  5. ASimpleCache使用感受
  6. LeetCode 14. 最长公共前缀 (单指针水平扫描)
  7. leetcode933.NumberofRecentCalls
  8. Java面向对象的程序设计
  9. 算法不会,尚能饭否之折半查找(Binary search)
  10. 算法应用-斐波那契数列