总结!实用Python文本预处理代码

学习笔记 - 精通Python自然语言处理 - 字符串操作 第一章 字符串操作 1.1 切分 nltk模块nltk.tokenize 1.1.1 将文本切分为语句 sent_tokenize()函数,该函数对PunktSentenceTokenizer类实例化。 import nltk from nltk.tokenize import sent_tokenize text = "Welcome readers. I hope you find it i... 阅读详情

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料了解更多关于Python的知识可以加Q群630390733踊跃发言大家一起来学习讨论吧!

本文将讨论文本预处理的基本步骤,旨在将文本信息从人类语言转换为机器可读格式以便用于后续处理。此外,本文还将进一步讨论文本预处理过程所需要的工具。

当拿到一个文本后,首先从文本正则化(text normalization) 处理开始。常见的文本正则化步骤包括:

  •  将文本中出现的所有字母转换为小写或大写
  •  将文本中的数字转换为单词或删除这些数字
  •  删除文本中出现的标点符号、重音符号以及其他变音符号
  •  删除文本中的空白区域
  •  扩展文本中出现的缩写
  •  删除文本中出现的终止词、稀疏词和特定词
  •  文本规范化(text canonicalization)

下面将详细描述上述文本正则化步骤。

将文本中出现的字母转化为小写

示例1:将字母转化为小写

Python 实现代码:

input_str = ”The 5 biggest countries by population in 2017 are China, India, United States, Indonesia, and Brazil.”  
input_strinput_str = input_str.lower()  
print(input_str) 

输出:

the 5 biggest countries by population in 2017 are china, india, united states, indonesia, and brazil. 

删除文本中出现的数字

如果文本中的数字与文本分析无关的话,那就删除这些数字。通常,正则化表达式可以帮助你实现这一过程。

示例2:删除数字

Python 实现代码:

import re  
input_str = ’Box A contains 3 red and 5 white balls, while Box B contains 4 red and 2 blue balls.’  
reresult = re.sub(r’\d+’, ‘’, input_str)  
print(result) 

输出:

Box A contains red and white balls, while Box B contains red and blue balls. 

删除文本中出现的标点

以下示例代码演示如何删除文本中的标点符号,如 [!”#$%&’()*+,-./:;<=>?@[\]^_`{|}~] 等符号。

示例3:删除标点

Python 实现代码:

import string  
input_str = “This &is [an] example? {of} string. with.? punctuation!!!!” # Sample string  
result = input_str.translate(string.maketrans(“”,””), string.punctuation) 
print(result) 

输出:

This is an example of string with punctuation 

删除文本中出现的空格

可以通过 strip()函数移除文本前后出现的空格。

示例4:删除空格

Python 实现代码:

input_str = “ \t a string example\t “  
input_strinput_str = input_str.strip()  
input_str 

输出:

‘a string example’ 

符号化(Tokenization)

符号化是将给定的文本拆分成每个带标记的小模块的过程,其中单词、数字、标点及其他符号等都可视为是一种标记。在下表中(Tokenization sheet),罗列出用于实现符号化过程的一些常用工具。

删除文本中出现的终止词

终止词(Stop words) 指的是“a”,“a”,“on”,“is”,“all”等语言中最常见的词。这些词语没什么特别或重要意义,通常可以从文本中删除。一般使用 Natural Language Toolkit(NLTK) 来删除这些终止词,这是一套专门用于符号和自然语言处理统计的开源库。

示例7:删除终止词

实现代码:

input_str = “NLTK is a leading platform for building Python programs to work with human language data.”  
stop_words = set(stopwords.words(‘english’))  
from nltk.tokenize import word_tokenize  
tokens = word_tokenize(input_str)  
result = [i for i in tokens if not i in stop_words]  
print (result) 

输出:

[‘NLTK’, ‘leading’, ‘platform’, ‘building’, ‘Python’, ‘programs’, ‘work’, ‘human’, ‘language’, ‘data’, ‘.’] 

此外,scikit-learn 也提供了一个用于处理终止词的工具:

from sklearn.feature_extraction.stop_words import ENGLISH_STOP_WORDS 

同样,spaCy 也有一个类似的处理工具:

from spacy.lang.en.stop_words import STOP_WORDS 

删除文本中出现的稀疏词和特定词

在某些情况下,有必要删除文本中出现的一些稀疏术语或特定词。考虑到任何单词都可以被认为是一组终止词,因此可以通过终止词删除工具来实现这一目标。

词干提取(Stemming)

词干提取是一个将词语简化为词干、词根或词形的过程(如 books-book,looked-look)。当前主流的两种算法是 Porter stemming 算法(删除单词中删除常见的形态和拐点结尾) 和 Lancaster stemming 算法。

示例 8:使用 NLYK 实现词干提取

实现代码:

from nltk.stem import PorterStemmer  
from nltk.tokenize import word_tokenize  
stemmer= PorterStemmer()  
input_str=”There are several types of stemming algorithms.”  
input_str=word_tokenize(input_str) 
for word in input_str:  
    print(stemmer.stem(word)) 

输出:

There are sever type of stem algorithm. 

词形还原(Lemmatization)

词形还原的目的,如词干过程,是将单词的不同形式还原到一个常见的基础形式。与词干提取过程相反,词形还原并不是简单地对单词进行切断或变形,而是通过使用词汇知识库来获得正确的单词形式。

当前常用的词形还原工具库包括: NLTK(WordNet Lemmatizer),spaCy,TextBlob,Pattern,gensim,Stanford CoreNLP,基于内存的浅层解析器(MBSP),Apache OpenNLP,Apache Lucene,文本工程通用架构(GATE),Illinois Lemmatizer 和 DKPro Core。

示例 9:使用 NLYK 实现词形还原

实现代码:

from nltk.stem import WordNetLemmatizer  
from nltk.tokenize import word_tokenize  
lemmatizer=WordNetLemmatizer()  
input_str=”been had done languages cities mice”  
input_str=word_tokenize(input_str)  
for word in input_str:  
    print(lemmatizer.lemmatize(word)) 

输出:

be have do language city mouse 

词性标注(POS)

词性标注旨在基于词语的定义和上下文意义,为给定文本中的每个单词(如名词、动词、形容词和其他单词) 分配词性。当前有许多包含 POS 标记器的工具,包括 NLTK,spaCy,TextBlob,Pattern,Stanford CoreNLP,基于内存的浅层分析器(MBSP),Apache OpenNLP,Apache Lucene,文本工程通用架构(GATE),FreeLing,Illinois Part of Speech Tagger 和 DKPro Core。

示例 10:使用 TextBlob 实现词性标注

实现代码:

input_str=”Parts of speech examples: an article, to write, interesting, easily, and, of”  
from textblob import TextBlob  
result = TextBlob(input_str)  
print(result.tags) 

输出:

[(‘Parts’, u’NNS’), (‘of’, u’IN’), (‘speech’, u’NN’), (‘examples’, u’NNS’), (‘an’, u’DT’), (‘article’, u’NN’), (‘to’, u’TO’), (‘write’, u’VB’), (‘interesting’, u’VBG’), (‘easily’, u’RB’), (‘and’, u’CC’), (‘of’, u’IN’)] 

词语分块(浅解析)

词语分块是一种识别句子中的组成部分(如名词、动词、形容词等),并将它们链接到具有不连续语法意义的高阶单元(如名词组或短语、动词组等) 的自然语言过程。常用的词语分块工具包括:NLTK,TreeTagger chunker,Apache OpenNLP,文本工程通用架构(GATE),FreeLing。

示例 11:使用 NLYK 实现词语分块

第一步需要确定每个单词的词性。

实现代码:

input_str=”A black television and a white stove were bought for the new apartment of John.”  
from textblob import TextBlob  
result = TextBlob(input_str)  
print(result.tags) 

输出:

[(‘A’, u’DT’), (‘black’, u’JJ’), (‘television’, u’NN’), (‘and’, u’CC’), (‘a’, u’DT’), (‘white’, u’JJ’), (‘stove’, u’NN’), (‘were’, u’VBD’), (‘bought’, u’VBN’), (‘for’, u’IN’), (‘the’, u’DT’), (‘new’, u’JJ’), (‘apartment’, u’NN’), (‘of’, u’IN’), (‘John’, u’NNP’)] 

第二部就是进行词语分块

实现代码:

reg_exp = “NP: {<DT>?<JJ>*<NN>}”  
rp = nltk.RegexpParser(reg_exp)  
result = rp.parse(result.tags)  
print(result) 

输出:

(S (NP A/DT black/JJ television/NN) and/CC (NP a/DT white/JJ stove/NN) were/VBD bought/VBN for/IN (NP the/DT new/JJ apartment/NN)  
of/IN John/NNP) 

也可以通过 result.draw() 函数绘制句子树结构图,如下图所示。

命名实体识别(Named Entity Recognition)

命名实体识别(NER) 旨在从文本中找到命名实体,并将它们划分到事先预定义的类别(人员、地点、组织、时间等)。

常见的命名实体识别工具如下表所示,包括:NLTK,spaCy,文本工程通用架构(GATE) -- ANNIE,Apache OpenNLP,Stanford CoreNLP,DKPro核心,MITIE,Watson NLP,TextRazor,FreeLing 等。

示例 12:使用 TextBlob 实现词性标注

实现代码:

from nltk import word_tokenize, pos_tag, ne_chunk  
input_str = “Bill works for Apple so he went to Boston for a conference.”  
print ne_chunk(pos_tag(word_tokenize(input_str))) 

输出:

(S (PERSON Bill/NNP) works/VBZ for/IN Apple/NNP so/IN he/PRP went/VBD to/TO (GPE Boston/NNP) for/IN a/DT conference/NN ./.) 

共指解析 Coreference resolution(回指分辨率 anaphora resolution)

代词和其他引用表达应该与正确的个体联系起来。Coreference resolution 在文本中指的是引用真实世界中的同一个实体。如在句子 “安德鲁说他会买车”中,代词“他”指的是同一个人,即“安德鲁”。常用的 Coreference resolution 工具如下表所示,包括 Stanford CoreNLP,spaCy,Open Calais,Apache OpenNLP 等。

搭配提取(Collocation extraction)

搭配提取过程并不是单独、偶然发生的,它是与单词组合一同发生的过程。该过程的示例包括“打破规则 break the rules”,“空闲时间 free time”,“得出结论 draw a conclusion”,“记住 keep in mind”,“准备好 get ready”等。

示例 13:使用 ICE 实现搭配提取

实现代码:

input=[“he and Chazz duel with all keys on the line.”]  
from ICE import CollocationExtractor  
extractor = CollocationExtractor.with_collocation_pipeline(“T1” , bing_key = “Temp”,pos_check = False)  
print(extractor.get_collocations_of_length(input, length = 3)) 

输出:

[“on the line”] 

关系提取(Relationship extraction)

关系提取过程是指从非结构化的数据源 (如原始文本)获取结构化的文本信息。严格来说,它确定了命名实体(如人、组织、地点的实体) 之间的关系(如配偶、就业等关系)。例如,从“昨天与 Mark 和 Emily 结婚”这句话中,我们可以提取到的信息是 Mark 是 Emily 的丈夫。

总结

本文讨论文本预处理及其主要步骤,包括正则化、符号化、词干化、词形还原、词语分块、词性标注、命名实体识别、共指解析、搭配提取和关系提取。还通过一些表格罗列出常见的文本预处理工具及所对应的示例。在完成这些预处理工作后,得到的结果可以用于更复杂的 NLP 任务,如机器翻译、自然语言生成等任务。

Python进行文本预处理(文本分词,过滤停用词,词频统计,特征选择,文本表示) 系统:win7 32位 分词软件:PyNLPIR 集成开发环境(IDE):Pycharm 功能:实现多级文本预处理全过程,包括文本分词,过滤停用词,词频统计,特征选择,文本表示,并将结果导出为WEKA能够处理的.arff格式。 直接上代码: #!/usr/bin/env python # -*- coding: utf-8 -*- """ 功能:PyNLPIR文 阅读详情

相关推荐

Python 使用 prettytable 库打印表格美化输出功能

主要介绍了Python 使用 prettytable 库打印表格美化输出功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

2021-05-10

《数字媒体技术基础》第二次作业 摘要:   本次实验采用的是Bag of words模型来计算句子对的相似度。   使用python2进行编程,程序分为两个部分:GUI和相似度计算。 GUI部分的实现思路是:用文字提示用户需要输入两个句子在两个输入框中,读取用户在两输入框中输入的句子对,当用户点击“开始计算相似度”button时,调用相似度计算函数。 相似度计算函数的实现思路是:先将句子分解成不带标点符号的短句,然后调用NLTK库中的word_tokenize函数将输入的句子对中的各个单词提取出来,然后构

m0_50488845的博客 1274

arcgis插件 批量出图 按地块批量出图工具(动态文本、动态节点坐标表)

arcgis插件 批量出图 按地块批量出图工具。

坐听风雨 7060

虚心求教!初次接触Python文本预处理

当拿到一个文本后,首先从文本正则化(text normalization)处理开始。常见的文本正则化步骤包括: 将文本中出现的所有字母转换为小写或大写 将文本中的数字转换为单词或删除这些数字 删除文本中出现的标点符号、重音符号以及其他变音符号 删除文本中的空白区域 扩展文本中出现的缩写 删除文本中出现的终止词、稀疏词和特定词 文本规范化(text canonicalization) 下面将详细描述上述文本正则化步骤。 将文本中出...

码农-Vax天道的时间宝藏 1792

【生成C01/C10材料常数excel表】

计算橡胶件的邵尔硬度和C01/C10材料常数

weixin_46153372的博客 1932

资源描述框架RDF及Turtle

文章目录1. RDF1.1 简介1.2 格式1.3 RDF的要求2. Turtle2.1 语法2.1.1 简单三元组2.1.2 Turtle中的命名空间2.1.3 Base URI2.1.4 谓语列表2.1.5 宾语列表2.1.6 空白节点(bNodes)2.1.7 数据类型2.1.8 Class membership2.1.9 空URI2.1.10 集合 1. RDF 1.1 简介 RDF(Resource Description Framework)语义网的标准数据模型,是一个用于描述 Web 上的资

doublewhite233的博客 2491

“尽揽自然语言处理魅力:使用NLTK探索NLP的强大

😎🥳😎🤠🤖🙈💭🍳🍱随着数据的爆炸式增长,从海量数据中获取有用的信息就成为了一项重要的挑战。自然语言处理(NLP)是一种用于分析、理解和生成自然语言文本的强大技术,使得从大量的文本数据中提取有用信息成为可能。而NLTK则是实现NLP的强大工具之一。本文将介绍NLTK的基本概念、工具和数据集,并展示如何使用NLTK进行文本预处理、分词、标记、词干提取和分析,最终实现NLP的一些基本任务,如情感分析、文本分类和命名实体识别等。

weixin_62650212的博客 759

process插件_利用SPSS 插件MLmed检验多水平中介的调节模型

本文介绍一个SPSS插件,用于检验多水平中介的调节,及该方法与Mplus的比较。1 Mlmed 简介及安装Mlmed 简介: Mlmed 由Rockwood 2017年开发,基于SPSS插件计算Multilevel moderated mediation. 可以提供multilevel mediation Monte Carlo 置信区间比如(模拟20000次),以及多水平调节的...

weixin_39976081的博客 5765

使用nltk对word文档分词

可以使用nltk中的word_tokenize()函数来对word文档进行分词。首先,需要安装nltk库,然后导入word_tokenize()函数。接着,使用python的读取文件方法读取word文档中的文本,将其传入word_tokenize()函数中进行分词。 示例代码如下: import nltk from nltk.tokenize import word_tokenize file ...

weixin_42603332的博客 559

闲人闲谈PS之一项目库存跨公司业务STO解决方案--SAP闲人的开篇

写这篇文章之前,简单说一下发这篇文章的动机。也算是在SAP这一行干了快10多年,在对一个模块了解越来越深入,越发觉自己的SAP知识浅薄。总的来说,和多数顾问一样,对于**标准功能**的应用业务场景理解还是存在或多或少的知识盲区。 因为一个偶然,看到SAP团子君的文章,分享了很多干货文章。这也是自己一直想做的时候,不管水平高低与否,分享本身就意味着提升。好了废话不多说,先在优快云上发一篇吧,困惑自己将近10年的问题的解决方案。 业务场景:在项目型企业中,通常会有这样的业务,母公司和客...

SAP闲人的博客 9266

KNN算法实现数据分类及matlab完整代码

其基本思想是:对于一个未知样本,找出与该样本距离最近的k个已知样本,然后根据这k个样本的类别来确定该未知样本的类别。在本文中,我们采用iris数据集,该数据集包含四个属性:花萼长度、花萼宽度、花瓣长度、花瓣宽度,以及三个类别:山鸢尾、变色鸢尾、维吉尼亚鸢尾。KNN算法具有简单、直观、易于理解等特点,适用于多分类和二分类问题,但其计算复杂度随着样本数量的增加而增加,也容易受异常值影响。在KNN算法中,常用的距离函数有欧氏距离、曼哈顿距离等。(2)选择距离最近的k个样本,并根据它们的类别来确定未知样本的类别。

qq_39605374的博客 1515

python文本预处理函数_总结!实用Python文本预处理代码

本文将讨论文本预处理的基本步骤,旨在将文本信息从人类语言转换为机器可读格式以便用于后续处理。此外,本文还将进一步讨论文本预处理过程所需要的工具。当拿到一个文本后,首先从文本正则化(text normalization) 处理开始。常见的文本正则化步骤包括:将文本中出现的所有字母转换为小写或大写将文本中的数字转换为单词或删除这些数字删除文本中出现的标点符号、重音符号以及其他变音符号删除文本中的空白区...

weixin_30726605的博客 501

36、基于启发式的双向RRT*路径规划算法解析

本文介绍了一种基于启发式的双向RRT*路径规划算法(LGHB-RRT*),通过地图预处理、通道区域提取和通道识别点定义,结合随机树的引导生长与可变密度采样机制,显著提升了在复杂通道环境下的搜索效率与成功率。算法采用双向扩展结构,并引入启发式生长策略引导树向通道关键点发展,同时利用路径优化简化最终路径。仿真结果表明,该算法在多种复杂地图中均能高效找到最优路径,优于传统RRT*和Bi-RRT*算法,具备良好的适应性与应用前景。

rgv234567的博客 116

Python文本预处理,试试BAT大佬总结的实用代码!

点上方蓝色“菜鸟学Python”,选“星标”公众号重磅干货,第一时间送到作者:DataMonster, 译者:Linstancy, 出品:AI科技大本营(ID:rgznai100)本...

cainiao_python的博客 315

Vulkan入门系列3 - 绘制三角形代码解析(全)

【代码】Vulkan入门系列3 - 绘制三角形完整代码(带详细注释)

GPU全栈博主 1033

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python文本预处理速度慢_总结!实用Python文本预处理代码

原标题:总结!实用Python文本预处理代码 作者 | Data Monster,译者 | Linstancy出品 | AI科技大本营(ID:rgznai100)本文将讨论文本预处理的基本步骤,旨在将文本信息从人类语言转换为机器可读格式以便用于后续处理。此外,本文还将进一步讨论文本预处理过程所需要的工具。当拿到一个文本后,首先从文本正则化 (text normalization)处理开始。常见的文...

weixin_30960995的博客 382

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python文本预处理函数_Python文本预处理,试试BAT大佬总结的实用代码!

原标题:Python文本预处理,试试BAT大佬总结的实用代码! 作者:Data Monster, 译者:Linstancy, 出品:AI科技大本营(ID:rgznai100)本文将讨论文本预处理的基本步骤,旨在将文本信息从人类语言转换为机器可读格式以便用于后续处理。此外,本文还将进一步讨论文本预处理过程所需要的工具。当拿到一个文本后,首先从文本正则化 (text normalization)处理开...

weixin_39703551的博客 146

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

python 常用代码总结_Python文本预处理,试试BAT大佬总结的实用代码!

原标题:Python文本预处理,试试BAT大佬总结的实用代码! 作者:Data Monster, 译者:Linstancy, 出品:AI科技大本营(ID:rgznai100)本文将讨论文本预处理的基本步骤,旨在将文本信息从人类语言转换为机器可读格式以便用于后续处理。此外,本文还将进一步讨论文本预处理过程所需要的工具。当拿到一个文本后,首先从文本正则化 (text normalization)处理开...

weixin_39631007的博客 127

python语音识别预处理_11种NLP 文本预处理 Python 代码,简洁实用!

重磅干货,第一时间送达本文将讨论自然语言处理中文本预处理的基本步骤。要将文本从人类语言转换成用于进一步处理的机器可读格式。我们还将讨论文本预处理工具。在获得文本之后,我们从文本规范化开始。文本规范化包括:将所有字母转换为小写或大写将数字转换为单词或删除数字删除标点、重音符号和其他音调符号删除空格扩展缩写词删除停止词、稀疏词和特定词文本规范化我们将在下面详细描述文本规范化步骤。1. 将字母转换为小写...

weixin_39769740的博客 383

Python 文本预处理指南

文本预处理是指在进行自然语言处理(NLP)任务之前,对原始文本数据进行清洗、转换和标准化的过程。由于现实中的文本数据通常存在噪音、多样性和复杂性,直接使用原始文本数据进行分析和建模可能会导致结果不准确或不稳定。因此,文本预处理是NLP中非常重要的一步,它有助于提高文本数据的质量,减少数据中的干扰因素,并为后续的文本分析和挖掘任务提供更好的基础。清洗文本数据,去除不必要的字符、标点符号和特殊符号,保留有用的信息。分词,将文本数据拆分成独立的词或标记,方便计算机理解和处理。

繁依Fanyi的博客 3658
上一篇: Python学习课程:逻辑回归算法
下一篇: 太厉害了,竟然用 Python 给英语老师开发了个英语作文批改的神器
pythonputao
博客等级 码龄6年 60粉丝 111原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值