譯者 | 朱先忠
審校 | 孫淑娟
OpenAI新推出的聊天GPT棒極了
我是一名研究人員,每天都使用人工智能技術(shù)工作。可以說,在我的位置上,每個(gè)人都像盯著冰淇淋筒的狗狗一樣興奮。
原因如下:
對(duì)于那些不知道我在說什么的人來說,只需知道ChatGPT是一個(gè)人工智能聊天機(jī)器人,它可以幫助你做幾乎所有的事情。它可以編碼,可以寫文章,也可以幫助你裝飾你的家庭,甚至還可以制作食譜(如果你是意大利人,那么我不建議你這樣做),還有其他很多的事情讓它為你代勞。
我們可以說,這將會(huì)在未來引發(fā)倫理(而不僅僅是倫理)問題。我的母親是一名高中教師,她很害怕她的學(xué)生會(huì)使用ChatGPT在考試中作弊。當(dāng)然,這只是這項(xiàng)功能強(qiáng)大的技術(shù)“導(dǎo)致問題”的眾多例子之一。
但問題是使用,而不是產(chǎn)品。如果我們嚴(yán)格談?wù)摷夹g(shù)方面(坦率地說,也是我更感興趣的方面,因?yàn)槲沂且粋€(gè)經(jīng)“認(rèn)證”的書呆子),那真是不可思議。
現(xiàn)在,許多開發(fā)人員已經(jīng)使用并測(cè)試過這款聊天機(jī)器人來嘗試開發(fā)他們的代碼和AI想法。當(dāng)然,這款聊天機(jī)器人的使用嚴(yán)格取決于你的背景。例如,如果你是一名Web開發(fā)人員,你會(huì)要求ChatGPT使用HTML構(gòu)建一個(gè)網(wǎng)站。如果您是一名測(cè)試人員,您可以請(qǐng)求ChatGPT幫助您查找特定系統(tǒng)中的錯(cuò)誤。
就我個(gè)人來說,我是一名研究人員。特別是,我所做的工作是用人工智能建立一些替代模型。比如說,你想對(duì)“A”進(jìn)行研究,但要實(shí)現(xiàn)“A”任務(wù)你需要大量的資金、人力和計(jì)算時(shí)間。這種替代模型背后的想法就是,借助人工智能的數(shù)據(jù)驅(qū)動(dòng)方法來取代傳統(tǒng)的實(shí)現(xiàn)方案。
現(xiàn)在,讓我們暫時(shí)徹底改變這一話題。
假設(shè)我是一名企業(yè)家,我在美國(guó)各地?fù)碛泻芏嗑频?。如果?duì)某家酒店進(jìn)行了一定的評(píng)論,我想知道該評(píng)論對(duì)該酒店來說是好還是壞。我該怎么做?我有三個(gè)選擇:
1. 我雇傭一個(gè)每天閱讀數(shù)百萬條評(píng)論并對(duì)其進(jìn)行分類的人,那么我可能會(huì)被捕,因?yàn)檫@顯然是對(duì)人權(quán)的侵犯。
2. 我雇傭一個(gè)每天閱讀數(shù)百條評(píng)論并對(duì)其進(jìn)行分類的人。幾個(gè)月后,我能夠用這些信息構(gòu)建一個(gè)數(shù)據(jù)集。然后,我從這個(gè)數(shù)據(jù)集中訓(xùn)練出一個(gè)機(jī)器學(xué)習(xí)模型。
3. 我會(huì)自動(dòng)生成好的和壞的評(píng)論。然后,由我自己從中構(gòu)建了一個(gè)數(shù)據(jù)集,最后我從該數(shù)據(jù)集中訓(xùn)練出一個(gè)機(jī)器學(xué)習(xí)模型。
閑言少敘,讓我們跳過第一個(gè)選擇方案。
第二個(gè)選項(xiàng)是在ChatGPT誕生之前要做的事情。顯然,你不能提前知道評(píng)論是好是壞;所以,如果你想使用此信息建立一個(gè)數(shù)據(jù)集,那么你需要雇傭人員,等到數(shù)據(jù)集準(zhǔn)備好才能行動(dòng)。
如今,我們有了ChatGPT,就可以簡(jiǎn)單地要求它來為我們生成好的和壞的評(píng)論!這將需要幾分鐘(而不是幾個(gè)月)的時(shí)間,它將允許我們構(gòu)建機(jī)器學(xué)習(xí)算法來自動(dòng)分類我們的客戶評(píng)論!
恭喜你,這是你的第一個(gè)代理模型。
請(qǐng)記住,我們不會(huì)訓(xùn)練ChatGPT或進(jìn)行任何微調(diào)。對(duì)于這樣的任務(wù),此模型是例外的,在這種情況下不需要進(jìn)行微調(diào)。現(xiàn)在,ChatGPT模型的訓(xùn)練當(dāng)然不是開源的(就像模型本身一樣)。我們所知道的只是??OpenAI官方博客??中的簡(jiǎn)短描述。他們解釋說,該模型是由人工智能訓(xùn)練師和強(qiáng)化學(xué)習(xí)監(jiān)督算法訓(xùn)練的。
僅OpenAI的ChatGPT不是開源的這一事實(shí)就引發(fā)了一些非常棘手和有趣的倫理問題。這樣一個(gè)強(qiáng)大的模型應(yīng)該是開源的——這樣每個(gè)人(包括壞人)都可以使用它,還是應(yīng)該不是開源的?所以,沒有人可以真正信任它?
現(xiàn)在,讓我概括一下上面的總體步驟:
你從上圖中看到的小腦殼就是代理模型。正如我們稍后將看到的,這將是一個(gè)隨機(jī)的森林。但我曾經(jīng)說過本文是一篇實(shí)戰(zhàn)性的文章,所以讓我們深入研究吧?。ㄌ?dòng)了?。。。?/span>
對(duì)不起,我喜歡劇透。
一、生成數(shù)據(jù)集
第一步是使用OpenAI公司的Python API生成模擬。
為此,需要考慮的幾件事有:
1.OpenAI庫(kù)是天才為非天才用戶創(chuàng)造的。因此,如果要安裝它,只需執(zhí)行以下操作:
2.當(dāng)然,如果你想發(fā)送大量請(qǐng)求,你必須為優(yōu)質(zhì)服務(wù)提供支付。假設(shè)我們不想這樣做,我們只需要等待大約30分鐘就可以獲得虛擬評(píng)論信息的數(shù)據(jù)集。同樣,如果我們手動(dòng)執(zhí)行此操作,那么這與等待數(shù)月的時(shí)間(和成本)相比微不足道。此外,您還必須登錄OpenAI官方網(wǎng)站并獲得OpenAI庫(kù)對(duì)應(yīng)的密鑰。
3.我們將自動(dòng)輸入這是一個(gè)好的評(píng)價(jià)還是一個(gè)差的評(píng)價(jià),以相同的句子開頭:“This hotel was terrible.”表示差評(píng),“This hotel was great.”表示好評(píng)??傊?,ChatGPT將為我們完成審查工作。當(dāng)然,除了前四個(gè)單詞(無論如何我們都不會(huì)在評(píng)論中包含),其余的評(píng)論都會(huì)有所不同。
讓我舉一個(gè)差評(píng)的例子:
接下來,我再舉一個(gè)好評(píng)的例子:
現(xiàn)在,我們給出生成整個(gè)數(shù)據(jù)集所需的代碼。
然后,我們使用Pandas庫(kù)來把一切內(nèi)容存儲(chǔ)到一個(gè)數(shù)據(jù)框架DataFrame中。
為此,首先導(dǎo)入庫(kù)并構(gòu)建數(shù)據(jù)框架df:
接下來,填充數(shù)據(jù)框架結(jié)構(gòu)df:
最后,導(dǎo)出數(shù)據(jù)框架df:
二、開始進(jìn)行機(jī)器學(xué)習(xí)
現(xiàn)在,我們需要建立和訓(xùn)練一種機(jī)器學(xué)習(xí)算法。
當(dāng)我們處理文本時(shí),首先需要做的是使用矢量器(vectorizer)。矢量器負(fù)責(zé)實(shí)現(xiàn)將文本轉(zhuǎn)換為矢量的任務(wù)。
例如:
正如你所看到的,相似的文本對(duì)應(yīng)著相似的向量(我知道,“相似”是一個(gè)棘手的概念,但你知道我的意思就行)。并且,不同的文本具有不相似的向量。
矢量化步驟有很多種方法。有些方式比其他方式更復(fù)雜;有些方法比其他方法更有效;有些方法需要機(jī)器學(xué)習(xí),有些方法則不需要。
為了實(shí)現(xiàn)本文中這個(gè)項(xiàng)目的目的(因?yàn)槲也皇荖LP機(jī)器學(xué)習(xí)工程師),我們將使用一個(gè)相當(dāng)簡(jiǎn)單的叫做TfIDF矢量器的工具,該工具在??SkLearn框架??上可現(xiàn)成地使用。
讓我們從導(dǎo)入庫(kù)開始:
然后,導(dǎo)入我們剛剛使用ChatGPT生成的數(shù)據(jù)集,并進(jìn)行一些預(yù)處理工作:
數(shù)據(jù)集頭部的數(shù)據(jù)如下:
好極了!現(xiàn)在,讓我們做一個(gè)矢量化的事情:
正如我之前介紹過的,我們將使用的機(jī)器學(xué)習(xí)模型稱為隨機(jī)森林。什么是隨機(jī)森林?簡(jiǎn)言之,它是一個(gè)決策樹的集合。那么,什么是決策樹呢?
決策樹是一種機(jī)器學(xué)習(xí)算法,它能夠在給定具體的符合對(duì)應(yīng)理論條件的情況下,優(yōu)化數(shù)據(jù)集特征的所有可能分割的樹搜索,直到找到一種基于該分割來區(qū)分出什么是1和什么是0的方法為止。
很抱歉,這樣的解釋可能還太令人困惑;但是,僅用4行文字來給出通俗解釋的話,這的確是一項(xiàng)艱巨的任務(wù)。有??一篇文章??花了很多時(shí)間來解釋這個(gè)問題,而且做得相當(dāng)出色了。在此,我強(qiáng)烈推薦您看一看。
現(xiàn)在,讓我們繼續(xù)干活:
1. 定義我們的隨機(jī)森林:
2. 將我們的數(shù)據(jù)集拆分為訓(xùn)練和測(cè)試兩部分:
3. 開始訓(xùn)練模型:
訓(xùn)練輸出結(jié)果給人留下非常深刻的印象,特別是在沒有提供超參數(shù)微調(diào)的情況下。
三、情感分析
到目前為止,我們已經(jīng)有了一個(gè)經(jīng)過訓(xùn)練的模型;因此,可以在新的、未標(biāo)記的數(shù)據(jù)集上使用此模型了。為此,我使用了自己在網(wǎng)上找到的一組紐約市酒店評(píng)論來進(jìn)行測(cè)試。當(dāng)然,你也可以使用自己的評(píng)論,甚至也可以編寫一份評(píng)論,看看這個(gè)模型是如何工作的。
本文中我提供的這個(gè)數(shù)據(jù)集是開源的(遵循CC0協(xié)議),非常?。?MB),可以在??Kaggle??上下載。
現(xiàn)在,讓我們對(duì)評(píng)論欄目(或文本)進(jìn)行預(yù)處理:
然后,打印我們的預(yù)測(cè)結(jié)果:
正如我們所看到的,所有上面這5條被分類為1的隨機(jī)評(píng)論實(shí)際上也的確都很好!
現(xiàn)在,讓我們?cè)僬故疽粋€(gè)更直觀的上述數(shù)據(jù)的統(tǒng)計(jì)計(jì)數(shù)結(jié)果示意圖:
四、其他一些問題
本文中,我們具體做了哪些工作?
首先,我們肯定ChatGPT是非常棒的。
然后,我們使用ChatGPT為代理模型構(gòu)建了一個(gè)數(shù)據(jù)集。更具體地說,我們使用ChatGPT來組建酒店的好評(píng)和差評(píng)數(shù)據(jù)。
接下來,我們使用我們構(gòu)建的標(biāo)記數(shù)據(jù)集來訓(xùn)練機(jī)器學(xué)習(xí)模型。本文示例中,我們所使用的模型是隨機(jī)森林分類器(Random Forest Classifier)。
最后,我們?cè)谝粋€(gè)新的數(shù)據(jù)集上測(cè)試了我們的訓(xùn)練模型,并得到了令人滿意的結(jié)果。
那么,上述案例中還有改進(jìn)的余地嗎?當(dāng)然還有很多,例如:
1. 我們可以獲得OpenAI高級(jí)服務(wù),并生成超過1000條評(píng)論。
2. 我們可以通過提供不同的輸入來提高我們的查詢技能,也許還可以使用其他語言而不僅僅是英語。
3. 我們還可以通過進(jìn)行一些超參數(shù)調(diào)整來進(jìn)一步改進(jìn)機(jī)器學(xué)習(xí)模型。
現(xiàn)在,我不由得想起了以下一些問題。
關(guān)于如何以及誰將使用OpenAI公司的ChatGPT呢?這方面自然存在很多擔(dān)憂。雖然我不是一名律師(更不用說是一名倫理學(xué)人工智能專家),但我可以想象這個(gè)工具在許多方面和許多不同層面上是多么危險(xiǎn)。
我強(qiáng)烈反對(duì)那些對(duì)ChatGPT的性能印象不深刻的人,因?yàn)槲矣X得它非常令人驚訝,而且我很高興看到這項(xiàng)技術(shù)會(huì)如何發(fā)展。不過,我希望本文中介紹的這個(gè)玩具例子也能在我的讀者中引起一些共鳴。
譯者介紹
朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。
原文標(biāo)題:??Hands-on Sentiment Analysis on Hotels Reviews Using Artificial Intelligence and Open AI’s ChatGPT, with Python??,作者:Piero Paialunga