徒然学会了抗拒热闹,却还来不及透悟真正的冷清;写个聊天机器人治愈自己吧!(代码片段)

山河已无恙 山河已无恙     2023-01-18     534

关键词:

写在前面


  • 之前上学使用华为ModelArts平台做了类似的图像识别之类的小项目,零编码,但是需要自己搞数据集,标注、选择算法、训练模型等,用的话直接调API。
  • NLP方面之前的一个实习公司有用,对一些类似招股书文件数据进行核查的。那会我作为Java开发做些数据清洗的工作,调NLP的接口去识别一些表格,然后用java写一些逻辑,把数据的按要求分类整理上传。
  • 在之后工作中没有接触过,也没有学习过,但是对这方面蛮感兴趣的。基本算是小白,对NLP之类的算法也不懂,买了一本相关的书籍,也落灰了。看到这个活动,想学习学习,所以参加了。
  • 啥都不懂哈,但是整体感觉相对于华为的ModelArts更繁琐,也不知道是我不懂的原因。
  • 依旧,附上活动链接:https://bbs.csdn.net/topics/601636817

活动内容:使用Azure认知服务免费提供的AI服务(包括语音转文本、文本转语音、语音翻译、文本分析、文本翻译、语言理解)开发智能应用,并以博文形式分享使用上述服务(至少试用3项服务)教程以及自己的使用心得体验;

我徒然学会了抗拒热闹,却还来不及透悟真正的冷清。--------张大春


在使用之前我们需要先了解下相关概念

一、关于认知服务的一些基本概念和术语

什么是 Azure 认知服务?

认知服务: 提供认知理解(看、听、说、理解,甚至可以决策的认知)功能的服务。

认知服务主要分为四大类:

  • 影像
  • 语音
  • 语言
  • 决策

Azure 认知服务是具有 REST API和客户端库 SDK基于云的服务,可用于帮助你将认知智能构建到应用程序中。 即使你没有人工智能 (AI) 或数据科学技能,也可向应用程序添加认知功能。Azure 认知服务包含各种 AI 服务,让你能够构建可以看、听、说、理解,甚至可以决策的认知解决方案。

我们要做一个可以和自己聊天的机器人,所以需要语言理解.

什么是语言理解 (LUIS)?

语言理解 (LUIS) 是一种基于云的对话式 AI 服务,可在用户对话的自然语言文本中应用自定义机器学习智能,以便预测整体含义并提炼出相关的详细信息。 LUIS 通过其自定义门户、API 和 SDK 客户端库提供访问权限。

二、服务构建步骤

1、首先、我们需要创建一个资源

使用Azure门户创建新资源
关于Azure 认知服务入门方面的教程,小伙伴可以移步官方文档 https://docs.azure.cn/zh-cn/cognitive-services/cognitive-services-apis-create-account?tabs=multiservice%2Cwindows

2、服务应用构建

步骤
登录到LUIS门户
创建新应用
生成模型
添加意向,即你要说些什么话,即语料,这个随便写点
添加13-15个
添加实体
使用预构建的模型,这里我们全都选择了,上面的2步应该就是生成这个,类似模板
训练模型
发布模型
查看信息

发布应用服务测试,使用python脚本调用接口

┌──[root@liruilongs.github.io]-[/liruilong]
└─$ docker pull centos/python-36-centos7
┌──[root@liruilongs.github.io]-[/liruilong]
└─$ ls
input  luis_run.sh  output  predict.py
┌──[root@liruilongs.github.io]-[/liruilong]
└─$ docker run --rm -it  --name=chatbot -v $PWD/predict.py:/predict.py centos/python-36-centos7  /bin/bash
(app-root) cd /
(app-root) ls
anaconda-post.log  bin  boot  dev  etc  help.1  home  lib  lib64  media  mnt  opt  predict.py  proc  root  run  sbin  srv  sys  tmp  usr  var
(app-root) python predict.py
Traceback (most recent call last):
  File "predict.py", line 6, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'
(app-root) pip install requests
.........................
Collecting requests
  Downloading https:/
  .....
(app-root) python predict.py
'query': '一个人怎么生活?', 'prediction': 'topIntent': '生活加油', 'intents': '生活加油': 'score': 0.8969882, 'Calendar.ShowNext': 'score': 0.58274937, 'Calendar.FindCalendarWhen': 'score': 0.25383785, 'Places.GetReviews': 'score': 0.24764298, 'Utilities.ReadAloud': 'score': 0.20971665, 'HomeAutomation.QueryState': 'score': 0.15509635, 'Calendar.CheckAvailability': 'score': 0.12212229, 'Places.GetPriceRange': 'score': 0.122063436,........

测试成功 :predict.py脚本

感觉语料太少了,所以基本说的牛头不对马尾,需要进行大量训练


########### Python 3.6 #############

#
# This quickstart shows how to predict the intent of an utterance by using the LUIS REST APIs.
# 导入模块
import requests

try:
    ##########
    # Values to modify.
    # YOUR-APP-ID: The App ID GUID found on the www.luis.ai Application Settings page.
    # 替换为自己的APP-ID
    appId = '949d3538-07df-4149-bee8-83dc7f4e11bd'
    # YOUR-PREDICTION-KEY: Your LUIS prediction key, 32 character value.
    prediction_key = '24440ef2829c45f0a061599ee00b496a'
    # YOUR-PREDICTION-ENDPOINT: Replace with your prediction endpoint.
    # For example, "https://westus.api.cognitive.microsoft.com/"
    prediction_endpoint = 'https://chatbot0.cognitiveservices.azure.cn/'
    # The utterance you want to use.
    # 你想和他说的话..
    utterance = '一个人怎么生活?'
    ##########
    # The headers to use in this REST call.
    headers = 
    

    # The URL parameters to use in this REST call.
    params =
        'query': utterance,
        'timezoneOffset': '0',
        'verbose': 'true',
        'show-all-intents': 'true',
        'spellCheck': 'false',
        'staging': 'false',
        'subscription-key': prediction_key
    


    # Make the REST call.
    response = requests.get(f'prediction_endpointluis/prediction/v3.0/apps/appId/slots/production/predict', headers=headers, params=params)

    # Display the results on the console.
    print(response.json())


except Exception as e:
    # Display the error string.
    print(f'e')

3、部署服务,启动和运行 LUIS环境准备

进入资源
按照部署要求一步步构建
拉取镜像
最好找个镜像加速器配置一下,要不太慢了

拉取镜像

┌──[root@liruilongs.github.io]-[/etc/docker]
└─$ docker pull mcr.microsoft.com/azure-cognitive-services/luis
Using default tag: latest
latest: Pulling from azure-cognitive-services/luis
b248fa9f6d2a: Pull complete
406741bedf7a: Pull complete
0767c6f1d20a: Pull complete
3687afaf861f: Pull complete
095d858c817b: Pull complete
45c05f18f223: Pull complete
ce065679c887: Pull complete
Digest: sha256:3583c9034a6e8f4ec78b2cf8d880d7eab7d960deebfc5ebd03853cffcdb879f0
Status: Downloaded newer image for mcr.microsoft.com/azure-cognitive-services/luis:latest
mcr.microsoft.com/azure-cognitive-services/luis:latest
┌──[root@liruilongs.github.io]-[/etc/docker]
└─$ # 嗯,这个镜像好似做这个没啥用,后面用的不是这个。

安装并运行 LUIS 的 Docker 容器

运行步骤
必需的参数:所有认知服务容器都需要三个主要参数。 最终用户许可协议 (EULA) 的值必须为 accept。 此外,终结点URLAPI密钥都是必需的。
┌──[root@liruilongs.github.io]-[/liruilong]
└─$ mkdir input output
┌──[root@liruilongs.github.io]-[/liruilong]
└─$ ls
input  luis_run.sh  output
┌──[root@liruilongs.github.io]-[/liruilong]
└─$ cat luis_run.sh
docker run --rm -it -p 5000:5000 --memory 4g --cpus 2 -v $PWD/input:/input -v $PWD/output:/output mcr.microsoft.com/azure-cognitive-services/language/luis Eula=accept Billing=https://chatbot0.cognitiveservices.azure.cn/ ApiKey=24440ef2829c45f0a061599ee00b496a  ##这里参数填自己的
┌──[root@liruilongs.github.io]-[/liruilong]
└─$ docker run --rm -it -p 5000:5000 --memory 4g --cpus 2 -v $PWD/input:/input -v $PWD/output:/output mcr.microsoft.com/azure-cognitive-services/language/luis Eula=accept Billing=https://chatbot0.cognitiveservices.azure.cn/ ApiKey=24440ef2829c45f0a061599ee00b496a  ## 启动容器


EULA Notice: Copyright © Microsoft Corporation 2020. This Cognitive Services Container image is made available to you under the terms [https://go.microsoft.com/fwlink/?linkid=2018657] governing your subscription to Microsoft Azure Services (including the Online Services Terms [https://go.microsoft.com/fwlink/?linkid=2018760]). If you do not have a valid Azure subscription, then you may not use this container.


Using '/input' for reading models and other read-only data.
Using '/output/luis/ff2a18ee78a1' for writing logs and other output data.
Logging to console.
Submitting metering to 'https://chatbot0.cognitiveservices.azure.cn/'.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured. Key d826e89b-febe-4b93-bad8-db07cb994012 may be persisted to storage in unencrypted form.
warn: Microsoft.AspNetCore.Server.Kestrel[0]
      Overriding address(es) 'http://+:80'. Binding to endpoints defined in UseKestrel() instead.
Hosting environment: Production
Content root path: /app
Now listening on: http://0.0.0.0:5000
Application started. Press Ctrl+C to shut down.

测试
查看接口API

嗯,太晚了,剩下的明天写…

韦博给我上了一堂课,让我学会以后,好好看合同。

...的男孩子说他说上海大学的学生,要表演一个魔术给我。来不及想他就开始了。表演完才开始说他是韦博的人。说他还有最后一个名额就下班了。各种哀求我还有两个漂亮的女孩子。因为我之前有一个同事 查看详情

it屌丝如何获取改变自己的真正内心动力

...真的回避不了了,才会被动的改变,被动改变结果往往是来不及的,或者花的代价相当高,获得的回报又比较低!改变自己越早越好!成功的人一般都是能够控制自己天性本能的人(控制情绪,控制行动,控制说话)往往成功的... 查看详情

什么时候懂得了拒绝,才算真正长大了

  学会拒绝,是人长大后要具备的第一能力。或者,换一种说法就是:什么时候懂得了拒绝,才算真正长大了。  施予,是帮助他人。拒绝,是保护自己。在帮助他人之前,先学会保护自己,我觉得一点错也没有。合格的崇... 查看详情

大道至简

...的过程。成长是做加法,而成熟是做减法。我们慢慢学会了从“接受”——“承受”——“享受”,我们慢慢学会了接受现在的自己,因为接受=快乐,抗拒=痛苦。我发现大家在学习过程中都 查看详情

学会有效管理自己知识:思考+总结+分享

做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!知道却讲不出来,或许也等于不知道!知道≠能做到|知道≠能讲出?昨天听了一个音频,里面说:“知道很多道理却依然过不好这一生”!知... 查看详情

谁也没有想到,区块链还能用来熬鸡汤!

区块链环境这几个月渐渐冷清下来,和之前的热闹完全不一样。  之前的朋友圈里不是这个发布会就是那个路演展,大家都忙得不亦乐乎,大有一种和过去告别,拥抱美好新生活的意思,一下子好像又回到了几年前大街小巷都... 查看详情

oo第二次博客

...时间就比较紧张了,这样再写的话,前两次的作业就只有来不及写完这个结果了,有时候在想,自己的想法已经有了成熟的模型,然而就是因为对时间与自己手速的错误估计,导致了这种结果的发生。虽然这样,但是我丝毫不后... 查看详情

刚步入社会的我们

  成长让我们懂得真情,成长让我们学会珍惜,成长让我们感受真实,成长让我们体会自我。走过成长的岁月,我们将走向成熟,真正的成长,是思想的成熟。成长中的快乐,成长是缓缓流淌的溪流。悄然地,我们就长大了。... 查看详情

富婆闺蜜非让我用python给她写个淘宝双十一抢购脚本,那只能安排了(代码片段)

...年双十一就要剁一只手的姐妹是种什么体验?在没有学会Python的时候,就是让我给她各种抢券,现在学会一点Python,就让我给她写个抢购脚本,哎!有什么办法呢,是自己的惯的那也只能宠着了。::::::h... 查看详情

富婆闺蜜非让我用python给她写个淘宝双十一抢购脚本,那只能安排了(代码片段)

...年双十一就要剁一只手的姐妹是种什么体验?在没有学会Python的时候,就是让我给她各种抢券,现在学会一点Python,就让我给她写个抢购脚本,哎!有什么办法呢,是自己的惯的那也只能宠着了。::::::h... 查看详情

ubuntu卸载了ibus输入法,状态栏图标却还在

如题,卸载了ibus换了搜狗,结果状态栏就有俩图标了。。。。。。怎么把原来ibus的那个删掉哇参考技术A在新德利软件里察看有没有残留的ibus删掉或者在软件中心删除也可以然后sudoapt-getautoremove 查看详情

心得只有当你去做了,你才能真正体会它

...,这游戏挺好玩的,你也可以下一个,我当时已经不是很抗拒这款游戏了,于是就下了一个来玩,嘿,觉得还挺好玩的,当天晚上就玩到两点多钟,此后的几天皆是如此,包括今天,手机没电了才 查看详情

适度冷淡的人,是很多人应该学会做的事。

 在芬兰漫画家KaroliinaKorhonen创作的漫画中,头戴着芬兰帽的圆球人马蒂,十分生动地诠释了这种距离感在芬兰人生活中的日常体现这并不是不友好,相反,他们为了照顾对方的感受,宁愿选择牺牲自身利益。正因为“人们总... 查看详情

适度冷淡的人,是很多人应该学会做的事。

 在芬兰漫画家KaroliinaKorhonen创作的漫画中,头戴着芬兰帽的圆球人马蒂,十分生动地诠释了这种距离感在芬兰人生活中的日常体现这并不是不友好,相反,他们为了照顾对方的感受,宁愿选择牺牲自身利益。正因为“人们总... 查看详情

2020开工大吉

...节,没有往常春节的热闹,让大家明白了什么叫做珍惜。学会珍惜身边人,学会感恩帮助过自己的人。新的一年,还有很多东西需要学习。今年的任务:1、数学和算法(算法学习,leetcode刷题),今年的主要任务。2、html,主要... 查看详情

掌握真正科学的学习方法——学会如何学习(learninghowtolearn)课程笔记

LearningHowtoLearn是Coursera平台上最热门的在线课程之一。当年本来只是看这个课程标题很有意思,所以抱着猎奇的心态点进去随便看看,没想到还真有点东西。简单来说,这门课程是以大脑认知的底层科学原理为基础... 查看详情

程序猿们,再不行动就来不及了!

引言    再不行动就来不及了!  今天这篇文章。不是技术。不是鸡汤,而是一篇对未来畅想的好(shui)文。  记得之前在群里聊天的时候。以前有群友问LZ。“群主,你怎么近期不在群里聊技术。也不写技术文章了?... 查看详情

jenkins构建被中断脚本却还在执行

JobA+gitclean-df构建被中断被XXX终止Finished:ABORTED  再次jenkins调用JobA后台进程中出现了两个JobA的脚本同时执行,导致一些莫名其妙的问题~~ 环境:Windows2008R2+GitbashShell  windows下执行shell真的很蛋疼.尽快到linux下,或许莫... 查看详情