贾浩楠 发自 凹非寺
量子位 报道 | 公众号 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

感谢你的分享,点赞,在看三连↓

厉害了!写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了...相关推荐

  1. 写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 无论你是编程小白还是老司机,coding过程中总会遇到不懂的问题. 最常见的方法是去论坛询问.谷歌搜索,需要反复在网页和编译器页面切换,即 ...

  2. GitHub 又一开源神器!写代码、搜问题,全部都在「终端」完成!

    来自量子位 无论你是编程小白还是老司机,coding过程中总会遇到不懂的问题. 最常见的方法是去论坛询问.谷歌搜索,需要反复在网页和编译器页面切换,即使有两个很大的分屏,生产力也会受到影响. 但是现在 ...

  3. HighNewTech:来到了21世纪的第3个十年,各行业数字化迫在眉睫,全民编程也势不可挡。但,问题来了,编程,一定需要写代码么?那么,传说中的iVX工具,与编程到底又有什么暧昧关系?

    High&NewTech:来到了21世纪的第3个十年,各行业数字化迫在眉睫,全民编程也势不可挡.但,问题来了,编程,一定需要写代码么?那么,传说中的iVX工具,与编程到底又有什么暧昧关系? 导 ...

  4. 每个程序员都可以「懂」一点 Linux

    点击上方"马蜂窝技术",关注订阅更多优质内容 提到 Linux,作为程序员来说一定都不陌生.但如果说到「懂」Linux,可能就没有那么多人有把握了.到底用 Linux 离懂 Lin ...

  5. ms查约束具体代码_程序员写代码之前应该做的5件事,看完编程效率瞬间提升

    作者:borisyang,腾讯 WXG 应用开发工程师 作为程序员,刚刚开始学会写代码,常常是接过需求就开始撸代码.有时候发现,写完代码,需求变了.更多时候,觉得写业务代码枯燥无聊,没有技术含量.另外 ...

  6. 九大互联网公司隐形「骗局」,知道的人都被「灭口」了

    导读:潜伏多家互联网公司后,我们发现了大厂的秘密-- ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 本文转载自:后浪研究所 ID:youth36kr 有人说,90.95后痴迷互联网大厂的 ...

  7. 12岁写代码,为数百万程序员引路,这位世界级编程大师不简单

    点击上方"程序员知识码头",选择"设为星标" 回复"666"获取新整理的面试资料 Robert C. Martin,世界级编程大师,设计模式 ...

  8. 戴森新一代Airwrap多功能造型器评测:现在都这么「卷」了吗?

    [来源/哎咆科技]我发现,哎妹这几年上班的造型越来越潦草,有时候顶着大油头,有时候头发像鸡窝,能简单扎个马尾已经算很用心了,完全没有一开始时候的女神范儿-问起来,她给出的理由是,没有时间!不会操作! ...

  9. 敲代码时如何快速移动光标_「ABB」ABB机器人快速示教上手指南

    一.机器人安全操作守则 由于机器人系统复杂而且危险性大,在练习期间,对机器人进行任何操作都必须注意安全.无论什么时候进入机器人工作范围都可能导致严重的伤害,只有经过培训认证的人员才可以进入该区域. 以 ...

最新文章

  1. 2、Android应用程序基本特性
  2. fon循环总是返回最后值问题
  3. 轻操作动作休闲单机游戏《狂斩三国2》评测
  4. java栈顶元素_栈在Java类库中的实现
  5. 服务器执行sh文件或目录,将window的shell脚本通过ftp传输到Linux服务器后, shell脚本中执行时提示“没有那个文件或目录”的解决办法...
  6. elasticsearch-head后台运行
  7. 高中计算机思维导图,为高中信息技术教学插上思维导图翅膀
  8. quartus仿真24:数据选择器MUX四选一74153八选一74151
  9. 基于videojs 实现javascript弹幕功能
  10. html play控件,HTML DOM Video play()用法及代码示例
  11. adf的主要功能之一是_ADF 入门第一步系列
  12. UI设计师必备10大工具
  13. 第三次作业--原型设计
  14. freeswitch实战八(动态生成拨号计划)
  15. 讯飞——机器翻译,iOS的webapi接入教程
  16. 2012淘宝关键字优化淘宝关键字SEO优化助手|淘宝关键字SEO优化
  17. 2023年机器人与人工智能国际会议(JCRAI 2023)
  18. web前端 --- CSS(04) -- 盒子模型、div+css网页布局、css3新特性
  19. 编译Android系统源码--搭建环境
  20. 手机office不登录 手机office不联网 手机office查询功能

热门文章

  1. 秦州:西瓜书 + 南瓜书 吃瓜系列 14. 降维与度量学习(下)
  2. 《C#精彩实例教程》小组阅读06 -- C#运算符与表达式
  3. 如何利用C#开发“通讯录”小程序
  4. SURF 特征检测及匹配
  5. 细化 Sobel 边缘提取
  6. html在线缓存视频,javascript – 如何为HTML视频添加缓冲
  7. 关于机器学习,不可不知的15个概念
  8. Teradata推出Vantage on Azure,可实现自助配置、快速部署,提供安全、可扩展的高性能分析
  9. 谷歌编程语言年度榜NO.1:知识体系总结(2021版)
  10. 今晚20:00 | 港科大郑光廷院士详解人工视觉技术发展及应用