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

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

在了解自然语言处理之前,我们先来说说,什么是自然语言(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.rhkb.cn/news/326819.html

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

相关文章

快速入门:利用Go语言下载Amazon商品信息的步骤详解

概述 在这篇文章中,我们将深入探讨如何利用Go语言这一强大的工具,结合代理IP技术和多线程技术,实现高效下载Amazon的商品信息。首先,让我们来看看为什么选择Go语言作为开发网络爬虫的首选语言。 Go语言在网络开发中的特点 简洁…

springboot学习整理

视频:基础篇-01_springboot概述_哔哩哔哩_bilibili 介绍 spring boot 是spring提供的一个子项目,用于快速构建spring应用程序 spring构建: 1 导入依赖繁琐 ; 2 项目配置繁琐 spring Framework: 核心 spring Boot :快速构建spring…

gitee 简易使用 上传文件

Wiki - Gitee.com 官方教程 1.gitee 注册帐号 (直接选择初始化选项即可,无需下载git) 2.下载git 安装 http://git-scm.com/downloads 3. 桌面 鼠标右键 或是开始菜单 open git bash here 输入(复制 ,粘贴) 运行…

移动端自动化测试工具 Appium 之自定义报告

文章目录 一、背景二、具体实现1、保存结果实体2、工具类3、自定义报告监听类代码4、模板代码4.1、report.vm4.2、执行xml 三、总结 一、背景 自动化测试用例跑完后报告展示是体现咱们价值的一个地方咱们先看原始报告。 上面报告虽然麻雀虽小但五脏俱全,但是如果用…

【错误的集合】力扣python

最初想法 def findErrorNums(nums):n len(nums)duplicate -1missing -1for num in nums:if nums[abs(num) - 1] < 0:duplicate abs(num)else:nums[abs(num) - 1] * -1for i in range(n):if nums[i] > 0:missing i 1breakreturn [duplicate, missing] 遇到力扣大佬…

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

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

【STM32 |程序实例】按键控制、光敏传感器控制蜂鸣器

目录 前言 按键控制LED 光敏传感器控制蜂鸣器 前言 上拉输入&#xff1a;若GPIO引脚配置为上拉输入模式&#xff0c;在默认情况下&#xff08;GPIO引脚无输入&#xff09;&#xff0c;读取的GPIO引脚数据为1&#xff0c;即高电平。 下拉输入&#xff1a;若GPIO引脚配置为下…

如何将pdf文件换成3d模型?---模大狮模型网

PDF文件是一种广泛用于文档传输和共享的格式&#xff0c;但在某些情况下&#xff0c;我们可能希望将其中的内容转换为更具交互性和视觉效果的3D模型。本文将介绍如何将PDF文件转换为3D模型&#xff0c;为您展示实现这一想象的步骤。 选择合适的PDF文件&#xff1a; 首先&#…

CentOs搭建Kubernetes集群

kubeadm minikube 还是太“迷你”了&#xff0c;方便的同时也隐藏了很多细节&#xff0c;离真正生产环境里的计算集群有一些差距&#xff0c;毕竟许多需求、任务只有在多节点的大集群里才能够遇到&#xff0c;相比起来&#xff0c;minikube 真的只能算是一个“玩具”。 Kuber…

如何开通微软必应bing国内竞价广告账户?

微软必应Bing作为全球第二大搜索引擎&#xff0c;凭借其特有的用户群和市场定位&#xff0c;为中国广告主开辟了一片潜力无限的蓝海市场。云衔科技通过专业实力&#xff0c;为广告主提供全方位支持&#xff0c;从开户到代运营&#xff0c;助力企业扬帆起航。 一、微软必应bing…

远程监控供水设备运行状态

随着城市化进程的加快&#xff0c;供水设备的安全稳定运行对于保障居民日常生活和工业生产至关重要。然而&#xff0c;传统的供水设备管理方式往往受限于人力、物力和时间的限制&#xff0c;难以实现对供水设备运行状态的全面监控和实时管理。在这一背景下&#xff0c;HiWoo Cl…

海洋环境保护论文阅读记录

海洋环境保护 论文1&#xff1a;Critical role of wave–seabed interactions in the extensive erosion of Yellow River estuarine sediments 波浪-海床相互作用在黄河河口广泛侵中的关键作用 estuatine 河口的&#xff0c;港湾的 erodibility侵蚀度 sediment erodibility …

GEVernova推出GEV新能源平台,引领新能源未来

近日&#xff0c;全球领先的能源设备制造和服务公司 GE Vernova 宣布推出 GEV 新能源平台&#xff0c;这是一个将金融、科技和产业深度融合的全新投资平台。GEV 新能源平台旨在为用户提供一站式可持续新能源投资解决方案&#xff0c;助力全球新能源转型和可持续发展。 新能源已…

YOLOv9-20240507周更说明|更新MobileNetv4等多种轻量化主干

专栏地址&#xff1a;目前售价售价69.9&#xff0c;改进点70 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 本周已更新说明&#xff1a; ### ⭐⭐更新时间&#xff1a;2024/5/12⭐⭐ 1. YOLOv9…

【Web后端】web后端开发简介_Servlet简介

1.web后端开发简介 Java企业级开发&#xff0c;也就是学习]avaEE(Enterprise Edition)版本,是一种结构和一套标准。在应用中开发的标准就是Servlet、jsp和JavaBean技术。jsp技术现在已基本处于淘汰状态&#xff0c;简单了解即可web后端开发&#xff0c;基于B/S模式的开发体系。…

【ArcGIS Pro微课1000例】0058:玩转NetCDF多维数据集

一、NetCDF介绍 NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准。NetCDF广泛应…

从XML配置角度理解Spring AOP

1. Spring AOP与动态代理 1.1 Spring AOP和动态代理的关系 Spring AOP使用动态代理作为其主要机制来实现面向切面的编程。这种机制允许Spring在运行时动态地创建代理对象&#xff0c;这些代理对象包装了目标对象&#xff08;即业务组件&#xff09;&#xff0c;以便在调用目标对…

MySQL基础使用指南

难度就是价值所在。大家好&#xff0c;今天给大家分享一下关于MySQL的基础使用&#xff0c;MySQL 是一个流行的关系型数据库管理系统&#xff0c;被广泛应用于各种类型的应用程序开发中。本文中将介绍 MySQL 的基础使用方法&#xff0c;包括创建数据库、创建表格以及进行增删改…

污水设备远程监控

随着环保意识的日益增强&#xff0c;污水处理作为城市建设和环境保护的重要一环&#xff0c;越来越受到社会各界的关注。然而&#xff0c;传统的污水处理设备管理方式往往存在着效率低下、响应速度慢、维护成本高等问题。为了解决这些痛点&#xff0c;HiWoo Cloud平台凭借其强大…

【数据结构与算法 刷题系列】合并两个有序链表

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;数据结构与算法刷题系列&#xff08;C语言&#xff09; 目录 一、问题描述 二、解题思路详解 合并两个有序链表的思路 解题的步…