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

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

好课推荐 | 0基础学Python

《动手学Python》课程由上海交大博士教研团队研发,在线学习平台由上海交大AI实验室技术支持,旷视、文远知行、图森未来、来也科技等知名AI企业CEO/CTO力荐

0基础可入门,限时开放体验课!扫码即刻开启Python学习之旅:

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见~

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. 如何让macOS的「终端」走代理

    很多使用 Mac 的用户都很喜欢从 HomeBrew 下载管理第三方应用程序,并推荐给刚入门的小白们.但是小白们通过 HomeBrew 获取安装命令并输入到终端后,却发现总是连接失败. 当然,这是因为 ...

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

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

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

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

最新文章

  1. System.err: java.lang.UnsatisfiedLinkError: dlopen failed: library “libc++_shared.so“ not found
  2. 解题报告:luogu P3916 图的遍历( 缩点 + DFS ? × 思维 + 反向建边 + DFS √ )
  3. C++ size_t 与 size_type区别
  4. 稳扎稳打Silverlight(29) - 2.0Tip/Trick之Cookie, 自定义字体, 为程序传递参数, 自定义鼠标右键...
  5. Xml xpath samples
  6. SP2010开发和VS2010专家食谱--第二章节--工作流
  7. GIT提交的时候出现 ! [rejected] master -> master (non-fast-forward)错误
  8. linux hive mysql_Linux下的Hive与Mysql安装
  9. erp系统原理和实施第五版pdf_【图片】生产制造企业ERP系统选型及实施“避坑”指南!【企业管理软件吧】...
  10. xml转化为Dictionary
  11. mysql 多个值求和_SQL优化大神玩转MySQL函数系列(2)LEAST,SUM的应用
  12. Java 算法 换零钞
  13. 【js】【前台输入效验】【validate插件的使用】 前端
  14. Atitit 歌词成语提取项目 nlp 人工智能项目 目录 1.1. 流程 首先搜集3w成语词库 1 1.2. 歌词常用成语400个 按照拼音排序 1 1.1.流程 首先搜集3w成语词库 放入m
  15. MEM专业学位论文选题与研究设计
  16. 3DLC系列之:自动匹配颜色
  17. 别让just do it 误导了你
  18. java计算机毕业设计房屋租赁系统源码+数据库+系统+lw文档+部署
  19. 人工智能(Artificial Intelligence-AI)、机器学习(Machine Learning)、深度学习(Deep Learning)之间区别
  20. Android开发我音乐App

热门文章

  1. 从父页面在iframe中调用JavaScript代码
  2. 手把手教你实现一个 Vue 进度条组件!
  3. QuickBI助你成为分析师-数据建模(一)
  4. Python之字符串格式化(format)
  5. NodeJS和C++之间的类型转换
  6. Mac环境下sublime实现列选择或编辑的方法
  7. 使用async/await——Nodejs+ExpressJs+Babel
  8. Centos6.4安装ipython
  9. 当用户控件有异动时,网页某部位作出相应变化
  10. 如何让java代码保存一天内的记录_Java的JVM解读