敲代碼遇到難題怎么辦?這個項目無需聯網也能幫你找到解決方案
許多開發人員在編程過程中碰到問題,首選都是打開瀏覽器,搜索問題,并嘗試找出答案,現在,有一個神器可以讓你不用這么麻煩了。
這個名為codequestion的神器,是一個基于archive.org上的Stack Exchange Dump構建的。使用來自Stack Exchange的數據,codequestion針對預先訓練的模型在本地運行。
安裝后你無需網絡連接,你只需要在終端輸入問題,就可以得到答案,搜索出來的結果和你在瀏覽器上搜索的沒有什么兩樣。
目前,codequestion知道的人并不是很多,只獲得 117 個Star,累計分支 11 個(Github地址:https://github.com/neuml/codequestion),下面一起來看看具體使用方法:
安裝方式
最簡單的安裝方式是通過pip和PyPI:
- pip install codequestion
你也可以直接從GitHub安裝codequestion。建議使用Python虛擬環境,支持Python 3.6+:
- pip install git+https://github.com/neuml/codequestion
下載模型
一旦安裝了Codequestion,就需要下載模型。
- python -m codequestion.download
該模型將存儲在〜/ .codequestion /中,預訓練的模型可以從Github詳情頁面獲取
- $ git reset --hard
可以自定義代碼問題以針對自定義的問題解答存儲庫運行,目前,僅支持Stack Exchange模型。
運行查詢
運行查詢最快的方法是啟動一個codequestion shell
- $ git reset --hard
技術原理
原始數據轉儲處理:codequestion的運行原理是怎樣的呢?首先是原始數據轉儲處理,來自Stack Exchange庫的原始7z XML轉儲通過一系列步驟進行處理。僅檢索得分高且得分高的問題存儲,問題和答案被合并到一個名為questions.db的SQLite文件中。questions.db的模式如下:
- $ git reset --hard
索引編制:codequestion工具為questions.db建立了一個句子嵌入索引。單詞嵌入模型是基于questions.db構建的自定義fastText模型。一旦將每個標記轉換為單詞嵌入,就會創建加權句子嵌入。詞嵌入使用BM25索引對資源庫中的所有token進行加權。但有一個重要的修改:標簽被用來提升標簽標記的權重。將questions.db轉換為句子嵌入的集合后,會將它們標準化并存儲在Faiss中,從而可以進行快速相似性搜索。
查詢方式:codequestion使用與索引相同的方法對每個查詢進行標記。這些標記用于構建句子嵌入。針對Faiss索引查詢該嵌入,以找到最相似的問題。
除此之外,創建者還在Github項目詳情頁介紹了如何使用Stack Exchange構建代碼問題模型。感興趣的伙伴們趕緊收藏。