成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ChatGPT開發實戰——酒店評論情感分析

譯文 精選
開源
本文將探討如何基于OpenAI公司的ChatGPT機器學習技術并在Python語言環境下僅通過少量編碼來實現對顧客所住酒店的好評和差評的自動化分類。

譯者 | 朱先忠

審校 | 孫淑娟

OpenAI新推出的聊天GPT棒極了

我是一名研究人員,每天都使用人工智能技術工作。可以說,在我的位置上,每個人都像盯著冰淇淋筒的狗狗一樣興奮。

原因如下:

對于那些不知道我在說什么的人來說,只需知道ChatGPT是一個人工智能聊天機器人,它可以幫助你做幾乎所有的事情。它可以編碼,可以寫文章,也可以幫助你裝飾你的家庭,甚至還可以制作食譜(如果你是意大利人,那么我不建議你這樣做),還有其他很多的事情讓它為你代勞。

我們可以說,這將會在未來引發倫理(而不僅僅是倫理)問題。我的母親是一名高中教師,她很害怕她的學生會使用ChatGPT在考試中作弊。當然,這只是這項功能強大的技術“導致問題”的眾多例子之一。

但問題是使用,而不是產品。如果我們嚴格談論技術方面(坦率地說,也是我更感興趣的方面,因為我是一個經“認證”的書呆子),那真是不可思議。

現在,許多開發人員已經使用并測試過這款聊天機器人來嘗試開發他們的代碼和AI想法。當然,這款聊天機器人的使用嚴格取決于你的背景。例如,如果你是一名Web開發人員,你會要求ChatGPT使用HTML構建一個網站。如果您是一名測試人員,您可以請求ChatGPT幫助您查找特定系統中的錯誤。

就我個人來說,我是一名研究人員。特別是,我所做的工作是用人工智能建立一些替代模型。比如說,你想對“A”進行研究,但要實現“A”任務你需要大量的資金、人力和計算時間。這種替代模型背后的想法就是,借助人工智能的數據驅動方法來取代傳統的實現方案。

現在,讓我們暫時徹底改變這一話題。

假設我是一名企業家,我在美國各地擁有很多酒店。如果對某家酒店進行了一定的評論,我想知道該評論對該酒店來說是好還是壞。我該怎么做?我有三個選擇:

1. 我雇傭一個每天閱讀數百萬條評論并對其進行分類的人,那么我可能會被捕,因為這顯然是對人權的侵犯。

2. 我雇傭一個每天閱讀數百條評論并對其進行分類的人。幾個月后,我能夠用這些信息構建一個數據集。然后,我從這個數據集中訓練出一個機器學習模型。

3. 我會自動生成好的和壞的評論。然后,由我自己從中構建了一個數據集,最后我從該數據集中訓練出一個機器學習模型。

閑言少敘,讓我們跳過第一個選擇方案。

第二個選項是在ChatGPT誕生之前要做的事情。顯然,你不能提前知道評論是好是壞;所以,如果你想使用此信息建立一個數據集,那么你需要雇傭人員,等到數據集準備好才能行動。

如今,我們有了ChatGPT,就可以簡單地要求它來為我們生成好的和壞的評論!這將需要幾分鐘(而不是幾個月)的時間,它將允許我們構建機器學習算法來自動分類我們的客戶評論!

恭喜你,這是你的第一個代理模型。

請記住,我們不會訓練ChatGPT或進行任何微調。對于這樣的任務,此模型是例外的,在這種情況下不需要進行微調?,F在,ChatGPT模型的訓練當然不是開源的(就像模型本身一樣)。我們所知道的只是??OpenAI官方博客??中的簡短描述。他們解釋說,該模型是由人工智能訓練師和強化學習監督算法訓練的。

僅OpenAI的ChatGPT不是開源的這一事實就引發了一些非常棘手和有趣的倫理問題。這樣一個強大的模型應該是開源的——這樣每個人(包括壞人)都可以使用它,還是應該不是開源的?所以,沒有人可以真正信任它?

現在,讓我概括一下上面的總體步驟:

你從上圖中看到的小腦殼就是代理模型。正如我們稍后將看到的,這將是一個隨機的森林。但我曾經說過本文是一篇實戰性的文章,所以讓我們深入研究吧?。ㄌ恿耍。。。?/span>

對不起,我喜歡劇透。

一、生成數據集

第一步是使用OpenAI公司的Python API生成模擬。

為此,需要考慮的幾件事有:

1.OpenAI庫是天才為非天才用戶創造的。因此,如果要安裝它,只需執行以下操作:

pip install --upgrade openai

2.當然,如果你想發送大量請求,你必須為優質服務提供支付。假設我們不想這樣做,我們只需要等待大約30分鐘就可以獲得虛擬評論信息的數據集。同樣,如果我們手動執行此操作,那么這與等待數月的時間(和成本)相比微不足道。此外,您還必須登錄OpenAI官方網站并獲得OpenAI庫對應的密鑰。

3.我們將自動輸入這是一個好的評價還是一個差的評價,以相同的句子開頭:“This hotel was terrible.”表示差評,“This hotel was great.”表示好評??傊?,ChatGPT將為我們完成審查工作。當然,除了前四個單詞(無論如何我們都不會在評論中包含),其余的評論都會有所不同。

讓我舉一個差評的例子:

import openai
import time
openai.api_key = "your_key"

completion = openai.Completion.create(engine="davinci", prompt="This hotel was terrible.",max_tokens=120)
print(completion.choices[0]['text'])

接下來,我再舉一個好評的例子:

completion = openai.Completion.create(engine="davinci", prompt="This hotel was great.",max_tokens=120)
print(completion.choices[0]['text'])

現在,我們給出生成整個數據集所需的代碼。

good_reviews = []
bad_reviews = []
for i in range(0,500):
completion = openai.Completion.create(engine="davinci", prompt="This hotel was great.",max_tokens=120)
good_reviews.append(completion.choices[0]['text'])
print('Generating good review number %i'%(i))
completion = openai.Completion.create(engine="davinci", prompt="This hotel was terrible.",max_tokens=120)
bad_reviews.append(completion.choices[0]['text'])
print('Generating bad review number %i'%(i))
display = np.random.choice([0,1],p=[0.7,0.3])
time.sleep(3)
if display ==1:
display_good = np.random.choice([0,1],p=[0.5,0.5])
if display_good ==1:
print('Printing random good review')
print(good_reviews[-1])
if display_good ==0:
print('Printing random bad review')
print(bad_reviews[-1])

然后,我們使用Pandas庫來把一切內容存儲到一個數據框架DataFrame中。

為此,首先導入庫并構建數據框架df:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.zeros((1000,2)))

接下來,填充數據框架結構df:

df.columns = ['Reviews','Sentiment']
df['Sentiment'].loc[0:499] = 1

最后,導出數據框架df:

df.to_csv('generated_reviews.csv')

二、開始進行機器學習

現在,我們需要建立和訓練一種機器學習算法。

當我們處理文本時,首先需要做的是使用矢量器(vectorizer)。矢量器負責實現將文本轉換為矢量的任務。

例如:

正如你所看到的,相似的文本對應著相似的向量(我知道,“相似”是一個棘手的概念,但你知道我的意思就行)。并且,不同的文本具有不相似的向量。

矢量化步驟有很多種方法。有些方式比其他方式更復雜;有些方法比其他方法更有效;有些方法需要機器學習,有些方法則不需要。

為了實現本文中這個項目的目的(因為我不是NLP機器學習工程師),我們將使用一個相當簡單的叫做TfIDF矢量器的工具,該工具在??SkLearn框架??上可現成地使用。

讓我們從導入庫開始:

import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix,plot_confusion_matrix
from sklearn.feature_extraction.text import TfidfVectorizer

然后,導入我們剛剛使用ChatGPT生成的數據集,并進行一些預處理工作:

labeled_data = pd.read_csv('generated_reviews.csv').drop(columns=['Unnamed: 0'])
labeled_data.Sentiment = labeled_data.Sentiment.astype(int)
labeled_data = labeled_data.dropna().reset_index()

數據集頭部的數據如下:

好極了!現在,讓我們做一個矢量化的事情:

dataset = labeled_data

from transformers import AutoTokenizer

#tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
#tokenized_data = tokenizer(dataset["Reviews"].values.tolist(), return_tensors="np", padding=True)
vectorizer = TfidfVectorizer (max_features=2500, min_df=7, max_df=0.8)
tokenized_data = vectorizer.fit_transform(dataset['Reviews']).toarray()

labels = np.array(dataset["Sentiment"]) # Label is already an array of 0 and 1

正如我之前介紹過的,我們將使用的機器學習模型稱為隨機森林。什么是隨機森林?簡言之,它是一個決策樹的集合。那么,什么是決策樹呢?

決策樹是一種機器學習算法,它能夠在給定具體的符合對應理論條件的情況下,優化數據集特征的所有可能分割的樹搜索,直到找到一種基于該分割來區分出什么是1和什么是0的方法為止。

很抱歉,這樣的解釋可能還太令人困惑;但是,僅用4行文字來給出通俗解釋的話,這的確是一項艱巨的任務。有??一篇文章??花了很多時間來解釋這個問題,而且做得相當出色了。在此,我強烈推薦您看一看。

現在,讓我們繼續干活:

1. 定義我們的隨機森林:

rf = RandomForestClassifier(n_estimators=100)

2. 將我們的數據集拆分為訓練和測試兩部分:

X = tokenized_data
y = labels
X_train, X_test,y_train, y_test = train_test_split(X,y,test_size=0.2)

3. 開始訓練模型:

rf.fit(X_train,y_train)

訓練輸出結果給人留下非常深刻的印象,特別是在沒有提供超參數微調的情況下。

三、情感分析

到目前為止,我們已經有了一個經過訓練的模型;因此,可以在新的、未標記的數據集上使用此模型了。為此,我使用了自己在網上找到的一組紐約市酒店評論來進行測試。當然,你也可以使用自己的評論,甚至也可以編寫一份評論,看看這個模型是如何工作的。

本文中我提供的這個數據集是開源的(遵循CC0協議),非常小(2MB),可以在??Kaggle??上下載。

現在,讓我們對評論欄目(或文本)進行預處理:

vectorizer = TfidfVectorizer (max_features=2500, min_df=7, max_df=0.8)
vectorizer.fit(dataset['Reviews'])
new_data_processed = vectorizer.transform(target_data['review']).toarray()
y_pred = rf.predict(new_data_processed)

然后,打印我們的預測結果:

J = np.random.choice(range(0,len(new_data_processed)),5)
for j in J:
print('Review number %i: \n'%(j))
print(target_data['review'].loc[j])
print('Classified as %i (1=good, 0=bad)' %(y_pred[j]))

正如我們所看到的,所有上面這5條被分類為1的隨機評論實際上也的確都很好!

現在,讓我們再展示一個更直觀的上述數據的統計計數結果示意圖:

四、其他一些問題

本文中,我們具體做了哪些工作?

首先,我們肯定ChatGPT是非常棒的。

然后,我們使用ChatGPT為代理模型構建了一個數據集。更具體地說,我們使用ChatGPT來組建酒店的好評和差評數據。

接下來,我們使用我們構建的標記數據集來訓練機器學習模型。本文示例中,我們所使用的模型是隨機森林分類器(Random Forest Classifier)。

最后,我們在一個新的數據集上測試了我們的訓練模型,并得到了令人滿意的結果。

那么,上述案例中還有改進的余地嗎?當然還有很多,例如:

1. 我們可以獲得OpenAI高級服務,并生成超過1000條評論。

2. 我們可以通過提供不同的輸入來提高我們的查詢技能,也許還可以使用其他語言而不僅僅是英語。

3. 我們還可以通過進行一些超參數調整來進一步改進機器學習模型。

現在,我不由得想起了以下一些問題。

關于如何以及誰將使用OpenAI公司的ChatGPT呢?這方面自然存在很多擔憂。雖然我不是一名律師(更不用說是一名倫理學人工智能專家),但我可以想象這個工具在許多方面和許多不同層面上是多么危險。

我強烈反對那些對ChatGPT的性能印象不深刻的人,因為我覺得它非常令人驚訝,而且我很高興看到這項技術會如何發展。不過,我希望本文中介紹的這個玩具例子也能在我的讀者中引起一些共鳴。

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標題:??Hands-on Sentiment Analysis on Hotels Reviews Using Artificial Intelligence and Open AI’s ChatGPT, with Python??,作者:Piero Paialunga


責任編輯:華軒 來源: 51CTO
相關推薦

2023-05-29 08:00:00

ChatGPT人工智能機器學習

2023-03-16 08:00:00

機器學習深度學習人工智能

2018-09-04 11:45:31

前端JavaScriptNodeJS

2017-10-10 13:13:48

2024-08-13 13:11:02

2017-03-21 10:55:22

大數據

2016-12-07 14:23:48

KNIME數據分析情感分析

2023-02-03 11:40:49

機器學習分析情感

2017-05-15 14:00:28

大數據Python情感極性分析

2018-06-19 08:35:51

情感分析數據集代碼

2018-09-02 15:15:30

Rpython租房

2012-04-26 14:03:24

SAP

2017-12-20 09:52:50

2016-12-07 14:56:51

KNIME數據分析

2017-10-10 15:42:56

Python鹿晗關曉彤

2016-12-07 14:45:25

KNIME情感分析數據分析

2023-12-12 09:00:00

2021-11-09 09:46:09

ScrapyPython爬蟲

2021-11-08 14:38:50

框架Scrapy 爬蟲

2017-07-12 10:44:31

CNNLSTMNLP
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 激情91 | 成人伊人网 | 精品亚洲一区二区三区 | 国产精品久久久久久久免费观看 | 国产国产精品久久久久 | 在线观看www高清视频 | 黄色一级网 | 性高湖久久久久久久久 | 成人在线视频网 | 热99精品视频 | 99热首页| 国产精品区二区三区日本 | 欧美极品在线观看 | 欧美日韩亚洲成人 | 精品av天堂毛片久久久借种 | 亚洲精品1区 | 欧美mv日韩mv国产网站91进入 | 国产一区免费视频 | 欧美狠狠操 | 一区二区三区在线观看视频 | 久久国产精品精品国产色婷婷 | 九九热热九九 | 国产三级在线观看播放 | 国产精品成人一区二区三区 | 国产精品视频久久久 | 在线观看成年视频 | 国外成人在线视频网站 | 亚洲性视频在线 | 国产亚洲精品久久久久动 | 免费激情网站 | 黑人巨大精品欧美一区二区一视频 | 精品一区二区三区电影 | 一区二区三区四区国产 | 欧美日韩精品在线一区 | 九九热这里只有精品在线观看 | 人和拘一级毛片c | 国产成人精品一区二区三区在线 | 国产精品一区二区av | 欧美亚洲网站 | 作爱视频免费看 | 日日操视频 |