【class2】人工智能初步(自然语言处理)

news2025/1/21 15:29:43

要实现从评价中提取高频关键词,并判别其正负面性,其实是通过人工智能领域中的一个分支:自然语言处理。

在了解自然语言处理之前,我们先来说说,什么是自然语言(Natural Language)?
自然语言,即人们日常使用的语言,也就是每天包围着我们的文本信息语音信息

了解自然语言

这样或许还不太能知道到底什么是自然语言处理,我们简单看一些它的应用,来帮助理解为什么要让计算机去处理自然语言吧~

1.邮件过滤
系统会根据电子邮件的内容识别电子邮件是否属于三个类别(重要、社交或广告)之一,或者判断一封邮件是否是垃圾邮件。
此时就是通过NLP来对这些邮件进行一系列的分类。

2. 搜索引擎,如百度、谷歌等。
在我们输入2-3个字后,搜索引擎会显示可能的搜索词。或者如果输入了错别字,搜索引擎会自动进行更正。
这就是通过NLP技术来实现的搜索自动完成和自动更正功能,帮助我们更有效地找到准确的结果。

3. 机器翻译,比如Google、有道翻译。
目前所追求的翻译,不再仅仅是通过计算机直接将一种语言转换为另一种语言,而是需要像人类一样能够理解世界知识和上下文。
要让电脑像人类一样理解自然语言,必然离不开NLP技术。

4. 语音助理,比如Siri、智能音箱等。
现在的语音助理,与人类之间的交流不再是简单的你问我答,不少语音助手甚至能和人类进行深度交谈。
同样在这背后离不开NLP技术,使得语音助理能够将人类语言转换为机器语言,然后执行相应的操作。

通过这些例子大概可以感受到,我们每天都会产出大量的自然语言信息。在面对自然语言时,除了单纯地阅读和倾听外,往往会进行更多复杂的操作和处理。
但人工处理的代价过于高昂,因此会期望训练计算机来代替人类,这就是自然语言处理的意义。

然而,自然语言并没有想象中那么容易处理。
与人工语言(编程语言或数学语言等)相比,自然语言有着多变、非结构化等各种特殊和复杂的特点。

例如:
编程语言中的关键词数量是固定的,而自然语言中能使用的词汇量是无限的,甚至还在不断创造新词;
编程语言具有结构性,如类和对象,但显然自然语言不具有这样的结构。

总结一下,广义上来讲任何处理自然语言的计算机操作都可以被理解为NLP。
它可以实现一些简单的功能,比如短语之间的翻译。
同时,NLP也致力于完成一些具有挑战性的任务,比如完全“理解”人类话语。

了解完自然语言处理(NLP)的基本概念、应用和面临的一些挑战后,我们来思考一下:
在自然语言这个复杂的系统里,是否存在一个基本单位呢?
这样便可以把无规律的文本信息降维处理后,再来完成后续的NLP任务。

拆解文本

1.一篇文本是由无数句话组成,而一句话又是由一个个词语组成,因此可以将词语看作是自然语言的基本单位。
那么在进行NLP时,就需要先将句子中的词语分开。

对于英文,只需要按照空格和标点符号就可以将词语分开。但在中文文本里,所有的字都连在一起,计算机并不知道一个字应该与其前后的字连成词语,还是应该自己形成一个词语。

因此,需要借助额外的工具将中文文本中的词语分隔开。这项技术被称为中文的分词,具体的操作我们会在下节课进行学习。

2.分词完成后,就可以根据这些词语找到属于这个文本的特点,也就是常说的特征(feature)。对于文本而言,词语出现的频率就可以作为一项特征。那么,词频这个特征就能帮我们提取出关键词。在进行NLP时,构造词袋模型(Bag-of-Words Model)是一种常用的用于统计词频的技术。

可以看到,通过词袋模型生成的结果,词的顺序和语法都被忽略了,变成了一些词语间的组合,但又在一定程度上保留了主题信息。

我们根据词袋中“物流”、“屏幕”等词语,仍然可以知道这三条评价与物流和屏幕有关。同时,根据词频,我们也获取了关于这三条评价的关键词:“满意”、“物流”和“屏幕”。

将复杂的词句结构降维成体现主题的词语计数,以便计算机进行后续的处理。这就是词袋模型的基本思想。

分析商品评价:

根据刚才的思路分析,我们就得到了如下解题步骤:
1. 寻找、读取,并处理数据集
2. 统计词频,提取关键词
3. 构造模型,预测评价的正负面性

今天我们会先学习第一个步骤:寻找、读取和处理数据集。

什么是CSV文件呢?

CSV(Comma-Separated Values)(逗号分隔值)文件以纯文本的形式储存数字、文本等表格数据。它的数据格式如图所示,文件中多个数据之间通常用逗号分隔,每一行的数据都是相同的结构。

读取CSV文件

代码的作用

这段代码展示了使用csv模块来读取存储了电视评价的CSV文件。
STEP1. 导入csv模块
STEP2. 打开文件
STEP3. 读取文件

# 导入csv模块

import csv

# 使用open()函数打开数据集,并将返回的文件对象存储在变量file中

file = open("/Users/yequ/TVComments.csv", "r")

# 使用csv.reader()函数读取数据集,并赋值给变量reader

reader = csv.reader(file)

解析代码

1. 导入模块

Python提供了一个用于处理CSV文件的模块:csv 模块。由于是内置模块,所以不需要安装,直接使用import导入即可。

2. 打开文件:open()

在使用csv模块读取文件前,得先通过open()函数打开需要被读取的文件。该函数用于打开一个文件,并返回对应的文件对象。

open()函数:第一个参数

第一个参数是文件路径(path),也是必选参数。本例中,将存储了电视评价的数据集的路径:"/Users/yequ/TVComments.csv",作为必选参数传入到open()函数中。

open()函数:第二个参数

第二个参数代表打开方式,用特定的字符串表示。我们只需要读取该文件,所以使用 r ,表示以只读的方式读取文件。

文本对象

open()函数返回一个文件对象,我们将它存储在变量file中。

3. 读取文件:csv.reader()

打开数据集后,我们就可以使用csv.reader()函数读取CSV文件,只需将文件对象file作为参数传入其中。

reader对象

使用csv.reader()函数时,返回的是一个reader对象,我们将它存储在了变量reader中。

逐步修改

什么是reader对象?

读取文件后,获取到的是一个reader对象。
reader对象存储的是CSV文件里所有行数据,相当于每一行数据都作为字符串列表返回。
我们可以使用for循环遍历它,输出每一次遍历结果进行查看。

查看提取信息

根据输出可以看到,CSV文件里的每一行都被读作成了一个字符串列表。由于CSV文件有两列数据,所以对应的每个列表里都有两个元素:
第一个元素是评价;
第二个元素是该评价对应的正负面性。

这就意味着,CSV文件里有多少行评价数据,reader对象中就有多少个列表。

了方便接下来对所有的评价进行处理,我们可以对reader变量里的数据进行标准化处理

标准化处理

具体的方法是把所有的评价都存储在一个列表中,这样不论是遍历所有评价还是访问单独的某一条评价,都会非常方便。
步骤如下:
1. 先创建一个空列表,用于存储reader对象中的值
2. 使用for循环遍历reader对象
3. 使用append()函数,将reader对象中的每行数据添加到空列表data中
完成后,data列表里存储的就是我们需要的电视评价数据啦~

修改代码如下:

输出结果

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

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

相关文章

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.1,2,3-GPIO中断控制实验

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

全自动发布小红薯思维导图笔记(附爆款AI提示词)

全自动电脑接管,帮你生成图片、文案,然后还帮你自动发布。 大家好,我是大胡子,专注于研究RPA实战与解决方案,今天来介绍一款全自动生产内容并发布小红薯的神器,最后附有AI提示词,记得收藏点赞…

【C#】学习获取程序执行路径,Gemini 帮助分析

一、前言: 在Delphi中,如果想要获取当前执行程序的目录,程序代码如下: ExtractFilePath(ParamStr(0)); 今天在分析一个别人做的C#程序时看到了一段C#代码,意思是获取执行程序所在的文件目录: public stat…

[图解]实现领域驱动设计译文暴露的问题04

0 00:00:00,960 --> 00:00:03,020 今天我们继续说一下 1 00:00:03,460 --> 00:00:05,350 实现领域驱动设计 2 00:00:05,630 --> 00:00:08,120 译文里面暴露的问题 3 00:00:10,630 --> 00:00:14,740 前面三个视频,我们提到了第①句 4 00:00:15,550 -…

国家网络与信息系统安全产品质量检验检测中心是什么机构?成立于一年?有什么用?

在当今信息化快速发展的时代,网络安全问题日益凸显其重要性,而检测中心则扮演着守护网络安全、保障信息系统稳定运行的关键角色。今天我们就来聊聊国家网络与信息系统安全产品质量检验检测中心是什么机构?成立于一年?有什么用&…

RedisTemplate操作Redis详解之连接Redis及自定义序列化

连接到Redis 使用Redis和Spring时的首要任务之一是通过IoC容器连接到Redis。为此,需要java连接器(或绑定)。无论选择哪种库,你都只需要使用一组Spring Data Redis API(在所有连接器中行为一致):…

基础模型的推理:综述

24年1月论文“A Survey of Reasoning with Foundation Models”,来自香港中文大学、华为、香港大学、上海AI实验室、香港科技大学、大连理工、北京大学、清华大学、合肥工大、中国人民大学、复旦大学和香港科技大学广州分校。 推理是解决复杂问题的关键能力&#x…

Windows/Mailing

Mailing Enumeration nmap 使用 nmap 扫描系统,发现对外开放了如下端口 ┌──(kali㉿kali)-[~/vegetable/HTB] └─$ nmap -sC -sV -oA nmap 10.10.11.14 Starting Nmap 7.93 ( https://nmap.org ) at 2024-05-08 01:46 EDT Nmap scan report for 10.10.11.14 H…

软件各阶段资料(需求设计,系统架构,开发文档,测试文档,运维阶段的部署维护文档,概要设计,详细设计)

一、 引言 (一) 编写目的 (二) 范围 (三) 文档约定 (四) 术语 二、 项目概要 (一) 建设背景 (二) 建设目标 (三&#xff0…

linux上用Jmter进行压测

在上一篇中安装好了Jmeter环境,在这一篇中将主要分享如何使用jmeter在linux中进行单机压测。 1.项目部署 在这里我们先简单部署一下测试环境,所用到的项目环境是个jar包,先在linux上home目录下新建app目录,然后通过rz命令将项目ja…

一些近来对内网攻防的思考

我知道我最近托更托了很久了,其实也不是小编懒啊 这小编也是一直在写,但是遇到的问题比较多(我太菜了),所以一直拖着。 但是总不能不更吧 那就讲一下进来的一些内网攻防的思考吧 1.CrossC2上线Linux到CS(成功) …

程序设计文档—软件分析报告(Word)

第3章 技术要求 3.1 软件开发要求 第4章 项目建设内容 第5章 系统安全需求 5.1 物理设计安全 5.2 系统安全设计 5.3 网络安全设计 5.4 应用安全设计 5.5 对用户安全管理 5.6 其他信息安全措施 第6章 其他非功能需求 6.1 性能设计 6.2 稳定性设计 6.3 安全性设计 6.4 兼容性设计…

DriveWorld:通过自动驾驶世界模型进行 4D 预训练场景理解

24年5月北大论文“DriveWorld: 4D Pre-trained Scene Understanding via World Models for Autonomous Driving”。 近年来,以视觉为中心的自动驾驶因其较低的成本而受到广泛关注。预训练对于提取通用表示至关重要。然而,当前以视觉为中心的预训练通常依…

【Linux】进程信号(2万字)

目录 前言 一、生活角度的信号 1.1、我们来见一见信号: 1.2、模拟一下 kill 指令 二、信号的处理 三、产生信号的5种方法 3.1、kill命令 3.2、键盘可以产生信号 3.3、3种系统调用 3.4、软件条件 3.5、异常 四、比较 core 和 Term 五、键盘信号产生 六…

Docker安装、使用及常用命令

一、Docker是什么? Docker是一种开源的容器化技术,允许开发者将应用及其运行环境打包在一个轻量级、可移植的容器中。这样,不论在开发、测试还是生产环境中,应用都能在任何Docker支持的平台上无缝运行。Docker使用Dockerfile来自…

人形机器人场景应用全解析,2024睿抗 AI ROBOT创新挑战赛火热报名中!

人工智能(AI)已成为推动科技革命和产业变革的关键力量。随着大模型等AIGC技术的迅猛发展,AI正深刻改变我们的生活并重新定义生产方式。越来越多人期望将AI技术从纯粹的思维和计算扩展到与物理世界的互动中,即发展具身智能。 为了推…

网络库-libcurl介绍

1.简介 libcurl 是一个功能强大的库,支持多种协议,用于数据传输。它广泛应用于实现网络操作,如HTTP、HTTPS、FTP、FTPS、SCP、SFTP等。libcurl 提供了丰富的 API,可以在多种编程语言中使用。 libcurl 主要特点 支持多种协议&am…

812寸硅片为什么没有平边(flat)?

知识星球(星球名:芯片制造与封测社区,星球号:63559049)里的学员问:上期种说2,4,6寸硅片都有平边,那为什么8&12寸硅片只有一个notch?为什么不能像小尺寸晶…

抖店商家选品误区,看你中了几条?

我是王路飞。 作为抖店的核心,选品的重要性自然不言而喻。 你跟达人沟通的重点是产品,与厂家沟通的重点也是产品,产品不行,一切都白搭。 然而很多新手商家刚开始做抖店的时候,总是选不到比较好的品。 今天给你们总…

「51媒体」邀请媒体参会报道和媒体发稿有啥不同

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体参会报道和媒体发稿是新闻报道的两种不同形式,它们的主要区别在于内容来源、报道方式和目的。 内容来源: 媒体参会报道:通常指的是记者或媒体代…