一行Python代码中自动化文本处理

磐创AI推荐搜索

AI学习路线
TensorFlow2.0
资源

  磐创AI分享  

作者 | Satyam Kumar

编译 | VK
来源 | Towards Data Science

自然语言处理(NLP)是人工智能的一个子领域,涉及计算机与自然语言之间的交互。它围绕着如何训练一个能够理解和实现自然语言任务使用的数据科学模型展开。

典型的NLP项目遵循管道的各个方面来训练模型。管道中的各个步骤包括文本清理、标记化、词根化、编码为数字向量等,然后是模型训练。

NLP任务的数据集是文本数据,主要来自互联网。大多数情况下,用于NLP建模的文本数据是脏的,需要在数据处理的早期阶段进行清理。数据科学家把大部分时间花在数据预处理上,包括清理文本数据。

在本文中,我们将讨论一个有趣的CleanText库,它简化了清理文本数据的过程,并加快了数据预处理流程。

什么是CleanText

CleanText是一个开放源码的Python库,它可以清除从web或社交媒体中爬取的文本数据。CleanText使开发人员能够创建规范化的文本表示。CleanText使用ftfy、unidecode和各种其他硬编码规则(包括RegEx)将损坏或脏的输入文本转换为干净文本,可以进一步处理这些文本来训练NLP模型。

安装:

可以使用以下命令从PyPl安装CleanText库:

pip install clean-text

安装后,可以使用以下方法导入库:

from cleantext import clean

用法:

CleanText库只提供了一个函数“Clean”,它接受各种参数,这些参数可以进行调优以执行文本清理。clean可执行11种类型的清理,包括:

Unicode:

s1 = 'Zürich'
clean(s1, fix_unicode=True)

# Output: zurich

ASCII:

它将文本转换为最接近的ASCII表示形式。

s2 = 'ko\u017eu\u0161\u010dek'clean(s2, to_ascii=True)

# Output: kozuscek

Lower:

将文本数据转换为小写。

s3 = 'My Name is SATYAM'
clean(s3, lower=True)

# Output: my name is satyam

替换URL/电子邮件/电话号码:

用特殊标记替换文本数据中的所有URL、电子邮件或电话号码。

s4 = 'https://www.Google.com and https://www.Bing.com are popular seach engines. You can mail me at satkr7@gmail.com. If not replied call me at 9876543210'

clean(s4, no_urls=True, replace_with_url='URL',no_emails=True, replace_with_email='EMAIL'no_phone_numbers=True, replace_with_email='PHONE')

# Output: url and url are popular search engines. You can mail me at EMAIL. If not replied call me at PHONE

替换货币:

用特殊标记替换文本数据中的所有货币。

s5 = 'I want ₹ 40'
clean(s5, no_currency_symbols = True)
clean(s5, no_currency_symbols = True, replace_with_currency_symbol='Rupees')

# Output: i want <cur> 40
# Output: i want rupees 40

删除号码:

用特殊标记替换或删除所有数字。

s7 = 'abc123def456ghi789zero0'

clean(s7, no_digits = True)clean(s7, no_digits = True, replace_with_digit='')

# Output: abc000def000ghi000zero0# Output: abcdefghizero

替换标点符号:

删除或用特殊标记替换文本数据中的所有标点。

s6 = '40,000 is greater than 30,000.'
clean(s6, no_punct = True)

# Output: 40000 is greater than 30000

组合所有参数:

我们已经分别讨论了上述所有参数。现在,让我们在Clean函数中组合所有这些函数,为示例文本调用它,并观察干净的文本结果。

from cleantext import clean

text = '''Zürich has a famous website https://www.zuerich.com/ WHICH ACCEPTS 40,000 € and adding a random string, :abc123def456ghi789zero0 for this demo. Also remove punctions ,. my phone number is 9876543210 and mail me at satkr7@gmail.com.'      '''

clean_text = clean(s8,       fix_unicode=True,       to_ascii=True,       lower=True,       no_line_breaks=True,      no_urls=True,       no_numbers=True,       no_digits=True,       no_currency_symbols=True,       no_punct=True,       replace_with_punct='',       replace_with_url='<URL>',       replace_with_number='<NUMBER>',       replace_with_digit='',       replace_with_currency_symbol='<CUR>',      lang='en')

print(clean_text)

# Output: zurich has a famous website <url> which accepts <number> <cur> and adding a random string abcdefghizero for this demo also remove punctions my phone number is <number> and mail me at satkrgmailcom

因此,只需编写一行Python代码,就可以清除脏的文本数据并进行进一步的预处理。

结论

CleanText是一个高效的库,它可以处理或清除爬取的脏数据,只需一行代码就可以获得标准化的干净文本输出。开发人员只需要根据自己的需要调整参数。它简化了数据科学家的工作,因为现在他/她不必写很多行复杂的正则表达式代码来清理文本。

CleanText不仅适用于英语输入文本,而且可以处理德语,只需设置lang='de'。

CleanText库只包含一些文本清理参数,还有改进的余地。尽管如此,开发人员仍然可以将其用于一些清理任务,然后继续手动编码以完成剩余的任务。

阅读下面提到的文章了解AutoNLP-一个自动NLP库。

https://medium.com/swlh/autonlp-sentiment-analysis-in-5-lines-of-python-code-7b2cd2c1e8ab

参考文献

[1] Clean-Text Repository: https://github.com/jfilter/clean-text

谢谢阅读!

扫码看好书,满100减50超值优惠活动等你

✄------------------------------------------------

看到这里,说明你喜欢这篇文章,请点击「在看」或顺手「转发」「点赞」。

(0)

相关推荐

  • 文本分析:不均衡分布数据的多分类预测

    对于中文,nltk能做哪些事情 使用sklearn做自然语言处理-1 使用sklearn做自然语言处理-2 机器学习|八大步骤解决90%的NLP问题 后面还会继续分享的.互联网上的绝大多数文本分类文章 ...

  • 自动造数据,Faker 了解一下?

    来源:Python 技术「ID: pythonall」 在系统开发过程中,不管作为开发还是测试,我们都要造一些假数据到系统中,来模拟真实环境的运行.比如要创建一批用户,输入一些车牌,或者是电话号码,或 ...

  • 一行Python代码

    Life is short, just use Python. 自从08年接触Python,就有爱不释手的感觉,逐渐地,有些不忍地疏远了Perl 和Shell编程,因为python 的优雅么? 不全是 ...

  • 一行 Python 代码实现并行,骚技能!

    当我用Python写第一行代码的那一天,我着迷于简单性,流行性及其著名的单行代码. 1.交换两个变量 # a = 4 b = 5a,b = b,a# print(a,b) >> 5,4 让 ...

  • 神操作!一行Python代码搞定一款游戏?厉害了程序员!

    Python大本营 昨天 一行代码能干啥? 这一款的迷宫游戏厉害了 迷宫游戏,不知道大家有没有玩过,以前非常风靡,各种大小的迷宫设计,尤其是Web版的迷宫早些年的时候非常流行,但是Python一行代码 ...

  • 厉害!一行 Python 代码实现并行

    转自:caspar segmentfault.com/a/1190000000414339 Python 在程序并行化方面多少有些声名狼藉.撇开技术上的问题,例如线程的实现和 GIL,我觉得错误的教学 ...

  • 你常看到 Python 代码中的 yield 到底是什么鬼?

    之前给大家说过,久久会解锁一篇 VIP 中的文章给大伙乐呵乐呵,其实是被吐槽没有试看文. 好吧,今天就是这么出其不意攻其不备,就随便挑选一篇出来给你瞧瞧货色: yield 到底是干屌的? 首先我们来看 ...

  • 不需要一行 Python 代码,也可以自动获取数据

    今天给大伙介绍一下 RPA,有时候你可能会使用代码去编写自动化相关的操作,不过对于一些在 GUI 上的的重复操作,实际上可以直接使用机器人流程自动化,监视使用者在软件 GUI 里面的工作,然后直接在这 ...

  • 你常常看到 Python 代码中的 assert 是个啥?

    之前咱们说过单元测试相关的用法,今天给你讲的这个也是经常会在代码中使用到的,倘若你看过一些 Python 的项目源代码,想必你应该会看到它的身影 -- assert. 什么是 assert 呢? 其实 ...

  • 知识图谱——用Python代码从文本中挖掘信息的强大数据科学技术

    全文共6382字,预计学习时长20分钟 图源:Unsplash摄影:Clem Onojeghuo 概览 知识图谱是数据科学中最吸引人的概念之一 学习如何使用Wikipedia页面中的文本构建知识图谱 ...

  • python读取pdf中的文本

    python处理pdf也是常用的技术了,对于python3来说,pdfminer3k是一个非常好的工具. pip install pdfminer3k 首先,为了满足大部分人的需求,我先给一个通用一点 ...