价值2个亿的代码

前两天朋友圈里看到一段号称“价值一亿”的代码:

可以智能应答,很厉害是不是?

源码:

Python 极简版:

while True:    print(input('').replace('吗','').replace('?','!'))

其实就是几个字符替换!抖了个机灵,也顺便黑了把当下某些言必称 AI 的风气。你别说,当年区块链概念火爆的时候,还真有人代码里放了个“Hello World”就出来诓钱了。风口之下,什么样的妖魔鬼怪都有。

不过真要自己做一个自动应答的机器人,其实也很简单,而且功能还比上面这位更强大。

方法一:ChatterBot 模块

ChatterBot 是一个生成自动应答的第三方库。一个简单的例子:

from chatterbot import ChatBot
# 生成机器人,指定输入输出和训练器
chatbot = ChatBot(
   'CrossinBot',    input_adapter='chatterbot.input.TerminalAdapter',    output_adapter='chatterbot.output.TerminalAdapter',    trainer='chatterbot.trainers.ChatterBotCorpusTrainer'
)
# 以中文语料进行训练
chatbot.train('chatterbot.corpus.chinese') print('你好,请问需要什么帮助?')
# 循环问答
while True:
   try:        bot_input = chatbot.get_response(None)
   except (KeyboardInterrupt, EOFError, SystemExit):
       # CTRL-C/CTRL-D 中断退出        break

效果:

使用 ChatterBot 的好处是问答数据保存在本地,无需联网。缺点则是你需要自己去训练你的机器人,默认语料的效果其实挺差的,一开始聊天差不多就是人工智障……而且通过聊天的过程学习,也存在被用户“教坏”的问题。

官方文档地址:
chatterbot.readthedocs.io

方法二:开放 AI 接口

鉴于方法一的问题,有很多平台提供了智能应答的 API 接口服务。以腾讯 AI 开放平台的“智能闲聊”接口为例:

import requests as rq
import time
import random
import string
import urllib
import hashlib APPKEY = 'ABDEFGH'  # 换成你的APPKEY

def get_sign(data):    lst = [i[0]+'='+urllib.parse.quote_plus(str(i[1])) for i in data.items()]    params = '&'.join(sorted(lst))    s = params + '&app_key=' + APPKEY    h = hashlib.md5(s.encode('utf8'))
   return h.hexdigest().upper()

def chat(question):        url_chat = 'https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat'    nonce_str = ''.join(random.sample(string.ascii_letters + string.digits, 16))    data = {
       'app_id': 1234567890,  # 换成你的app_id        'time_stamp': int(time.time()),
       'nonce_str': nonce_str,
       'session': '10000',
       'question': question,    }    data['sign'] = get_sign(data)    r = rq.post(url_chat, data=data)    answer = r.json()['data']['answer']
   return answer print('你好,请问需要什么帮助?')
while True:
   try:        print(chat(input()))
   except (KeyboardInterrupt, EOFError, SystemExit):
       # CTRL-C/CTRL-D 中断退出        break

效果:

这个效果显而易见。但接口的前提是要联网,另外平台通常会有请求频率或功能的限制。现在很多平台还都可免费申请使用,部分特性可能需要付费。开放平台的好处是开发者可以不用费事就能得到很好的结果,不过要深度定制就不太方便,另外核心技术和数据也都是平台方的。

如果说前面那段代码可以估值一亿,拿个天使轮投资。那我这两段代码怎么也得值2个亿吧,可以直接A轮了。记得到时把咨询费打赏给我

玩笑归玩笑,但以上三段代码,也的确代表了三种开发方式:

  1. 自己实现

  2. 用第三方框架/库/代码

  3. 用 API 接口服务

在实际开发中,尤其是非核心功能,通常不建议自己从头实现,即“不重复造轮子”。因为很可能已经有成熟的开源项目做得比你好,站在前人的肩膀上可以事半功倍。这也是软件/互联网行业得以蓬勃发展的基石。但在使用开源项目和代码时也要尊重知识产权,注意人家的协议,是否可以商用,很多接口和数据也是有限制的。并不是你能拿到代码、能扒出接口、爬到数据,就可以放到自己的产品中。这方面有不少规矩,不按规矩来,即侵犯了别人的利益,也可能让自己掉坑里。下次可以来细说一下。

(0)

相关推荐

  • PyWebIO:像编写终端脚本一样来编写Web应用

    Python爱好者社区 来源:Python中文社区 导言 最开始学习写代码的时候,程序都是运行在终端里的,输入使用input()或者scanf(),输出使用print之类的函数进行交互.相信每个人对这 ...

  • 与奇点机智一起,探寻电商智能客服的“致命细节”|白洞战报

    "我说了半天,它就只会装听不懂" "一言不合就开始卖萌" "超简单的问题都回答的驴头不对马嘴" -- 这年头只要网上购物,被聊天机器人.&q ...

  • 各种注意力机制,MLP,Re-Parameter系列的PyTorch实现

    作者:xmu-xiaoma666 编译:ronghuaiyang 导读 给出了整个系列的PyTorch的代码实现,以及使用方法. 各种注意力机制 Pytorch implementation of ' ...

  • Java编程入门:模拟双色球

    不知道大家有没有买过彩票,买彩票要中奖可能很难,但是写出一个彩票的Java代码可是简单好多.今天给大家分享双色球的程序,不到50行代码就搞定,无规律,随机生成. 代码如下: import java.u ...

  • 爬虫精进6

    ---------如有疑问,欢迎交流指正-------- 第6关 练习-储存电影信息-参考 第一步:分析问题,明确结果 问题需求就是把豆瓣TOP250里面的 序号/电影名/评分/推荐语/链接 都爬取下 ...

  • 5G消息商业模式渐露雏形

    近日,中国电信和中国联通完成了本应于去年完成的5G消息系统(RCS)建设工程联合集中采购,中兴和华为成为5G消息系统主要设备提供商.早在去年8月,中国移动已经完成设备采购.这意味着三大运营商的5G消息 ...

  • 一行Python代码

    Life is short, just use Python. 自从08年接触Python,就有爱不释手的感觉,逐渐地,有些不忍地疏远了Perl 和Shell编程,因为python 的优雅么? 不全是 ...

  • Python 5 行代码的神奇操作!

    来源:Python 技术「ID: pythonall」 Python 语言实现功能直接了当,简明扼要,今天咱们就来一起看看 Python 5 行代码的神奇操作! 我能行 1.古典兔子问题 有一对兔子, ...

  • Pythonic 到底是什么,从 try finally 到 with 的感悟

    不要费心编写 Python 已经完成的东西,因为您无法编写更好的东西. 学习 Python 的第一节课不仅仅是 "Hello World",相信也有"Python 之禅& ...

  • Angular Reactive Form 的一个具体使用例子

    在 module 实现里,务必导入下列 module: import { ReactiveFormsModule } from '@angular/forms'; template 实现代码: < ...

  • 使用Angular和ng-bootstrap创建一个输入地址

    在本文中,您将逐步学习如何创建输入地址组件.当我们想要节省空间并更好地在表单中组织输入时,此功能很有用. 用户可以轻松地从一个位置读取和操作地址字段.我们组件的最终输出将如下图所示: 背景 在开始之前 ...