介绍如何利用ChatGPT有效地对文本数据进行标记的方法。包括API的使用方法、费用以及优缺点的讨论。

介绍如何利用ChatGPT有效地为文本数据打标签的方法和优缺点。讨论API的使用方法、成本等。

3,970
介绍如何利用ChatGPT有效地对文本数据进行标记的方法。包括API的使用方法、费用以及优缺点的讨论。
目录

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是一個低成本、不休息且可以幫助我的助手。

希望您能善加利用,實現您的目標。

也請閱讀本文:

评论

发表评论

您的邮箱不会公开,仅用于回复通知。

继续阅读

Get notified of new posts

We'll email you when 해시스크래퍼 기술 블로그 publishes new content.

Your email will only be used for new post notifications.