厉害了!写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了...
贾浩楠 发自 凹非寺
量子位 报道 | 公众号 QbitAI
无论你是编程小白还是老司机,coding过程中总会遇到不懂的问题。
最常见的方法是去论坛询问、谷歌搜索,需要反复在网页和编译器页面切换,即使有两个很大的分屏,生产力也会受到影响。
但是现在这个问题有希望解决了,一个便捷编程Q&A工具codequestion可以帮到你。
直接在终端输入「你要问的问题」,用普通的自然语言就行,和你去谷歌搜索没什么两样。
然后马上就能返回详细操作教程,实现了直接在终端用对话形式来查询操作手册。
这么好用的工具安装起来也不复杂。
安装教程
安装codequestion最简单的方法是通过pip或PyPI:
pip install codequestion
当然,你也可以克隆Github上的项目到本地:
pip install git+https://github.com/neuml/codequestion
安装codequestion需要Python 3.6版本以上。
对于Linux系统来说,可以直接运行项目,但是Windows和Mac需要安装额外项。
Windows需要安装C++ Build Tools,地址如下:
https://visualstudio.microsoft.com/visual-cpp-build-tools/
PyTorch Windows的二进制文件不在PyPI上,安装时必须添加以下url链接:
pip install txtai -f https://download.pytorch.org/whl/torch_stable.html
对于Mac来说,安装前需要运行这个命令:
brew install libomp
安装步骤已经完成了,接下来看看实例测试吧
AI驱动的问答机制
codequestion下载完成以后,还需要安装一个模型。
python -m codequestion.download
这个模型的核心就是作者David Mezzetti之前开发的AI算法txtai。
txtai支持构建文本索引,执行相似性搜索,并创建基于提取式问题回答的系统。
作者还提供了预训练的模型:
unzip cqmodel.zip ~/.codequestion
codequestion是可以定制的,可以针对自定义的问答库运行。目前,只支持Stack Exchange库中的问题帮助,未来会有更多的支持选项。
完成模型安装后,可以通过以下命令运行测试:
mkdir -p ~/.codequestion/test/stackexchange
wget https://raw.githubusercontent.com/neuml/codequestion/master/test/stackexchange/query.txt -P ~/.codequestion/test/stackexchange
wget http://ixa2.si.ehu.es/stswiki/images/4/48/Stsbenchmark.tar.gz
tar -C ~/.codequestion/test -xvzf Stsbenchmark.tar.gz
python -m codequestion.evaluate -s test
代码中包含将测试数据下载到〜/ .codequestion / test中。
下面的表格显示了各种词向量/评分组合的测试结果。
SE 300d单词向量与BM25评分在这个数据集中表现最好。即使减少了词汇量的Stack Exchange问题,SE 300d - BM25在STS基准测试中的表现也相当不错。
之前,量子位也介绍过一个相似的Linux命令行查询工具,也是直接在终端输入问题,返回答案。
不同的是,当时的工具howdoi是在在线技术论坛上搜索已有答案,范围比较有限。
那么这次介绍的codequestion的AI驱动机制,有什么先进之处呢?
基本原理
第一步:原始数据转储处理
来自Stack Exchange库的原始7z XML转储通过一系列步骤进行处理。
只有高分的问题和答案才会被检索到,并存储在模型中。
问题和答案被整合到一个名为questions.db的单一SQLite文件中。questions.db 的模式如下:
Id INTEGER PRIMARY KEY
Source TEXT
SourceId INTEGER
Date DATETIME
Tags TEXT
Question TEXT
QuestionUser TEXT
Answer TEXT
AnswerUser TEXT
Reference TEXT
第二步:检索
codequestion工具为questions.db建立了一个句子嵌入索引。
questions.db模式中的每个问题都会被标记,并解析为单词嵌入。
词嵌入模型是建立在questions.db上的自定义fastText模型。一旦某个token被转换为单词嵌入,就会创建一个加权的句子嵌入。
词嵌入使用BM25索引对资源库中的所有token进行加权。但有一个重要的修改:标签被用来提升标签标记的权重。
一旦question.db被转换为句子嵌入的集合,它们就会被归一化并存储在Faiss中,从而可以进行快速的相似性搜索。
第三步:查询
codequestion使用与索引相同的方法对每个查询进行标记。这些标记被用来建立一个句子嵌入。根据Faiss索引对该嵌入句进行查询,以找到最相似的问题。
离线开发好帮手
可以看出,这个codequestion工具的优势在于灵活的搜索匹配问题,并且能够根据问题回答的质量优先推选好的回答。
这一点是类似工具使用关键词匹配搜索答案无法比拟的。
目前codequestion的局限在于只支持Stack Exchange中的问题,但是,作者承诺后期会加入更多的库。
不少网友都反应,这个工具十分实用,尤其是它支持本地库中的问答机制,对于有离线开发需求的码农来说,帮助颇巨。
怎么样?如果这个工具对你有用,那就赶快上手操作吧~
参考链接&传送门:
Github地址:
https://github.com/neuml/codequestion
C++ Build Tools安装地址:
https://visualstudio.microsoft.com/visual-cpp-build-tools/
量子位之前介绍过的Linux命令行查询工具:
https://mp.weixin.qq.com/s/5vfQRsAZ4zEKOJnUNT8Ebg
感谢你的分享,点赞,在看三连↓
厉害了!写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了...相关推荐
- 写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了
贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 无论你是编程小白还是老司机,coding过程中总会遇到不懂的问题. 最常见的方法是去论坛询问.谷歌搜索,需要反复在网页和编译器页面切换,即 ...
- GitHub 又一开源神器!写代码、搜问题,全部都在「终端」完成!
来自量子位 无论你是编程小白还是老司机,coding过程中总会遇到不懂的问题. 最常见的方法是去论坛询问.谷歌搜索,需要反复在网页和编译器页面切换,即使有两个很大的分屏,生产力也会受到影响. 但是现在 ...
- HighNewTech:来到了21世纪的第3个十年,各行业数字化迫在眉睫,全民编程也势不可挡。但,问题来了,编程,一定需要写代码么?那么,传说中的iVX工具,与编程到底又有什么暧昧关系?
High&NewTech:来到了21世纪的第3个十年,各行业数字化迫在眉睫,全民编程也势不可挡.但,问题来了,编程,一定需要写代码么?那么,传说中的iVX工具,与编程到底又有什么暧昧关系? 导 ...
- 每个程序员都可以「懂」一点 Linux
点击上方"马蜂窝技术",关注订阅更多优质内容 提到 Linux,作为程序员来说一定都不陌生.但如果说到「懂」Linux,可能就没有那么多人有把握了.到底用 Linux 离懂 Lin ...
- ms查约束具体代码_程序员写代码之前应该做的5件事,看完编程效率瞬间提升
作者:borisyang,腾讯 WXG 应用开发工程师 作为程序员,刚刚开始学会写代码,常常是接过需求就开始撸代码.有时候发现,写完代码,需求变了.更多时候,觉得写业务代码枯燥无聊,没有技术含量.另外 ...
- 九大互联网公司隐形「骗局」,知道的人都被「灭口」了
导读:潜伏多家互联网公司后,我们发现了大厂的秘密-- 本文转载自:后浪研究所 ID:youth36kr 有人说,90.95后痴迷互联网大厂的 ...
- 12岁写代码,为数百万程序员引路,这位世界级编程大师不简单
点击上方"程序员知识码头",选择"设为星标" 回复"666"获取新整理的面试资料 Robert C. Martin,世界级编程大师,设计模式 ...
- 戴森新一代Airwrap多功能造型器评测:现在都这么「卷」了吗?
[来源/哎咆科技]我发现,哎妹这几年上班的造型越来越潦草,有时候顶着大油头,有时候头发像鸡窝,能简单扎个马尾已经算很用心了,完全没有一开始时候的女神范儿-问起来,她给出的理由是,没有时间!不会操作! ...
- 敲代码时如何快速移动光标_「ABB」ABB机器人快速示教上手指南
一.机器人安全操作守则 由于机器人系统复杂而且危险性大,在练习期间,对机器人进行任何操作都必须注意安全.无论什么时候进入机器人工作范围都可能导致严重的伤害,只有经过培训认证的人员才可以进入该区域. 以 ...
最新文章
- 2、Android应用程序基本特性
- fon循环总是返回最后值问题
- 轻操作动作休闲单机游戏《狂斩三国2》评测
- java栈顶元素_栈在Java类库中的实现
- 服务器执行sh文件或目录,将window的shell脚本通过ftp传输到Linux服务器后, shell脚本中执行时提示“没有那个文件或目录”的解决办法...
- elasticsearch-head后台运行
- 高中计算机思维导图,为高中信息技术教学插上思维导图翅膀
- quartus仿真24:数据选择器MUX四选一74153八选一74151
- 基于videojs 实现javascript弹幕功能
- html play控件,HTML DOM Video play()用法及代码示例
- adf的主要功能之一是_ADF 入门第一步系列
- UI设计师必备10大工具
- 第三次作业--原型设计
- freeswitch实战八(动态生成拨号计划)
- 讯飞——机器翻译,iOS的webapi接入教程
- 2012淘宝关键字优化淘宝关键字SEO优化助手|淘宝关键字SEO优化
- 2023年机器人与人工智能国际会议(JCRAI 2023)
- web前端 --- CSS(04) -- 盒子模型、div+css网页布局、css3新特性
- 编译Android系统源码--搭建环境
- 手机office不登录 手机office不联网 手机office查询功能
热门文章
- 秦州:西瓜书 + 南瓜书 吃瓜系列 14. 降维与度量学习(下)
- 《C#精彩实例教程》小组阅读06 -- C#运算符与表达式
- 如何利用C#开发“通讯录”小程序
- SURF 特征检测及匹配
- 细化 Sobel 边缘提取
- html在线缓存视频,javascript – 如何为HTML视频添加缓冲
- 关于机器学习,不可不知的15个概念
- Teradata推出Vantage on Azure,可实现自助配置、快速部署,提供安全、可扩展的高性能分析
- 谷歌编程语言年度榜NO.1:知识体系总结(2021版)
- 今晚20:00 | 港科大郑光廷院士详解人工视觉技术发展及应用