【自然语言处理系列】掌握NLP基础:去停用词、词性标注与命名实体识别实战教程

 摘要:本系列教程专注于自然语言处理(NLP)中的基础元素,包括去停用词、词性标注以及命名实体识别。这些步骤是文本预处理和分析不可或缺的组成部分。我们将通过具体的实例和技术演示,讲解如何使用Python及其相关库(如NLTK)进行有效的文本数据处理。从去除无关词汇到识别关键实体,提供详细的操作指导和实际应用案例,帮助读者提升在文本挖掘和数据分析领域的技能。

目录

一、查看停用词表

二、过滤停用词

三、词性标注

 四、基于NLTK的正则表达式分块与可视化

五、命名实体识别

六、数据清洗实例


停用词(Stop words)是指在文本预处理中被移除的常见单词,因为它们对于文本的分析和处理通常没有实际意义或贡献。这些词往往是语境中的功能性词汇,如介词(例如“在”,“对于”)、冠词(“一个”,“这个”)和连词(“和”,“但是”)。停用词的去除有助于减少数据的维度,从而提升文本挖掘算法的效率和准确性,尤其是在进行词频统计、关键词提取或构建词袋模型时。不同语言有不同的停用词列表,且根据应用场景的不同,停用词列表的内容也会有所调整。

一、查看停用词表

NLTK提供的停用词表涵盖了多种语言,可以用来移除不同语言文本中的停用词。

二、过滤停用词

首先,通过将单词转换为小写来创建列表 test_words,确保单词的大小写一致性。接着,将 test_words 转换为集合 test_words_set,以去除重复元素。然后,使用列表生成式从 test_words_set 中过滤掉英语停用词,生成新列表 filtered。最后,通过计算 test_words_set 和英语停用词集合的交集,确认哪些停用词被从 test_words_set 中移除,以优化文本分析结果。

 

三、词性标注

词性标注是自然语言处理中的一个重要步骤,它涉及将单词分配到相应的词类,如名词、动词、形容词等。下表总结了常见的词性标注符号(POS Tag)及其对应的指代,并对tokens中包含的词使用nltk中的pos_tag函数进行了词性标注。

 四、基于NLTK的正则表达式分块与可视化

使用NLTK库中的RegexpParser模块根据指定的语法规则对句子进行分块。在这个例子中,"the" (DT) - 限定词、"little" (JJ) - 形容词、"yellow" (JJ) - 形容词、"dog" (NN) - 名词、"died" (VBD) - 动词,过去式。语法规则表示名词短语(NP)可以由一个可选的限定词(DT)、零个或多个形容词(JJ)和一个名词(NN)组成。通过这个规则,代码将句子分成了名词短语和其他部分。最后,代码调用matplotlib库将分块结果可视化,以便更好地理解和分析句子的结构。

五、命名实体识别

在自然语言处理(NLP)的过程中,首先使用word_tokenize函数将句子分解成基本的语言单位,即单词列表。随后,pos_tag函数对这些单独的单词进行词性标注,为每个单词分配一个对应的词性缩写,从而形成单词及其词性的元组列表。这些准备工作完成后,ne_chunk函数进一步分析这个已标注的单词列表,专门识别并标记出文本中的命名实体,如人名、地点、组织名称等。

六、数据清洗实例

本部分进行了一个文本数据清洗的实例分析,对原始文本数据进行了彻底的数据清洗,以去除噪声并突出显示关键信息。首先是通过正则表达式去除HTML标签、特殊符号(如推特句柄和话题标签)以及货币符号。接下来,移除了文本中的超链接和一些常见的英文缩写形式。此外,还去除了多余的空格,并且删除了长度为1或2的单词,这通常包括了一些不太具有分析价值的词。进一步使用了NLTK库来实现自动分词,并将分词后的结果与英语停用词列表进行对比,从而剔除了诸如“is”、“and”和“the”这样的常见词汇。这些词汇虽然在文本中频繁出现,但对于理解文本的主题和结构通常帮助不大。最终,经过这些细致的清洗步骤,得到了一个清晰、整洁的文本数据集,这将为后续的分析工作提供坚实的基础。

 

import re
from nltk.corpus import stopwords
# 输入数据
s = '    RT @Amila #Test\nTom\'s newly listed Co  & Mary\'s unlisted     Group to supply tech for nlTK.\nh $TSLA $AAPL https:// t.co/x34afsfQsh'#指定停用词
cache_english_stopwords = stopwords.words('english')def text_clean(text):print('原始数据:', text, '\n')# 去掉HTML标签(e.g. &)text_no_special_entities = re.sub(r'\&\w*;|#\w*|@\w*', '', text)print('去掉特殊标签后的:', text_no_special_entities, '\n')# 去掉一些价值符号text_no_tickers = re.sub(r'\$\w*', '', text_no_special_entities) print('去掉价值符号后的:', text_no_tickers, '\n')# 去掉超链接text_no_hyperlinks = re.sub(r'https?:\/\/.*\/\w*', '', text_no_tickers)print('去掉超链接后的:', text_no_hyperlinks, '\n')# 去掉一些专门名词缩写,简单来说就是字母比较少的词text_no_small_words = re.sub(r'\b\w{1,2}\b', '', text_no_hyperlinks) print('去掉专门名词缩写后:', text_no_small_words, '\n')# 去掉多余的空格text_no_whitespace = re.sub(r'\s\s+', ' ', text_no_small_words)text_no_whitespace = text_no_whitespace.lstrip(' ') print('去掉空格后的:', text_no_whitespace, '\n')# 分词tokens = word_tokenize(text_no_whitespace)print('分词结果:', tokens, '\n')    # 去停用词list_no_stopwords = [i for i in tokens if i not in cache_english_stopwords]print('去停用词后结果:', list_no_stopwords, '\n')# 过滤后结果text_filtered =' '.join(list_no_stopwords) # ''.join() would join without spaces between words.print('过滤后:', text_filtered)text_clean(s)

结果如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/34940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全之Windows提权(上篇)(高级进阶)

目录 一,什么是提权? 二,提权的前提 三,如何提权? 1,第一步连接服务器 2,提升权限至iuser​编辑 3,利用补丁漏洞提权至最高级 四,总结 一,什么是提权&am…

大数据集群数据传输

简单的服务器间的通信示例 netcat,简写为 nc,是 unix 系统下一个强大的命令行网络通信工具,用于在两台主机之间建立 TCP 或者 UDP 连接,并提供丰富的命令进行数据通信。nc 在网络参考模型属于应用层。使用 nc 可以做很多事情&…

docker-compose 之 达梦数据库(dm8-v202406版)

1、达梦官方没有提供镜像直接 pull 的方式,提供的是镜像的 tar 包,所以需要先去官网下载tar包。 2、然后使用如下 docker load 命令导入镜像到服务上: docker load -i dm8_20240422_x86_rh6_64_rq_std_8.1.3.100_pack2.tar导入完成后&#…

重磅丨上海容大推出“容聆”智能拾音工牌,赋能线下门店运营数字化

近日,继豚音营业厅智能质检终端之后,上海容大数字技术有限公司(简称“上海容大”)在线下面对面沟通场景下语音数据采集与智能分析领域取得了新突破,重磅推出AI智能语音工牌产品——“容聆”。 据悉,“容聆”…

mybatis x插件的使用教程(详细)

MyBatisX 的主要功能 代码生成: 自动生成 MyBatis 的 Mapper、XML 配置文件和实体类,大大减少手工编写代码的工作量。 智能代码补全: 提供 SQL 语句和 MyBatis 配置的智能代码补全功能,使开发者能够更快地编写代码。 代码导航&…

铀的危害和应用,以及铀的分离提纯

铀是一种锕系放射性元素,对人体存在一定的危害,如辐射损伤、呼吸系统损伤、神经系统损伤、免疫系统损伤等。 1、辐射损伤:铀的放射性会对人体产生辐射损伤,长期接触会增加患癌症的风险。此外,还可能对人体正常细胞产生…

【网络安全的神秘世界】解决dvwa靶场报错:Illegal mix of collations for operation ‘UNION‘

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 🚩问题描述 当尝试执行如下 SQL 语句时: 1 union select schema_name,1 from information_schema.s…

如何挑选护眼灯?一分钟带你了解挑选护眼灯的六大准则!

小时候,对正确用眼知识一无所知,也不明白何种光线环境对眼睛最为友善,结果如今的近视度数已濒临千度大关。虽然早已习惯佩戴眼镜的生活,但近视所带来的诸多不便仍旧在日常生活中无处不在。因此,对于家中孩子的视力健康…

第六十七:iview的select组件在页面上,下拉数据被遮挡

iview的select组件在页面上,下拉数据被遮挡 加上**:transfer"true"** 代码截图: 官方解说截图:因为默认值是false 所以要改成:transfer“true”

人工智能水平国际领先,科大讯飞再获国家科学技术进步奖一等奖

科大讯飞在2023年6月24日荣获国家科学技术进步奖一等奖,这是对其在多语种智能语音技术及产业化领域取得的突破性成果的高度认可。科大讯飞的这一成就,标志着其在人工智能领域的技术实力和创新能力已达到国际领先水平。 据「TMT星球」了解,科大…

WMV 视频格式怎么转换?WMV 视频为什么不流行了?

目前有越来越多的视频格式类型,如常见的 MP4、FLV、AVI 等等,而技术的演变也逐渐让一些常见的视频格式变的越来越少了。 今天我们一起来聊下 WMV 这个视频格式,让我们看看它的发展以及为什么现在越来越少人使用了。 什么是 WMV 视频格式&…

Git 使用指南(附详细解释)

Git 是一个强大的版本控制系统,广泛用于软件开发中,用于跟踪文件的更改、协作工作等。无论你是新手还是有经验的开发者,掌握 Git 都是非常有益的。这篇博客将带你了解 Git 的基本使用,希望能帮助你快速入门并有效使用 Git。 1. 创…

论文学习_Nebula: Self-Attention for Dynamic Malware Analysis

论文名称发表时间发表期刊期刊等级研究单位Nebula: Self-Attention for Dynamic Malware Analysis2024年IEEE TIFSCCF A热那亚大学1. 引言 研究背景与现存问题:动态恶意软件分析是一项至关重要的任务,不仅对于检测而且对于了解整个互联网上广泛传播的威胁而言。 收集样本后,…

【windows|011】TCP/IP5层模型常见协议及应用总结大全

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 ​ 🏅阿里云ACE认证高级工程师 ​ 🏅阿里云开发者社区专家博主 💊交流社…

记一次面试

Linux查日志,怎么把最后1000行写到另一个文件中 在Linux中,如果你想要查看日志文件的最后1000行并将其写入到另一个文件中,你可以使用tail命令。tail命令默认用于输出文件的最后几行。 以下是如何使用tail命令将日志文件的最后1000行写入到另…

java设计模式(二)工厂方法模式(pattern of factory method)

1、模式介绍: 工厂方法模式(pattern of factory method)是一种创建型设计模式,它定义了一个用于创建对象的接口,但将实际创建对象的工作延迟到子类中,这样可以在不改变整体结构的情况下,通过子…

课时166:脚本发布_脚本技巧_技巧解读

2.3.1 技巧解读 学习目标 这一节,我们从 简单脚本、复杂脚本、注意事项、小结 四个方面来学习 简单脚本 简介 1、手工执行的命令一定要可执行2、命令简单罗列3、固定的内容变量化4、功能函数化复杂脚本 实践 1、手工执行的命令一定要可执行2、根据发布流程编写…

第二节课 6月13日 ssh密钥登陆方式

centos和ubuntu openssh服务的初始安装 一、实验:ubuntu系统激活root用户 ubuntu系统如何激活root用户,允许root用户ssh登陆? 1、ubuntu默认root用户未设置密码,未激活 激活root用户,设置root密码 sudo passwd roo…

vray灯光导致3dmax崩溃怎么解决?

启动时崩溃 解决方法: 1、兼容模式重新打开 具体步骤:【选中会闪退3dmax版本】——【右键“兼容性疑难解答”】——【下一步】——【选择Windows7/10】——【下一步】——【启动程序】 启动完成后,【下一步】——【为我保存这些设置】—完…

CI构建pipelines

目录 构建代码风格代码覆盖率静态检测 CI构建可以分为几个部分:构建代码(可以是多个平台)——>UT用例 ——> 代码覆盖率 ——> 代码静态检测 首先保证有可以CMakeLists.txt可以在本地正常编译业务代码和UT代码 构建 首先需要有ci构…