4-1 文本预处理:分词、停用词、特殊字符消失术

news2025/4/4 18:06:56

4-1 文本预处理:分词、停用词、特殊字符消失术

在自然语言处理(NLP)领域,文本预处理是不可或缺的一步。有效的文本预处理能够显著提高模型的性能和准确性。本文将详细介绍文本预处理中的三个重要步骤:分词、停用词处理和特殊字符消除。通过丰富的理论解释和Python代码示例,希望能够帮助读者更好地理解并应用这些技术。

一、分词

1.1 什么是分词

分词是将连续的文本序列切分成词语序列的过程。在中文中,分词尤为重要,因为中文文本中没有明确的词边界,而大多数自然语言处理模型和算法都依赖于词语作为基本单元。

1.2 分词的重要性

分词是自然语言处理的基础,对下游任务如文本分类、信息检索、机器翻译等都有重要影响。准确的分词能够提高词向量表示的质量,进而提升模型的性能。

1.3 分词的方法

1.3.1 基于规则的方法

基于规则的方法主要依赖于预先构建的词典和规则。这种方法简单易行,但容易受到词典的覆盖范围和规则制定的影响。

import jieba

text = "我爱自然语言处理"
seg_list = jieba.cut(text, cut_all=False)
print("精确模式: ", "/ ".join(seg_list))

在这里插入图片描述

1.3.2 基于统计的方法

基于统计的方法通过统计词频、共现频率等信息来确定分词结果。这种方法能够动态适应不同的文本,但需要大量的计算资源。

import jieba.analyse

text = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向"
keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=False)
print("关键词: ", "/ ".join(keywords))

在这里插入图片描述

1.3.3 基于深度学习的方法

近年来,基于深度学习的分词方法得到了广泛关注。这些方法能够自动学习文本特征,具有较高的准确性。其中BERT 分词器通常会将句子拆分成字或子词(subwords),而不是整个词。所以会出现如图的现象。

from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
tokens = tokenizer.tokenize("自然语言处理是计算机科学领域与人工智能领域中的一个重要方向")
print("BERT分词: ", tokens)

在这里插入图片描述

二、停用词处理

2.1 什么是停用词

停用词(Stop Words)是指在文本处理中被过滤掉的高频、低信息量的词语。例如中文中的“的”、“是”、“在”等。

2.2 停用词处理的重要性

停用词处理能够减少噪声,提高文本表示的质量,从而提升模型的性能。停用词处理在信息检索、文本分类等任务中尤为重要。

2.3 停用词的选择

停用词的选择可以根据具体任务和语料库进行调整。一般来说,停用词表可以通过经验规则或数据驱动的方法构建。

2.3.1 经验规则构建停用词表
import jieba

# 定义停用词列表
stop_words = set(["的", "是", "在", "和", "了"])

# 原始文本
text = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向"

# 用 jieba 分词
words = jieba.lcut(text)

# 去除停用词
filtered_words = [word for word in words if word not in stop_words]

# 将处理后的词语重新连接成字符串
filtered_text = " ".join(filtered_words)

print("去除停用词后: ", filtered_text)

在这里插入图片描述

2.3.2 数据驱动构建停用词表
from collections import Counter
import jieba

text = "自然语言处理包括语音识别、机器翻译、情感分析等多个子领域。"
words = jieba.lcut(text)
word_counts = Counter(words)
stop_words = {word for word, count in word_counts.items() if count > 1}

print("自动生成的停用词表: ", stop_words)

在这里插入图片描述

三、特殊字符消除

3.1 什么是特殊字符

特殊字符包括标点符号、数字、HTML标签等非文字字符。在文本处理中,特殊字符通常被视为噪声,需要被消除或替换。

3.2 特殊字符消除的重要性

特殊字符的存在可能会干扰文本分析和模型训练。通过消除特殊字符,可以提高文本的清洁度和模型的鲁棒性。

3.3 特殊字符的处理方法

3.3.1 去除标点符号
import re

text = "自然语言处理(NLP)是计算机科学中的一个重要方向!"
cleaned_text = re.sub(r'[^\w\s]', '', text)
print("去除标点符号后: ", cleaned_text)

在这里插入图片描述

3.3.2 去除数字
text = "他在2023年获得了博士学位,并在AI领域发表了50篇论文。"
cleaned_text = re.sub(r'\d+', '', text)
print("去除数字后: ", cleaned_text)

在这里插入图片描述

3.3.3 去除HTML标签
from bs4 import BeautifulSoup

html = "<html><body><p>自然语言处理是计算机科学中的一个重要方向。</p></body></html>"
soup = BeautifulSoup(html, "html.parser")
cleaned_text = soup.get_text()
print("去除HTML标签后: ", cleaned_text)

在这里插入图片描述

四、综合实例

为了更好地展示分词、停用词处理和特殊字符消除的综合效果,下面提供一个完整的Python代码实例,演示如何对文本进行预处理。

import jieba
import re
from bs4 import BeautifulSoup

def preprocess_text(text):
    # 去除HTML标签
    text = BeautifulSoup(text, "html.parser").get_text()
    
    # 去除标点符号
    text = re.sub(r'[^\w\s]', '', text)
    
    # 去除数字
    text = re.sub(r'\d+', '', text)
    
    # 分词
    words = jieba.lcut(text)
    
    # 去除停用词
    stop_words = set(["的", "是", "在", "和", "了"])
    words = [word for word in words if word not in stop_words]
    
    return words

text = "<html><body><p>自然语言处理是计算机科学中的一个重要方向。</p></body></html>"
processed_text = preprocess_text(text)
print("预处理后的文本: ", processed_text)

在这里插入图片描述

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

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

相关文章

MYSQL 四、mysql进阶 8(索引优化与查询优化)

都有哪些维度可以进行数据库调优&#xff1f;简言之&#xff1a; 索引失效、没有充分利用到索引——建立索引关联查询太多JOIN&#xff08;设计缺陷或不得已的需求&#xff09;——SQL优化服务器调优及各个参数设置&#xff08;缓冲、线程数等&#xff09;——调整my.cnf数据过…

Spring中的工厂模式详解及应用示例

1. Spring中的BeanFactory BeanFactory是一个接口&#xff0c;表示它是一个工厂&#xff0c;负责生产和管理bean。在Spring中&#xff0c;BeanFactory是IOC容器的核心接口&#xff0c;定义了管理Bean的通用方法&#xff0c;如 getBean 和 containsBean。 BeanFactory与IOC容器…

3D云渲染工具对决:Maya与Blender的性能和功能深度比较

3D建模和动画制作已成为数字领域不可或缺的一环&#xff0c;无论是在影视特效的震撼场面&#xff0c;还是在游戏角色的生动表现&#xff0c;3D技术都扮演着至关重要的角色。而在这一领域&#xff0c;Maya和Blender这两款软件&#xff0c;以其强大的功能和广泛的应用&#xff0c…

【想要了解Anaconda介绍、安装配置及使用,看这篇文章就够了】

一、Anaconda介绍及安装配置 1、Anaconda简介 Anaconda是一个用于科学计算的 Python 发行版&#xff0c;支持 Linux, Mac, Windows, 包含conda、Python等190多个科学包及其依赖项。它便于获取和管理包&#xff0c;包括python和许多常用软件库&#xff08;如numpy、pandas等&a…

ITIL4认证考试注意事项(附考试答题攻略)

作为一位持有ITIL4中级认证的IT服务管理专家&#xff0c;我深知备考ITIL4认证考试的重要性。在此分享我的复习备考经验&#xff0c;帮助你顺利通过考试。 1. 制定复习计划 制定详细的复习计划是备考的第一步。合理安排每天的复习时间&#xff0c;重点复习ITIL4的关键概念、四个…

【高中数学/对数函数】比较a=ln2/2,b=ln5/5的大小

【问题】 比较aln2/2,bln5/5的大小 【解答】 a-bln2/2-ln5/5(5*ln2-2*ln5)/10(ln2^5-ln5^2)/10(ln32-ln25)/10>0 所以a>b 【图像】 如果绘出函数ylnx/x的图像&#xff0c;再标记出a,b的位置&#xff0c;则绘出图像如下&#xff1a; 由上图可以看出&#xff0c;a,b两…

一道笔试题 - 反转列表

文章目录 描述预期结果代码 描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 如当输入链表{1,2,3}时&#xff0c; 经反转后&#xff0c;原链表变…

友思特方案 | 低延迟GigE Vision解决方案:用于红外设备、医疗和工业级探测面板

导读 维持实时视频系统软硬件的长期成本效益&#xff0c;是该系统在医疗、工业等领域广泛应用的前提。友思特低延迟GigE Vision解决方案创新性地突破了这一难题&#xff0c;提供高带宽且高可靠性的端到端网络链接&#xff0c;有效降低了开发成本、复杂性和时间。 引言 虽然实…

和鲸科技荣耀入选2024 H1 「中国最具价值 AGI 创新机构 TOP 50」

以下文章来源于Founder Park&#xff0c;作者Founder Par 大模型的盛宴&#xff0c;不应该只属于那些无数光环加身的算法天才们。 模型的冰山一角下&#xff0c;是应用层的暗流涌动&#xff0c;这是一个更庞大&#xff0c;也更隐秘的蓝海。但发掘这一切的前提是&#xff0c;所…

2024年PMP考试备考经验分享

PMP是项目管理领域最重要的认证之一,本身是IT行业比较流行的证书&#xff0c;近几年在临床试验领域也渐渐流行起来&#xff0c;是我周围临床项PM几乎人手一个的证书。 考试时间&#xff1a;PMP认证考试形式为180道选择题&#xff0c;考试时间为3小时50分。 考试计划&#xff…

数字化转型领航者:佑美科技塑造智能健康新生态

在全球数字化转型的浪潮中,佑美专注于智能健康解决方案的创新,正以其卓越的技术实力和前瞻性的战略眼光,引领着智能穿戴设备和健身器械行业的未来趋势。佑美科技不仅深耕数字化转型,更在多个领域获得了国家级和省级的权威认可,彰显了其在智能健康领域的影响力。 智能穿戴设备正…

JS获取本机ip地址方法

前端获取本机ip地址&#xff1b;使用第三方免费API <script>function ipJson(ipJson) {console.log(获取到的网络IP,ipJson);//可以把结果存在window上&#xff0c;方便调用window.ipJson ipJson;} </script> <script src"https://whois.pconline.com.cn/…

AI自动生成PPT哪个软件好?揭秘5款自动生成PPT的工具

在职场的竞技场上&#xff0c;演示文稿如同战士的利剑&#xff0c;其锋芒直接影响着演讲者的说服力。 然而&#xff0c;制作一份高质量的PPT往往需要耗费大量时间与精力。随着科技的进步&#xff0c;AI自动生成PPT成为了提升效率的新选择。面对市场上琳琅满目的软件&#xff0…

高深宽比刻蚀和纳米级图形化推进存储器的路线图

随着市场需求推动存储器技术向更高密度、更优性能、新材料、3D堆栈、高深宽比 &#xff08;HAR&#xff09; 刻蚀和极紫外 &#xff08;EUV&#xff09; 光刻发展&#xff0c;泛林集团正在探索未来三到五年生产可能面临的挑战&#xff0c;以经济的成本为晶圆厂提供解决方案。 …

ICC2:split_fanout如何插inverter pair

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接: ICC2:split fanout用法

数模打怪(一)之层次分析法

一、什么是层次分析法 层次分析法&#xff08;AHP&#xff09;主要用于解决评价类问题&#xff08;可打分&#xff09; 比如哪种方案更好、哪位运动员更优秀等 二、层次分析法的三个步骤 1、建立层次结构 分析题目&#xff0c;找出评价类问题的三要素&#xff1a; &#x…

PP网/尼龙网检测方案居然如此高效?

硅胶套是一种由硅胶材料制成的套管&#xff0c;通常用于保护、密封或绝缘电子元件、电线、电缆等。硅胶具有优异的耐高温、耐低温、耐化学腐蚀和绝缘性能&#xff0c;因此硅胶套常被用于需要抗高温、耐磨、耐腐蚀的环境中。硅胶套的柔软性和良好的弹性使其适合于包裹各种形状的…

解决了一个java Bug:Exception in thread “main“ java.lang.NullPointerException

写代码&#xff0c;遇到了个问题。 很纳闷&#xff0c;跟着人家写的代码。只能去查资料。 赶紧去找&#xff0c;自己的代码 逆天&#xff0c;赶紧改&#xff01; 成功了&#xff01;&#xff01;&#xff01;

剪画小程序:调整音量与均衡让音乐更动听

在音频的世界里&#xff0c;音量调节和均衡是两项关键的技能&#xff0c;它们能让我们的听觉体验更加完美。 想象一下&#xff0c;聆听音乐时&#xff0c;合适的音量能让我们完全沉浸其中&#xff0c;感受每一个音符的魅力&#xff1b;而在观看视频或进行音频创作时&#xff0c…

达梦数据库系列—24. DSC集群监控

目录 DSC监控 监视器命令 动态性能视图 集群日志 CSS日志 ASM 集群日志 DSC监控 DMCSSM 监视器可以查看DSC 集群的运行情况&#xff0c;也可以查询 DMDSC 相关的动态视图&#xff0c;可以用来启动、关闭 DMDSC 集群&#xff0c;还可以进行手动控制节点故障处理和节点重加…