公众号关注“杰哥的IT之旅”,
选择“星标”,重磅干货,第一时间送达!
来自量子位
无论你是编程小白还是老司机,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/
回复关键词 「CDN」,即可获取 89 页 CDN 排坑指南手册
回复关键词 「ECS」,即可获取 96 页 ECS 运维 Linux 系统诊断手册
回复关键词 「linux」,即可获取 185 页 Linux 工具快速教程手册
回复关键词 「Python进阶」,即可获取 106 页 Python 进阶文档 PDF
回复关键词 「Python自动化」,即可获取 97 页自动化文档 PDF
回复关键词 「Excel数据透视表」,即可获取 136 页 Excel数据透视表 PDF
回复关键词 「Python最强基础学习文档」,即可获取 68 页 Python 最强基础学习文档 PDF
回复关键词 「wx」,即可加入杰哥的IT之旅读者交流群
回复关键词 「ECS」,即可获取 96 页 ECS 运维 Linux 系统诊断手册
回复关键词 「linux」,即可获取 185 页 Linux 工具快速教程手册
回复关键词 「Python进阶」,即可获取 106 页 Python 进阶文档 PDF
回复关键词 「Python自动化」,即可获取 97 页自动化文档 PDF
回复关键词 「Excel数据透视表」,即可获取 136 页 Excel数据透视表 PDF
回复关键词 「Python最强基础学习文档」,即可获取 68 页 Python 最强基础学习文档 PDF
回复关键词 「wx」,即可加入杰哥的IT之旅读者交流群
m
」获取!推荐阅读: 1、Python 爬取链家成都二手房源信息 asyncio + aiohttp 异步爬虫实战
2、绝了!搜狗输入法这骚操作!
3、10 个冷门但又非常实用的 Docker 使用技巧!
4、利用 Shell 脚本实现邮件监控 Linux 系统的内存
5、什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站…z站?
6、拥有此神技,脚本调试从此与 echo、set、test 说分手!
2、绝了!搜狗输入法这骚操作!
3、10 个冷门但又非常实用的 Docker 使用技巧!
4、利用 Shell 脚本实现邮件监控 Linux 系统的内存
5、什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站…z站?
6、拥有此神技,脚本调试从此与 echo、set、test 说分手!
点个[在看],是对杰哥最大的支持!