丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能 正文
發(fā)私信給AI研習社-譯站
發(fā)送

1

實例+代碼,你還怕不會構(gòu)建深度學習的代碼搜索庫嗎

本文作者: AI研習社-譯站 2018-08-07 09:53
導(dǎo)語:教你構(gòu)建深度學習的代碼搜索庫~

雷鋒網(wǎng)按:本文為AI研習社編譯的技術(shù)博客,原標題 How To Create Natural Language Semantic Search For Arbitrary Objects With Deep Learning,作者為 Hamel Husain 。

翻譯 | 陳濤  趙朋飛  汪星宇      校對 | 劉嬌      整理 | MY


本文展示了一個端到端的實例,說明如何構(gòu)建一個可以語義化搜索對象的系統(tǒng)。項目作者是 Hamel Husain 和 Ho-Hsiang Wu 。

實例+代碼,你還怕不會構(gòu)建深度學習的代碼搜索庫嗎

Hubot 的圖片

項目的動機:

不可否認的是,現(xiàn)代的搜索引擎非常強大:你可以隨時從互聯(lián)網(wǎng)上搜集到知識信息。美中不足的是,它還不是萬能的。在許多情況下,搜索只是被當做嚴格的關(guān)鍵字搜索,亦或者當對象不是文本時,搜索便無用武之地。此外,嚴格的關(guān)鍵字搜索不允許用戶進行語義化搜索,這意味著無法查詢到相關(guān)信息。

今天,我們分享一個可復(fù)現(xiàn)的最小可行性產(chǎn)品,以此來說明如何對任意對象進行 [語義搜索]!具體來說,我們將向您演示如何創(chuàng)建一個可對 python 代碼進行語義化搜索的系統(tǒng)——但該方法同樣可以被推廣到搜索其他實體(比如圖片或者聲音片段)

為什么語義搜索如此何令人興奮?考慮下下文的例子。

實例+代碼,你還怕不會構(gòu)建深度學習的代碼搜索庫嗎

對 python 代碼進行語義化搜索。*請參閱后文的免責申明

圖中提交的搜索查詢是「Ping REST api and return results」。然而,搜索能夠返回合理的結(jié)果,即使該結(jié)果的代碼和注釋中不包含單詞 Ping、REST 或 api。

這彰顯了語義搜索的強大之處:除了通過關(guān)鍵字,我們還可以通過意思搜索內(nèi)容,從而最大限度地提高了用戶找到所需信息的機會。語義搜索具有重要意義——比如,此搜索過程將允許開發(fā)人員在倉庫中搜索代碼,即使他們并不熟悉代碼的相關(guān)語法,亦或是沒能輸入正確的關(guān)鍵字。更重要的是,你可以將此方法推廣到其他對象的搜索,諸如圖片、音頻以及其他我們尚未想到的內(nèi)容。

如果這還不夠令人興奮,那么現(xiàn)在就演示一下當你讀完本教程后能夠構(gòu)建的系統(tǒng):

實例+代碼,你還怕不會構(gòu)建深度學習的代碼搜索庫嗎


有時候,當我無法建立一個漂亮網(wǎng)站時,我會使用 Jupyter notebooks 及其自定義魔術(shù)功能來創(chuàng)建演示。這是一種交互式演示工作的快速方法。


直觀了解構(gòu)建共享向量空間的過程

在深入了解技術(shù)細節(jié)之前,最好還是先對如何實現(xiàn)語義搜索有一個直觀了解。核心思想是將搜索文本和我們想要搜索的對象(代碼)表示在同一個共享向量空間中,如下所示:

實例+代碼,你還怕不會構(gòu)建深度學習的代碼搜索庫嗎

例子:文本 2 和代碼應(yīng)由類似的向量所表示,因為它們直接相關(guān)

目標是將代碼映射到自然語言的向量空間中,經(jīng)過余弦相似度的距離度量后,描述相同概念的(文本,代碼)組中的向量距離更近,而無關(guān)的(文本,代碼)組中的向量離得更遠。

有許多方法可以實現(xiàn)這一目標,然而我們將演示使用預(yù)訓(xùn)練模型的方法。該模型從代碼中提取特征,并對此模型進行微調(diào),從而將潛在代碼特征映射到自然語言的向量空間中。需要注意的是:我們在本教程中交替地使用術(shù)語向量和嵌入。


先修知識

在閱讀本教程之前,我們建議你先熟悉以下內(nèi)容:

  • 序列到序列模型:復(fù)習前一個教程中的知識會很有幫助。

  • 仔細閱讀這篇論文并充分理解其中提出的方法。我們在本文中使用了相似的概念。


概述:

本教程將分為 5 個具體步驟。這些步驟如下圖所示,可以作為你閱讀教程時的一個有用參考。當你完成教程后,回看此圖將有助于你進一步了解所有步驟是如何組合在一起的。

實例+代碼,你還怕不會構(gòu)建深度學習的代碼搜索庫嗎

本教程的思維導(dǎo)圖。高清版本在這里

1-5 的每個步驟對應(yīng)于這里的 Jupyter notebook。我們將在后文詳細討論每個步驟。


第一部分——獲取和解析數(shù)據(jù)

第一部分筆記

谷歌公司收集了開源社區(qū) GitHub 中的數(shù)據(jù),并將其存儲于 BigQuery 中。這是一個很好的公開數(shù)據(jù)集,適用于各種有趣的數(shù)據(jù)科學項目,也包括本項目!當你注冊了 Google Cloud 賬號后,你將會得到 300 美元,這足以查詢到此次練習所需要的數(shù)據(jù)。獲取數(shù)據(jù)非常方便,因為你可以使用 SQL 查詢語句來選擇要尋找的文件類型以及其他關(guān)于倉庫的元數(shù)據(jù),例如提交數(shù)和打星數(shù)等。

筆記中介紹了獲取數(shù)據(jù)的步驟。幸運的是,一些谷歌 Kubeflow 團隊中的牛人已經(jīng)完成了這些步驟,并且貼心地存放好了此次練習需要用到的數(shù)據(jù),詳見其中的信息。

搜集到數(shù)據(jù)后,我們需要將這些文件解析為(代碼,文檔字符串)組形式的數(shù)據(jù)。對于本教程,一個代碼單元可以是頂級函數(shù)可以是方法。我們希望收集這些數(shù)據(jù)組作為模型的訓(xùn)練數(shù)據(jù),該模型能對代碼進行概括(具體我們過會再說)。我們還想刪除代碼中的所有注釋,只保留代碼本身。這似乎是一項艱巨的任務(wù)。但是在 Python 的標準庫中有 ast 庫,其可用于提取函數(shù)、方法和文檔字符串。我們可以通過先將代碼轉(zhuǎn)換為抽象語法樹,然后使用 Astor 包將其轉(zhuǎn)回代碼,從而將代碼中的注釋刪除。本教程不涉及抽象語法書及其相關(guān)工具的工作原理,但這些都是非常有趣的主題。

實例+代碼,你還怕不會構(gòu)建深度學習的代碼搜索庫嗎

關(guān)于此代碼使用的場景,詳見于筆記

為了給建模準備數(shù)據(jù),我們將數(shù)據(jù)分為訓(xùn)練集、驗證集和測試集。我們還保存了原始文件(我們將其命名為 lineage),以便記錄每個(代碼,文檔字符串)組的來源。最后,我們對不包含文檔字符串的代碼應(yīng)用相同的轉(zhuǎn)換,并分開保存,因為我們也希望能夠搜索此類代碼。


第二部分?:使用 Seq2Seq 模型構(gòu)建代碼歸納器 

第 2 部分筆記

從概念上講,我們可以建立一個 Seq2Seq 模型來歸納代碼,與我們之前介紹的 GitHub issue summarizer 完全相同——我們使用 python 代碼代替原來的 issues 數(shù)據(jù),并且使用 docstring 來代替 issue 標題。

然而,與 GitHub 的 issue 文本不同的是,代碼不屬于自然語言。為了充分利用代碼中的信息,我們可以引入特定領(lǐng)域的優(yōu)化方法,如 tree-based LSTMs 和語法感知標記 (syntax-aware tokenization)。簡單起見,在本教程中我們將代碼當作自然語言進行處理(最終獲得了合理的結(jié)果)。


......

想要繼續(xù)閱讀,請移步至我們的AI研習社社區(qū):https://club.leiphone.com/page/TextTranslation/707

更多精彩內(nèi)容盡在 AI 研習社。

不同領(lǐng)域包括計算機視覺,語音語義,區(qū)塊鏈,自動駕駛,數(shù)據(jù)挖掘,智能控制,編程語言等每日更新。

手機端可以掃描二維碼訪問

雷鋒網(wǎng)雷鋒網(wǎng)

實例+代碼,你還怕不會構(gòu)建深度學習的代碼搜索庫嗎

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

實例+代碼,你還怕不會構(gòu)建深度學習的代碼搜索庫嗎

分享:
相關(guān)文章

知情人士

AI研習社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學習知識的門檻。(原雷鋒字幕組)
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說