草履虫都能上手用的人工智能模型

2023/9/30 16:46:32

前排提示:

  • 阅读本文不需要任何人工智能以及算法相关的知识。
  • 你会任何一种编程语言就行,会python当然那更好。
  • 仅作为NLP科普,娱乐,实际算法工作并非这么简单。

X:“宝,你搞的是什么算法?”

A:“NLP,又叫自然语言处理。”

X:“太抽象了啊”

A:“比如聊天机器人?”

X:“emmmmm”

A:“算了,你自己试一下吧,上车,坐稳了。”


接下来会分为两部分:

  • 没有Python环境的我会提供一个colab,但是colab是谷歌的,要怎么打开能懂我的意思吧。

  • 有Python环境的可以直接上手进行尝试了。代码是完全一样的。

如果你没有Python环境

那么:Transformers, what can they do? - Colaboratory (google.com)

看到上边这个链接了吧,看到Google知道怎么才能打开它吧。(疯狂暗示)

使用colab的话,你会点击鼠标左键就行了。

 

看到上图中红色框框的按钮没,我说到哪段代码,你直接点击一下他就运行了。

如果你有Python环境

你有Python环境我就默认你已经会pip安装东西了。那你只需要会复制粘贴代码,丢进你的IDE里运行就行了。

第一步:

pip install datasets evaluate transformers[sentencepiece]

下载使用抱抱脸提供的pipeline让你们可以迅速看一下现在的一些NLP模型能干嘛。

第二步:

打开你的IDE,开始复制粘贴运行我下边的代码。

注意:jupyter和Python常规的IDE存在差别。在jupyter(上边的colab)中直接写下边的代码,么一个代码块最后一行会默认输出,不需要print,但是普通的IDE你要看到结果需要自己加上print()


情感分析

# colab:
from transformers import pipeline

classifier = pipeline("sentiment-analysis")
classifier("I love you!")

# 其他IDE:
from transformers import pipeline

classifier = pipeline("sentiment-analysis")
result = classifier("I love you!")
print(result)
复制代码

这段代码的意思是导入pipeline,新建一个classifier,这个classifier是使用了pipeline的情感分析功能。

之后你只需要给它传入句子,就可以进行句子的情感分析了。

然后你可以看到他的输出大概是长这样

[{'label': 'POSITIVE', 'score': 0.9998717308044434}]

意思是说系统判定这个句子是个积极的句子,得分是99%,得分越高,当然越偏向于积极。

传入多个句子:

当然你也可以给他传入多个句子,句子需要使用列表进行储存。

Python列表(list)的特点是用[]存储,数据项之间使用,分割。

比如我们想传入两个句子,就是["I love you.","我不爱换吃香菜。"]

我们只需要把这个列表传给刚才的classifier即可。

from transformers import pipeline

classifier = pipeline("sentiment-analysis")
classifier(["I love you.","我不爱换吃香菜。"])
复制代码

之后我们可以看到输出结果为:

[{'label': 'POSITIVE', 'score': 0.9998705387115479},

{'label': 'NEGATIVE', 'score': 0.9371575713157654}]

模型认定第一个句子是个积极的句子,得分是99%,第二个句子是个消极的句子,得分是94%。

总结

这个任务就是自然语言处理之中的情感分析任务。可以应用在一些评论中来处理用户极性,比如各大购物平台的评论区啊,或者外卖平台的评论区啊,服务提供商可以迅速地通过对评论进行情感分析,来获取用户对产品的一些喜欢或者厌恶的程度。当然在这里只是进行了一个粗粒度的情感分析。细粒度的情感分析可以做到更精准的定位。


文本生成

文本生成就是说你给他一个句子或者几个句子,他给你继续往下写。我之前就是在做这个东西。然后我做的主要是受控文本生成,就是说你可以去控制模型生成的情感呀主题呀之类的。当时写这个东西的时候大家在想应用场景嘛,然后想来想去,我说了一句是不是要去做免费的网络水军。

今天在这里就简单的展示一下最普通的文本生成。因为各种各样的原因,这些简单的模型现在的生成效果可能并不是特别的好。所以在这里仅仅是做一个展示而已。

from transformers import pipeline

generator = pipeline("text-generation")
generator("I am boring, I want to")
复制代码

注意:

在这里默认使用的是GPT-2,每个人每一次生成出来的结果都是不一样的。所以我生成出来的答案并不是你生成出来的答案,它是随机的。你得到的输出肯定是和我的不一样。

[{'generated_text': 'I am happy, I want to go to work."\n\nWith her hand in a pocket, the waitress looked around and saw an expression on Colin's face. "It's pretty obvious that you are here in the business to do this, as'}]

我这边的生成结果是

“我很高兴,我想去工作。”女服务员把手放在口袋里,环顾四周,看到柯林连上的表情……

语言模型并不如大家想象中的那么智能,所以你看到它生成的结果可能并不通顺,或者逻辑也并不清晰,这一点不要诧异。文本生成任务其实还是任重道远的。

生成多个候选:

可以使用参数 num_return_sequences 控制生成多少个不同结果。

from transformers import pipeline

generator = pipeline("text-generation", model="distilgpt2")
generator(
    "In this course, we will teach you how to",
    num_return_sequences=3,
)
复制代码

在这里设置了返回序列的数量为3,这样你就可以一下获得三个结果。

[{'generated_text': 'In this course, we will teach you how to write with both HTML & JavaScript which is easy to learn, easy to use, and in-depth in HTML. You will learn how to write with both HTML & JavaScript which is easy to learn,'},

{'generated_text': 'In this course, we will teach you how to run a simple and simple network with a very simple set of parameters (for example, for a network where you can run a network with just one parameters in place), which is very important to your network'},

{'generated_text': "In this course, we will teach you how to use the skills required to make the right choices while playing a successful video game. If we can't find that many gamers do not feel like making this course even though they don't understand how to get"}]


问答

现在问答系统分为好多种。有的是基于上下文阅读理解归纳推理的,有的是基于信息提取的。二者的区别是比如说我给你一个问题,然后给你一段文本。

  • 基于阅读理解的就是读完你这段文字之后给你归纳出来一个答案。这个答案比较合理,但是和你的原文可能说法不太一样。
  • 而基于信息提取的就是直接把你原文中可能作为答案的部分给你摘出来。
from transformers import pipeline

question_answerer = pipeline("question-answering")
question_answerer(
    question="Where do I work?",
    context="My name is Sylvain and I work at juejin in Beijing"
)
复制代码

输出是:

{'score': 0.758256196975708, 'start': 33, 'end': 39, 'answer': 'juejin'}

这个输出的意思是,模型觉得这个问题的答案应该是你在掘金工作,他觉得这个答案76%的概率是对的。掘金这个词在原文中的起始位置和终止位置是33和39。很明显这是一个基于提取的问答。

总结

问答系统很常见,啊现在大家不是很多都在做什么医疗问答系统,呀智能客服机器人呀。至今多轮对话都是一个研究的重点方向。要做出替代真人客服的系统,问答系统还有很长的一段路要走。


翻译

翻译顾名思义就是进行语言的转换翻译了。现在各大翻译平台都已经用上基于神经网络的翻译了。

from transformers import pipeline

translator = pipeline("translation", model="Helsinki-NLP/opus-mt-zh-en")
translator("今天是周四,我要吃肯德基。")
复制代码

输出是:

[{'translation_text': "It's Thursday. I'm gonna eat Kentucky."}]

先解释一下上面的代码。代码很简单,就是使用pipeline的翻译功能,然后让translator去做翻译。但是这里加了一点东西model="Helsinki-NLP/opus-mt-zh-en",这句的意思就是我不使用默认的模型了,我在这里使用的是这个中文到英文的模型。就是我给他指定了一个Helsinki-NLP/opus-mt-zh-en模型。所以下面我做的是一个中文到英文的翻译。不同的语言要使用不同的模型。当然也有多语言模型,当然多语言模型也不能够涵盖所有的语种。所以尽量还是要选择适合自己的模型。

总结

机器翻译任务最开始是属于基于规则,逐渐发展到深度学习,从开始RNN及其变体,到transformer。但是transformer现在有一个硬性的缺点,就是虽然在encoder部分实现了并行化计算,但是无法在decoder部分并行计算,对于一些大任务来说,它的效率还是很低的。所以近两年非自回归文本翻译蓬勃发展,国内的话在这一领域卷的非常厉害的当然就是字节跳动的火山翻译,扛起非自回归文本翻译的大旗。


最后的总结

自然语言处理涉及的其实非常广泛,并非我列举的这几个任务。要真细数自然语言处理的任务的话,可能会细分到几十个。它的应用其实涵盖到了我们生活的方方面面。比如说我们输入法提示词、比如我们的用户行为分析、比如我们的问答机器人。你可能平时都受益于此,只是因为没有了解到这些方面而已。自然语言处理还在蓬勃发展之中,甚至达不到差强人意的效果,人工智能想要取代人类还有很长的一段路要走。


http://www.jnnr.cn/a/124058.html

相关文章

如何用JVS的低代码进行配置管理?模板打印详细介绍

日常工作中,我们需要各种不同的打印的资质文件,如下图所示,大量的内容需要手动填写,容易出错,那么我们可以用JVS的低代码进行配置管理,下面我们来看看具体的打印模板的配置。 在上述的图上,我们…

【Leetcode】1259. Handshakes That Don‘t Cross

题目地址: https://leetcode.com/problems/handshakes-that-dont-cross/description/ 有nnn个点(nnn为正偶数),可以想象为其在某个正nnn边形的顶点上。要将这些点两两配对,配对的点连一条线段。要求线段之间互不相交…

机器学习中常用的评价指标

目录 1. 平均绝对误差MAE 2. 均方误差MSE 3. 均方根误差RMSE 4. R2 5. Adjusted R2 1. 平均绝对误差MAE 平均绝对误差 (MAE) 是最简单的回归度量。它将每个实际值和预测值的差值相加,最后除以观察次数。为了使回归模型被认为是一个好的模型,MAE 应该…

【JavaScript】-----初始JavaScript

分享第十八条励志语录 最美好的不是未来,是今天。阳光这么好,何必自寻烦恼。生活总会有个未来,就像四季更迭永远有春天一样,不急不躁,该有的都会有。人,最好的心态是平静;最好的状态是简单&…

2022陕西清北录取人数排名,西工大附中遥遥领先,高新一中40人

现在已经是到了高考录取结果逐渐出炉的时间了,第一批次结果都已经出炉了,不少学子已经确认被一些名校所录取了,已经开始开始分享着自己的喜悦之情,开始憧憬着大学的生活了,对于今年的考生来说想要考上一所重点高校不是…

风控建模十二:数据淘金——如何从APP数据中挖掘出有效变量

风控建模十二:数据淘金——如何从APP数据中挖掘出有效变量1、常识知识2、个例分析3、分布排查智能手机的诞生改变了人类的生活方式,智能手机所承载的功能日臻完善、强大,人们在衣、食、住、行、工作、生活中面临的方方面面问题,似…

[电脑运用及修理]2022年电脑配置推荐(台式1000-20000元预算清单)

目录 一、电脑配置清单及配件详细解析 二、电脑配置清单 CPU性能天梯图 最新台式机处理器CPU单核性能汇总(多核利于生产力) 2000元#G6900入门配置清单 3000元#i3-12100主流办公电脑配置清单 4000元#i3-12100/12100F 主流游戏电脑配置清单 5000元…

RabbitMQ系列【2】核心概念

有道无术,术尚可求,有术无道,止于术。 文章目录核心概念Producer(生产者)Connection(连接)Channel(信道)Broker(服务端)Virtual host(…

医生接诊时间难分配?看DHTMLX Scheduler如何助力门诊管理系统优化升级

我们院有一个门诊管理系统,能对不同病种进行分类管理和简要展示,可以为患者创建定制的电子病历。由于最近接诊人数增多,我们要记录很多数据,数据会很繁杂,而且不能有效分配医生时间,导致医生同时接诊多个患…

BSV上的高效 zk-SNARK:技术解释

最近,我们在 sCrypt 中实现了 zk-SNARKs,并在 BSV 上运行它。更具体地说,我们实现了 Groth16 算法的验证器,它允许直接在链上验证零知识证明。本文深入探讨了一些细节,阐明了如何在 BSV 上有效地实施其他高级加密技术。…

大众点评字体反爬解析

文章目录0x00字体反爬0x01常见映射方式0x02接口分析0x03解决思路根据映射的关系我们根据以下步骤构建大字典:0x04代码及测试结果0x05总结0x00字体反爬 通过自定义字符集来改变html源码中的某些字符的表现形式。这里不采用ocr识别的方式,采取直接构建对应的映射词典…

[附源码]java毕业设计代驾服务系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

ubuntu安装openresty

ubuntu安装openresty 在线安装 你可以在你的 Ubuntu 系统中添加 APT 仓库,这样就可以便于未来安装或更新我们的软件包(通过 apt-get update 命令)。 运行下面的命令就可以添加仓库(每个系统只需要运行一次)&#xff…

国内做SRM系统的公司哪家比较好?如何利用SRM系统管理好供应商?

​ 在帮助数千家企业落地数字化转型的过程中,我们发现很多企业都面临着一个尴尬的问题—— 花了大力气去做数字化升级,但是在把握企业成本命脉的采购与供应商管理环节,却仍然采用传统的管理方式,导致采购过程信息不透明、管理不规…

阿里P8架构师Spring源码阅读心得,都记录在这份PDF文档里面了

为什么学习读源码 我们每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。这种…

LeetCode50天刷题计划第二季(Day 27 — 寻找旋转排序数组中的最小值(9.50- 11.20)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、题目寻找旋转排序数组中的最小值示例提示:二、思路三、代码前言 芜湖 一、题目 寻找旋转排序数组中的最小值 已知一个长度为 n 的数组&#…

[附源码]计算机毕业设计JAVAjsp昭通推广网站开发

[附源码]计算机毕业设计JAVAjsp昭通推广网站开发 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM myb…

[附源码]java毕业设计宠物商城

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

python easygui修改窗口位置

EasyGui是一个十分简单的Python图形界面库,支持窗口文本显示、图片显示、按钮、文本框、选项栏、文件选择等等必要的组件且操作十分简单。但也因如此,导致EasyGui甚至不能手动调整窗口位置、按钮位置、名字等,因为EasyGui是基于Tkinter编写的…

JavaSE入门篇——类和对象(实例理解)

文章目录一、面向对象简述二、类与对象的基本概念三、类的定义与使用四、this引用五、对象的构造及初始化六、static成员七、 代码块一、面向对象简述 面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的…
最新文章