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

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

8
介绍如何利用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是一個低成本、不休息且可以幫助我的助手。

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

也請閱讀本文:

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

继续阅读

Get notified of new posts

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

Your email will only be used for new post notifications.