国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

自然語言處理技術(shù)視角下的編程演進(jìn)研究

2024-11-29 00:00:00陳鳳妹程顯毅
電腦知識與技術(shù) 2024年27期

摘要:人類想要與計(jì)算機(jī)溝通就對編程語言的語法和結(jié)構(gòu)有一定的了解。隨著自然語言處理技術(shù)的發(fā)展,讓計(jì)算機(jī)聽懂人類語言不再是夢想。ChatGPT的應(yīng)用催生了Prompt(提示工程),Prompt可以直接使用自然語言表達(dá)用戶的意圖,大大降低了編程的門檻。文章從編程語言發(fā)展歷程,了解Prompt原理和應(yīng)用,在自然語言處理時代,編程的邊界在擴(kuò)大。

關(guān)鍵詞:NLP; prompt;ChatGPT;編程語言;編程范式

中圖分類號:TP318 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2024)27-0015-04

1 早期編程語言

目前編程語言有數(shù)百種,每種語言有其獨(dú)特的特性,軟件開發(fā)使用哪種編程語言,對軟件性能、可讀性和移植性都有影響,選擇合適的語言不僅僅是個人偏好的問題。無論你在編程方面有無經(jīng)驗(yàn),選擇一種合適的語言來學(xué)習(xí)至關(guān)重要。合適的語言將幫助你快速創(chuàng)建功能強(qiáng)大的應(yīng)用系統(tǒng)。

編程語言是人類為了方便計(jì)算機(jī)理解和執(zhí)行而創(chuàng)造的一種工具。隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,編程語言也在不斷地發(fā)展和演變,如圖1所示。

早期編程語言經(jīng)歷了“面向機(jī)器、面向過程、面向問題”三種編程范式。

1.1 面向機(jī)器的編程語言

1) 機(jī)器語言。

機(jī)器語言是第一代編程語言。所謂的機(jī)器語言,就是計(jì)算機(jī)能直接識別的語言格式,計(jì)算機(jī)屬于電子元器件,最容易識別的兩種狀態(tài)就是“1”和“0”。例如:101代表數(shù)字5,其他的內(nèi)容也是如此。

但對于程序員來講,這差不多就相當(dāng)于是在看“天書”。那么有沒有辦法能夠讓程序員更容易地讀懂計(jì)算機(jī)中的數(shù)據(jù)呢?答案是肯定的!這就好比我們要和外國人交流,你聽不懂外國人在講什么,我們就可以找一個翻譯,在程序中我們所找的這位“翻譯官”,就是所謂的第二代語言。

2) 匯編語言。

第二代編程語言是匯編語言。這種語言相當(dāng)于是對機(jī)器語言的封裝,畢竟1010的組合太難記了,所以就產(chǎn)生了匯編這種中間層語言。

當(dāng)然,匯編語言對于程序員來講,也不是特別的友好,因?yàn)樗恼Z法結(jié)構(gòu)還有很大的改進(jìn)空間。舉個例子,用匯編語言做算數(shù)運(yùn)算時,可以使用ADD代表加法運(yùn)算,SUB代表減法運(yùn)算,諸如此類。但如果能直接使用“+”“-”符號來進(jìn)行計(jì)算,可讀性方面則會更好,第三代編程語言應(yīng)運(yùn)而生。

1.2 面向過程的編程語言

從程序員的編碼角度來說,去除了各種晦澀難懂的匯編語法,這就極大提高了程序員的開發(fā)效率。出現(xiàn)了大量的高級語言,主要是面向計(jì)算過程,它歷史悠久,流傳很廣,有大量的已開發(fā)的軟件庫,擁有眾多的用戶, 為人們所熟悉和接受。屬于這類語言的有 FORTRAN、COBOL、BASIC、ALGOL、C等。

這些高級語言都是屬于第三代語言,也稱為結(jié)構(gòu)化編程范式或模塊化編程范式,程序主要由三種基本程序結(jié)構(gòu)構(gòu)成:順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),如圖2所示。

給大家舉個例子:如果我的錢多于100元,那么今天就打車上班。這個案例的C語言代碼可以描述成下面的樣子:

int money=500; //這是我錢包的500元

if(money>=100){ //判斷錢大于100元,則進(jìn)入{}執(zhí)行語句

scanf("有錢,打車上班"); //執(zhí)行打車的語法輸出}

}

相信只要有一點(diǎn)C編程和英語基礎(chǔ),都能看懂上面的語法,所以高級語言相比前面的機(jī)器語言和匯編語言有更強(qiáng)的可讀性、邏輯性。

1.3 面向問題的編程語言

什么是問題呢?需要解決的事情就是問題。一個問題可以由幾個較小的問題組成,一個較小的問題也可以由更小的問題組成,直到那個小問題可以一步解決。

傳統(tǒng)的面向過程編程要完成一項(xiàng)功能(大的問題)需要大量的代碼,但是許多代碼并不是直接和這項(xiàng)功能有關(guān),而是用于完成細(xì)微的工作 (較小的問題)。以編寫“郵件發(fā)送程序”為例子,編程者需要檢查網(wǎng)絡(luò)情況、連接服務(wù)器;又要編寫界面,處理 用戶動作,因此需要大量的代碼。如果用面向過程的C語言編寫,至少要100行代碼,并且只有專業(yè)的人才能看懂,而用面向問題語言(如:Angela語言),只要用到一個“黑箱”:SENDEM,以及相關(guān)的參數(shù)(發(fā)件人賬戶用戶名、發(fā)件人賬戶密碼、收件人賬戶用戶名、郵件標(biāo)題、郵件正文、郵件附件),用三行代碼就可以了:

Program SENDEMTEST

SENDEM:[發(fā)件人賬戶用戶名],[發(fā)件人賬戶密碼],[收件人賬戶用戶名],[郵件標(biāo)題],[郵件正文],[郵件附件]

END

面向問題的編程語言包括面向?qū)ο?、函?shù)式、聲明式編程語言。

2 面向人工智能的編程語言

人工智能(Artificial Intelligence,AI) 旨在模擬和實(shí)現(xiàn)人類智能的理論和方法。它涉及對語言、學(xué)習(xí)、推理、問題解決和決策等人類智能的模擬和應(yīng)用。在人工智能系統(tǒng)開發(fā)過程中,有幾種主要的編程語言被廣泛應(yīng)用,本質(zhì)上面向人工智能的編程語言也是面向問題的。

1)Python是目前人工智能領(lǐng)域最受歡迎的編程語言之一。Python語言簡潔、易讀易寫,擁有豐富的第三方庫和開發(fā)工具,使得它成了人工智能開發(fā)的首選語言。Python 的庫和工具如Numpy、Pandas、Scikitlearn和TensorFlow等提供了強(qiáng)大的數(shù)據(jù)處理、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)功能,能夠幫助開發(fā)者快速實(shí)現(xiàn)各種人工智能算法。

2)R語言是專門用于統(tǒng)計(jì)分析和數(shù)據(jù)可視化的編程語言,也被廣泛應(yīng)用于人工智能領(lǐng)域。R語言提供了豐富的統(tǒng)計(jì)分析和機(jī)器學(xué)習(xí)的函數(shù)庫,如caret、e1071和randomForest等,使得開發(fā)者可以方便地進(jìn)行數(shù)據(jù)挖掘和建模。

除了上述的主要編程語言外,還有一些其他語言也在人工智能開發(fā)中得到了應(yīng)用。例如,Lisp語言是最早用于人工智能研究和開發(fā)的編程語言之一,它的函數(shù)式編程特性使其適合于符號推理和專家系統(tǒng)的開發(fā)。而Prolog語言則主要用于邏輯推理和知識表示的領(lǐng)域。

總結(jié)起來,Python、R以及Lisp和Prolog等編程語言都在人工智能的開發(fā)中發(fā)揮著重要的作用。開發(fā)者可以根據(jù)自己的需求和項(xiàng)目特點(diǎn)選擇合適的編程語言來實(shí)現(xiàn)人工智能算法。無論選擇哪種編程語言,都需要結(jié)合相應(yīng)的庫和工具來提供強(qiáng)大的功能支持,以便更好地實(shí)現(xiàn)人工智能的目標(biāo)。

3 面向用戶的編程語言

3.1 Prompt 編程

ChatGPT中的Prompt被稱為面向用戶的編程語言。如何通過設(shè)計(jì)和優(yōu)化Prompt來提高模型的準(zhǔn)確性和可用性?如何通過選擇和設(shè)計(jì)恰當(dāng)?shù)腜rompt來引導(dǎo)模型更好地理解用戶需求和任務(wù),生成更加準(zhǔn)確、自然、連貫的文本就變成了一門全新的編程范式。

假設(shè)讓你編寫一個Python代碼,實(shí)現(xiàn)“生成和發(fā)送通知郵件”。如果用傳統(tǒng)的編程范式(第一代、第二代、第三代),不知有多少人能徒手編寫出來,如果使用Prompt:請編寫“用于生成和發(fā)送通知郵件Python 代碼”,結(jié)果如圖3所示。

讀者會有個疑問:Prompt不但能寫代碼,還能寫詩、繪畫、回答問題,那Prompt不是編程語言。在自然語言處理時代,程序設(shè)計(jì)的邊界需要擴(kuò)大,不是傳統(tǒng)意義上的邏輯問題編程,而Prompt更擅長非邏輯問題的編程。

3.2 Prompt 原理

受到ChatGPT工作的啟發(fā),很多人開始探索在訓(xùn)練數(shù)據(jù)很少甚至不存在的情況下,通過將下游任務(wù)修改為語言生成任務(wù),來獲得相對較好的模型,如圖4 所示。

圖4左側(cè)預(yù)訓(xùn)練+微調(diào)范式。對于下游不同的任務(wù)A、B、C,會對11B量級參d7dd7392d2f05553d0877b78c04f6f5039cf787af98a754e285dd968d8bc2928數(shù)的預(yù)訓(xùn)練模型分別進(jìn)行微調(diào),得到3個微調(diào)之后不同的11B模型,核心是讓預(yù)訓(xùn)練模型來適配下游任務(wù)。而圖4右側(cè)Prompt范式,針對三個不同的下游任務(wù)只使用同一個預(yù)訓(xùn)練模型來構(gòu)建任務(wù),省去了微調(diào)的步驟,核心是讓下游任務(wù)來適配預(yù)訓(xùn)練模型,這樣可以充分利用已經(jīng)訓(xùn)練好的預(yù)訓(xùn)練模型,大大提升預(yù)訓(xùn)練模型的使用效率。

3.3 Prompt 構(gòu)建方法

通用的Prompt構(gòu)建方法是:

扮演角色+具體任務(wù)+完成任務(wù)的步驟+約束條件+目標(biāo)+輸出格式

例如:“我希望你能擔(dān)任一位AI寫作導(dǎo)師。我會提供一個需要改善寫作技巧的學(xué)生,你的任務(wù)是利用人工智能工具,如自然語言處理,為學(xué)生提供反饋,指導(dǎo)他如何改進(jìn)他的作文。你還應(yīng)該運(yùn)用自己的修辭知識和寫作技巧經(jīng)驗(yàn),建議他如何更好地書寫自己的思想和觀點(diǎn)。我的第一個請求是‘我需要有人幫我編輯文章的第一段,并在文章后用列表的方式列出你的修改意見?!?/p>

扮演角色:可以是前端設(shè)計(jì)師、作家、評論員、詩人等各種角色,這一步的目的是使ChatGPT快速且準(zhǔn)確地了解任務(wù)領(lǐng)域。具體任務(wù):簡單清晰地描述任務(wù)。

完成任務(wù)的步驟:希望ChatGPT實(shí)現(xiàn)任務(wù)時所采取的步驟,當(dāng)任務(wù)較為復(fù)雜時使用。

約束條件:不要解釋、不要評論、不要修改原始文本等約束語。

目標(biāo):希望ChatGPT完成的目標(biāo)。

輸出格式:ChatGPT除了各種文字的格式,還可以輸出列表等格式。

使用主要有以下三種Prompt模式:

1) 指令模式。

在這種模式下,我們給模型提供一些明確的指令,模型需要根據(jù)這些指令生成文本。這種模式通常用于生成類似于技術(shù)說明書、操作手冊等需要明確指令的文本。指令可以是單個句子或多個段落,具體取決于任務(wù)的要求。

Prompt:給我推薦三中文的科幻小說,推薦格式:(1) 書名;(2) 作者;(3) 主要內(nèi)容;(4) 推薦理由。

2) 代理模式。

代理模式是指用戶可以要求 ChatGPT 以特定的身份、角色或者身份扮演某個特定的人、角色或?qū)ο髞砩苫卮?。這種模式通常用于模擬某個特定人物的語言風(fēng)格和語境,生成特定情境下的對話、回答或其他形式的文本。如:描述秋天,小學(xué)生、大學(xué)生、老年人的不同身份,內(nèi)容是有很大的不同,AI對身份和角色的把握還是很準(zhǔn)確的。因此,在提問前告訴你的身份很重要。下面是一些扮演的例子。

Prompt1:我希望你充當(dāng) Linux 終端。我會輸入命令,你會用終端應(yīng)該顯示的內(nèi)容回復(fù)我。我希望你只回復(fù)唯一的代碼塊內(nèi)終端輸出,不要寫解釋,除非我要求你這樣做。當(dāng)我需要用英語告訴你一些事情時,我會用花括號 {像這樣}。我的第一個命令是 pwd。

Prompt2: 我希望您充當(dāng)英語翻譯官、拼寫糾正器和改進(jìn)者。我會用任何語言與您交談,您將檢測語言,翻譯它,并在英語中回答我更正和改進(jìn)后的文本。我希望您用更優(yōu)美、更優(yōu)雅、更高級的英語單詞和句子替換我的簡化 A0 級別的單詞和句子。保持意思相同,但使它們更具文學(xué)性。我希望您只回復(fù)更正和改進(jìn)的內(nèi)容,不要寫解釋。我的第一個句子是“istan?bulu cok seviyom burada olmak cok guzel”。

Prompt3: 我希望您充當(dāng)面試官。我將成為應(yīng)聘者,您將為我提出該職位的面試問題。我希望你只回答作為面試官。不要一次性寫下所有對話。我只想和你進(jìn)行面試。請如同面試官一樣一個一個地問我問題,等待我的回答。不要寫解釋。我的第一個句子是“你好”。

Prompt4:我希望您充當(dāng)基于文本的 Excel。您將只向我回復(fù)基于文本的 10 行 Excel 表格,行號和列字母作為列(A 到 L)。第一列的標(biāo)題應(yīng)為空以引用行號。我會告訴你要寫入哪些單元格,你只會以文本形式回復(fù) Excel 表格的結(jié)果,不要寫解釋。不要寫公式,您將執(zhí)行公式,只回復(fù) Excel 表格的結(jié)果。首先,請回復(fù)我空表格。

3) 示例模式。

在這種模式下,我們給模型提供一些示例文本,模型需要生成與示例文本類似的文本。這種模式通常用于生成類似于給定示例的文本,例如自動生成電子郵件、產(chǎn)品描述、新聞報(bào)道等。示例文本可以是單個句子或多個段落,具體取決于任務(wù)的要求。

這個模式就是大家拿胡總開涮的那個模板,我也用這個模板寫篇文章:

Prompt:為了用好ChatGPT等AI工具,最近大家都在學(xué)習(xí)Prompt的知識,很多人廢寢忘食,請參照下面的格式寫一段話:近期互聯(lián)網(wǎng)上出現(xiàn)了__,放牛娃也看到__,知道大家很__,放牛娃忍不住啰嗦幾句,雖然確實(shí)存在部分__,但是_ ,最后放牛娃呼吁__。

答:近期互聯(lián)網(wǎng)上出現(xiàn)了對Prompt的學(xué)習(xí)熱潮,放牛娃也看到很多人為了用好ChatGPT等AI工具而廢寢忘食地學(xué)習(xí)Prompt的知識,知道大家很認(rèn)真地在探索和學(xué)習(xí)這項(xiàng)新技術(shù)。放牛娃忍不住啰嗦幾句,雖然學(xué)習(xí)Prompt確實(shí)是使用AI工具的前提之一,但更重要的是要理解自己的需求和問題,將Prompt和AI 工具結(jié)合起來,才能發(fā)揮出AI工具的最大價值。此外,我們還需要注意數(shù)據(jù)的質(zhì)量和隱私保護(hù),以及與AI工具交互的方式和方法等方面。最后放牛娃呼吁大家要保持學(xué)習(xí)的熱情,并在實(shí)踐中不斷總結(jié)和提高,讓AI技術(shù)更好地為我們服務(wù)。

在應(yīng)用中,也可以是這幾種的變種或是組合。

4 結(jié)束語

隨著自然語言處理技術(shù)的不斷發(fā)展,使用不同Prompt所構(gòu)建的全新應(yīng)用正在快速進(jìn)入人們的視野。Prompt工程師的未來發(fā)展前景非常廣闊。

每種語言都有其所長。最適合你的語言取決于你的項(xiàng)目要求、你對該語言的熟悉程度以及所需的性能。首先確定項(xiàng)目的要求,然后考慮你對哪些語言比較熟悉,最后考慮每種語言提供的性能。

盡管Prompt方法在很多領(lǐng)域都取得了成功,但是Prompt的理論還不完善,使得人們很難了解Prompt為什么能達(dá)到好的效果,又為什么在自然語言中意義相近的Prompt有時效果卻相差很大。

參考文獻(xiàn):

[1] Pre-train, Prompt.Predict: A Systematic Survey of PromptingMethods in Natural Language Processing[R/OL]. 2021.https://arxiv.org/abs/2107.13586.

[2] Sylvestre-Alvise Rebuffi, Hakan Bilen, and Andrea Vedaldi.Learning multiple visual domains with residual adapter[J]. InAdvances in Neural Information Processing systems,2023, 30:506-516.

[3] Homepage NLPedia.[EB/OL].[2023-06-24].http://pretrain.nl?pedia.ai/.[4] Ian Tenney, Patrick Xia, Berlin Chen, Alex Wang, Adam Po?liak, R. Thomas McCoy, Najoung Kim, Benjamin Van Durme,Samuel R. Bowman, Dipanjan Das, and Ellie Pavlick. What doyou learn from context? Probing for sentence structure in con?textualized word representations[C]//In 7th International Con?ference on Learning Representations, New Orleans, LA, USA,2023,5:6-9.

[5] LIU Y L,LI H L,BAI X,et al.A brief analysis of ChatGPT:histori?cal evolution,current applications,and future prospects[J].Jour?nal of Image and Graphics,2023,28(4):893-902.

【通聯(lián)編輯:朱寶貴】

合肥市| 峨边| 芜湖市| 旺苍县| 景宁| 曲周县| 万载县| 定陶县| 剑阁县| 奈曼旗| 揭东县| 区。| 嵊泗县| 九龙坡区| 藁城市| 广灵县| 德安县| 吉水县| 宁阳县| 南阳市| 高青县| 南通市| 三江| 松滋市| 柳河县| 昌吉市| 东莞市| 崇明县| 保山市| 商水县| 邯郸县| 孟州市| 涿鹿县| 乐都县| 武定县| 天祝| 郎溪县| 永顺县| 茌平县| 哈尔滨市| 昌邑市|