0. 時間和成本節省的數據集構建:使用ChatGPT進行數據標記
為了訓練人工智能模型,需要一個由“問題”和“答案”對組成的數據集(監督學習標準)。
在這種情況下,給數據打標籤,也就是“標記”。
1. 數據的重要性,高質量數據是什麼?
直接開發AI模型的人可能經常會感覺“數據就是一切”。
當然,對於優秀的AI模型,最新的算法、高性能計算等重要因素是多方面的。
但是,如果您是AI和數據相關領域的初級從業者,我認為首先關注數據的價值是明智的選擇。就像高質量的數據一樣。
“高質量”的數據是什麼?為什麼這麼重要?
現代AI技術主要是基於基於人工神經網絡的深度學習模型。
這種人工神經網絡正在模仿人類的學習方法。
直到嬰兒開始說“媽媽”
將母親稱為媽媽->高質量數據(準確標記)
你可能已經見識過很多次。->大量數據
如果將母親稱為父親->低質量數據(不準確標記)
嬰兒會感到非常困惑。
隨著時間的推移,嬰兒學會了將“養育和照顧我的人”稱為“媽媽”。->模式學習
學習從數據中提取有意義的模式,這就是人工智能模型學習的核心。
使這變得更容易的是高質量數據。
高質量數據對AI模型來說是一位優秀的老師。
2. 為什麼讓ChatGPT負責標記
前面描述了數據的量和質量的重要性。
然而,給大量數據打上良好標籤是一項需要持續投入精力的重複性工作,這是單調乏味且繁瑣的工作。
因此,許多政府機構和企業通常將數據標記工作外包給外部公司或臨時工。
在這種情況下,根據Hashscraper的經驗,將面臨許多問題。
**首先,無法保證高質量數據。
**AI模型開發人員設定了AI模型的方向,
並且有關數據標記的標準。
即使將這些標準詳細地傳達給標記人員,每個標記人員可能存在差異,
即使一個標記人員在單獨工作時也可能在重複工作中失去專注。
由於人類的原因,要保持完美的一致性可能有困難。 (*人為錯誤發生)
*其次,成本很高。
*隨著需要處理的數據量增加,需要在短時間內構建數據集,需要更熟練、更多的勞動力。
使用ChatGPT進行數據標記也不是完美的,並且在處理困難問題時可能會遇到撰寫提示的困難。
但是從節省成本、節省時間、保持一致性的角度來看,這是非常有效的。
此外,如果您是相關領域的從業者,您必須熟悉大型語言模型,並且必須學會如何與語言模型交互。
我敢斷言,未來,提示工程將成為提高工作效率的基本技能。
3. 使用ChatGPT進行數據標記
假設要創建情感分析數據集。
3.1 獲取OpenAI的API密鑰
在本帖中,我們將使用ChatGPT的API進行標記,而不是在網絡上進行標記。
首先,您需要在下面的鏈接中登錄OpenAI並註冊付款方式以支付API調用費用。
https://platform.openai.com/
然後,您需要下載API密鑰。
在創建API密鑰後,請務必單獨保存它。
因為它只會暴露一次,如果忘記,就需要重新創建,請注意。
3.2 撰寫提示
text = '맛있는 거 먹어서 기분이 너무 좋다.' # 감정 분석 대상 텍스트
prompt = f'''You're an assistant, labeling data on a consistent basis.
Label the given text with one of the following sentiments: Positive, Negative, or Neutral.
If you can't determine a sentiment, label the text as Neutral.
Do not enclose your output in double or single quotes, just the label.
Follow the example to analyze the sentiment.
given text: 나 너무 우울해
sentiment: Negative
given text: 오늘 아침 일찍 출근했다.
sentiment: Neutral
given text: {text}
sentiment: '''
這裡有一些撰寫提示的技巧,
- 用英語撰寫
截至2023年8月,目前語言模型存在令牌數限制。
無法無限制地提問,並且令牌數越多,成本就越高。
ChatGPT對英語的令牌效率最高。
簡單來說,即使問同樣的問題,如果用英語提問,成本也會降低。
此外,比較結果表明,ChatGPT在英語方面表現最優秀。
- 為ChatGPT指定角色
在撰寫指示之前,為ChatGPT指定角色
- 提供示例
提供有關輸出格式和方式的指南
這也被稱為Few-shot Learning。
- 詳細但清晰地撰寫
這是為了令牌效率和引導準確答案,
提供詳細說明,同時盡量簡潔明了。
參考上述內容撰寫提示。
3.3 請求API回應(設置參數)
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
temperature=0,
messages=[
{"role": "user", "content": prompt}
]
)
sentiment = response.choices[0].message['content']
print(f'문장: {text}\n감정: {sentiment}')
문장: 맛있는 거 먹어서 기분이 너무 좋다.
감정: Positive
如果直接運行代碼,您應該能夠看到相同的結果。
對於某些參數,可以參考以下說明。
- temperature
這是最重要的參數。
此參數控制模型回應的多樣性。
溫度越高,回應越多樣化和有創意,溫度越低,回應越一致。
我們正在進行“數據標記”,因此將其設置為0(最低值)。
語言模型在生成答案時會對多個答案進行概率計算。
'temperature=0'意味著從生成的答案中選擇概率最高的答案。通過嘗試提出更複雜的問題,您將了解到'temperature=0'將導致重複相同答案。
此外,我們之所以不在網絡上進行數據標記是因為以下原因。
1) 為了標記大量數據,需要編寫重複性操作的代碼。
2) 我們在網絡上使用的ChatGPT的溫度值是固定的,無法調整。
- messages的role: user, assistant, system
在代碼中,只編寫了'user'的消息,但實際上有'user'、'assistant'、'system'三種。
'user'消息應包含用戶想要向ChatGPT提出的問題或指示。
'assistant'消息是為了讓ChatGPT參考先前對話而提供的消息。
當我們在網絡上與ChatGPT對話時,可以看到ChatGPT在記住先前對話的同時進行對話。這是可能的原因是當用戶提問時,ChatGPT也會收到先前對話的內容。因此,在進行數據標記的工作中,這是不必要的。
'system'消息指定了ChatGPT的行為方式。
我們為'user'消息指定了ChatGPT的角色,但這些內容也可以寫在'system'消息中。但在這種簡單的標記工作中,沒有必要單獨撰寫系統消息。
3.4 如果要標記大量數據呢?
到目前為止,我們展示了對單個數據進行標記的過程。如果您有一定的開發能力,重複標記大量數據可能不會太困難。
但是,需要注意的是良好處理API調用錯誤。
由於在短時間內進行過多調用或網絡連接不佳等原因,錯誤經常發生,因此通過處理異常情況,可以確保穩定的標記進行。
def sentiment_analyze(text):
prompt = f'''You're an assistant, labeling data on a consistent basis.
Label the given text with one of the following sentiments: Positive, Negative, or Neutral.
If you can't determine a sentiment, label the text as Neutral.
Do not enclose your output in double or single quotes, just the label.
Follow the example to analyze the sentiment.
given text: 나 너무 우울해
sentiment: Negative
given text: 오늘 아침 일찍 출근했다.
sentiment: Neutral
given text: {text}
sentiment: '''
try:
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
temperature=0,
messages=[
{"role": "user", "content": prompt}
]
)
sentiment = response.choices[0].message['content']
return sentiment
except:
sentiment = 'error'
return sentiment
df['label'] = df['text'].apply(sentiment_analyze)
4. 費用是多少?
截至2023年8月,主要使用的模型是'gpt-3.5-turbo'和'gpt-4'。
像情感分析這樣的簡單分類數據集,使用3.5模型就足夠了。
以'gpt-3.5-turbo'為例,用戶問題的價格為每1000個令牌0.0015美元,
gpt的回答價格為每1000個令牌0.002美元。
在本示例中使用的提示約為200個令牌。
簡單計算,3美元就可以標記約1萬條情感分析數據集。
但是,當處理複雜問題時,提示的命令也會變得更具體和複雜,使用3.5模型可能存在一定限制。
在這種情況下,使用gpt4模型可以解決許多問題,但考慮到成本是20到30倍,您需要謹慎決定。
5. 結論
對於簡單的重複性工作標記,考慮成本和性能,使用ChatGPT是毫不猶豫的選擇。但是,如果您需要將工作交給需要使用GPT4模型的複雜任務,則需要仔細考慮成本。
ChatGPT僅適用於文本數據集,依賴於OpenAI的價格政策,並且很難通過標記數據來創建超越GPT模型性能的AI模型。
但是,開源社區也在快速發展,這些缺點可能會在不久的將來得到解決。
在構建文本數據集時,我認為首要考慮的是優先考慮ChatGPT而不是人類標記者的方式。
ChatGPT是一個低成本、不休息且可以幫助我的助手。
希望您能善加利用,實現您的目標。




