請更新您的瀏覽器

您使用的瀏覽器版本較舊,已不再受支援。建議您更新瀏覽器版本,以獲得最佳使用體驗。

記者筆記:跟 ChatGPT 協作資料新聞的經驗... 很棒!

讀+ READr

更新於 2023年04月27日17:08 • 發布於 2023年04月27日11:15 • readr
  • 這是一篇關於記者如何在《一躍成為經濟學人封面:臺灣如何成為外媒焦點》專題中與 ChatGPT 協作資料分析的筆記。

去年底由 OpenAI 推出的聊天機器人 ChatGPT,推出後在 5 天內用戶數量就達到了 100 萬,同時也引發種種熱潮和焦慮。對我來說,因為 READr 過去就有將深度學習(deep learning)應用在報導中的經驗,迎來的情緒不是焦慮,反而是對可以怎麼應用躍躍欲試。

不過雖然有經驗,過去我們得從自己打造模型開始,十分耗時耗力。但 ChatGPT 已經是個現成的模型,無論是翻譯、文章摘要,都能夠處理得不錯。直到 3 月官方推出了 ChatGPT 的 API,主管鼓勵我們可以想想怎麼應用在新聞中。

在認真使用 ChatGPT 之前,剛好看到 GIJN 刊登了一篇資料記者嘗試用它處理 PDF 文件的心得,結果並不理想。文末,他提出三個原因回應「ChatGPT 會徹底改變資料新聞嗎」:由於技術原因、經濟原因、修改成本 ,他認為在處理有規模的資料時使用 ChatGPT 不是一個好的做法。

而我在「一躍成為經濟學人封面:臺灣如何成為外媒焦點的報導中第一次與 ChatGPT 協作,得到不同的結論,我認為 ChatGPT 會是資料新聞相當強大的幫手。

(開始之前,我想先提一件事,我不是 AI 的研究者,此文僅記錄在產製新聞的過程中如何與 ChatGPT 協作。由於新聞報導有製作時間的限制,我在當下嘗試到可行的方案之後就會直接去做,或許還有更好的方式、或可以多嘗試幾個變因或設定,但這不在此文的討論範圍,也歡迎大家提供建議!)

我為何使用它

這篇報導中使用了兩組資料:

我主要是使用 A 資料集做較細緻的內容分析,包括主題、情緒等等。

一開始做這篇報導的時候 ChatGPT 還沒有公開網頁版。我自己做資料新聞的習慣,會先列出我想從這份資料問出的所有問題。而這份問題清單,會因為時間(大部分是這樣)或技術問題常常沒辦法全部問完。ChatGPT 出來之後,我邊做採訪,邊丟了一些 A 資料集中的英文新聞,請它幫忙摘要。

初體驗是失敗的

其實第一次嘗試是失敗的,我覺得很難用。原因是它的回應時間過長,又會一直斷掉,我就先擱置在一旁。

但某天發現原來 ChatGPT API 是有一些參數可以設定的。其中有個參數叫溫度(temperature)。官方的文件說,數值愈高,它的回應會更隨機;較低的值會讓它的回答更穩定和一致(focused and deterministic)。

例如同樣一個問題:

溫度設為 0,花費時間 24.32688 秒:

溫度設為 0.8,花費時間 26.89437 秒:

溫度設為 1.6,花費時間 27.52722 秒:

從這個例子可以看到僅以文章摘要為目的時,溫度設為 0 時它不但可以正確摘要,速度也稍微快一點點。再加上我重複了以上指令 3 次,溫度設為 0 的回答每一次的內容都是一樣的,其他組則每次回答用字都會稍有不同。

(溫度最高可以設到 2,但可以明顯發現設到 1.6 的時候就已經開始出現亂碼。BTW,目前大家都可以直接使用的網頁版 ChatGPT,預設溫度是 1。)

我回頭調整我的程式碼,做了兩件事:首先,將 temperature 調整為 0,因為我只是要它對既有的文本做摘要,不需要它的想像力;第二,我請 ChatGPT 幫我寫了錯誤控制的程式碼,讓它回應時間過長的時候可以直接重啟、或是遇到錯誤的時候跳過。

  • 問:這是我目前的代碼。可以請你加上「若 ask_chatgpt() 函式因為遇到這個錯誤,導致 15 秒以上沒有回應時,就中斷迴圈,重新啟動一次」嗎?(貼程式碼)
  • 答:

結果是:它運行得非常順利。雖然有時候遇上尖峰使用時間,還是有回應過久的問題,但基本上我可以在睡前執行程式碼,隔天早上就拿到跑好的結果,不用手動處理任何事情。

(註:由於我要分析的資料是從千位數起跳,我並不是用網頁版,是用 R ChatGPT 套件 來打 API ——簡單來說,就是你用網頁版問一個問題(請 ChatGPT 對一篇新聞進行摘要),可以透過程式語言的指令將這個行為輕鬆重複幾千次(請 ChatGPT 分別對幾千篇新聞進行各自的摘要),並將結果輸出成結構化的資料(例如表格)。)

我如何使用它:主題分析

在正式的報導中,有兩個分析我與 ChatGPT 協作,分別是主題分析和情緒分析。

報導中的主題分析
報導中的主題分析

在沒有 ChatGPT 以前,想要分析大量文本中的主題,我們通常是將文本斷詞,再統計其中的熱詞。

以這次的資料為例,我會把所有的新聞翻譯成英文,並斷成一個一個詞彙,再去統計各時間區間哪些詞最常出現。例如 2017 年的新聞裡很常出現 methamphetamines 這個詞,查詢之後發現這是一種毒品,而當時有臺灣毒品集團大量走私此毒品到印尼。

但單純統計詞彙,有時候就會出現一些對統計上沒有意義的詞:例如 Taiwan、China、United States 之類,出現很多次你也不太清楚意義是什麼。雖然可以用 TFIDF 等方式輔助,但無論是單純斷詞還是 TFIDF,都只能看到統計後的詞彙。

所以我請 ChatGPT「用中文摘要文中的主旨,如果有網址的話請忽略它」,得到了 7000 多筆文章的內容摘要,讓我想要找某段期間發生的事時可以快速瀏覽這些摘要。

報導有一個部分是主題統計,當時我下了另個指令是「請用 5 個字摘要以下事件」,嘗試將摘要縮短。不過發現就算是同個事件,它的回答也不會相同,沒辦法直接統計,我最後還是用人工的方式標記(short 欄),但相較於長摘要、甚至是沒有摘要的狀況下,人工作業的時間短得不可思議。

我如何使用它:情緒分析

另個部分是情緒分析,它呈現在報導裡的這張圖表上:

">

過去我們曾經嘗試過兩種情緒分析的方式,一種是用 Google 的 AI,當時請它標記選舉期間的新聞,但它判斷出來的內容大部分都是中性,要有極強烈的情緒字眼才會往正面或負面判斷。

另一種方式是直接抓出文本裡面的情緒詞來計算,這個有很多現成的詞典套件可以使用。例如,該文本裡面有 angry,那負面分數就會加一分。除了正面、負面,現有的分析套件還可以分析不同情緒,還可以有情緒的分類,例如憤怒、悲傷、喜悅、噁心、驚訝等等(推特上的美國大選:川普和拜登如何在社群媒體操盤選舉這篇報導有使用到)。

但這個方式的問題是判斷出來的情緒沒有「指向性」(兩種方式都沒有)。它只能分析出文本中有生氣的情緒,但無法分析「對誰生氣」。

相較之下,ChatGPT 就做得很好。我下的指令是「請判斷該文章的內容對台灣的情緒是正面、負面、還是中性的」,它給出的結果跟我人工判斷的結果幾乎一致。

尤其是近期許多報導跟臺海危機有關,文中有許多負面詞彙,但也有相關報導提到美國或日本的支持。在人工判斷中,我會判斷為正面的(因為臺灣得到國際支持),以計算情緒詞的方式可能就會被判斷為負面的。

以下摘錄幾個回答:

  • 正面。這篇文章報導了台灣的長者們在電子競技方面的努力和成就,展現了台灣社會對於長者的尊重和支持,對台灣的國際形象有正面的影響。
  • 該文章的內容對台灣的國際形象而言情緒是中性的,因為地震是自然災害,不是台灣政府或人民造成的,其他國家也都有可能發生地震。
  • 對台灣的國際形象而言,此文章情緒為正面,因為美國總統拜登對中國對台灣的行動提出反對,顯示美國對台灣的支持和關注。

我如何使用它:調整調整再調整

實作之後會發現指令是最重要的。給 ChatGPT 更精準的指令,就會得到更精準的答案。不過有時候也會發現有些題目 ChatGPT 就是沒辦法回答得很好(或是我的指令下得不夠好),就只能放棄。

畢竟 ChatGPT API 要付費。通常我會從小 model (例如 10 筆、50 筆、100 筆)測試找出適合的指令,再擴大到全部的資料。

這其實也跟我們過去找工讀生標記資料的方式很類似。通常我們都會先做小範圍的資料確立研究方法、建立標記規則,再發包出去給工讀生標記。

費用的部分,API 是以 token 計費(token 是字詞,如果你想知道你的需求要花費多少 token,可以參考官方的計算網頁),每 1000 個 tokens 要花費 0.002 美元。我們的實測結果大約近 4000 筆資料 200 元台幣。

我如何使用它:ChatGPT 的限制

對於在新聞裡面使用 ChatGPT,最常被討論的就是正確性。但我覺得在正確的使用方式、跟暸解其限制的狀況下,它並不是資料新聞應用的阻礙。

我想以「協作資料」為例。READr 過去執行過很多協作專案,政治獻金數位化看板追追追總統大選事實查核,透過鄉民貢獻資料,擴大了我們團隊原本可實作的新聞範圍。

協作的新聞專題最常被問到的問題就是:資料品質會不會不好?如何確定使用者輸入的資料是正確的?

但我覺得在新聞報導裡使用資料,本來就需要驗證,無論是哪一種資料。

以協作專案來說,通常在原本的專案流程中,我們會設計資料驗證機制。例如政治獻金數位化,你除了可以辨識圖片裡的文字,也可以驗證別人打的對不對。在後續資料清理的時候,這個驗證次數就會成為人工判斷很好的依據(例如驗證次數較低的資料、或是驗證結果有歧異的資料,都會被我抓出來看)。

其他的資料呢?我自己的經驗是,只要是人經手過的資料就有一定的錯誤機率。例如當初我們從監察院搬出政治獻金資料,就發現就算是政府機關,也會因為人工謄寫收據、人工登打進電腦過程中不小心寫錯或 Key 錯,造成資料的錯誤。

但這些錯誤都會在記者做資料清理、分析時被發現。我對於 AI 產生的資料,也是一樣的處理方式。

如何降低錯誤機率?

目前 ChatGPT 應用在新聞上最大的問題應該是「幻想」(Hallucination)),它會講出一些不存在或違反事實的東西。

已知的是,ChatGPT 是一個大型語言模型(LLM),當使用者提供的資訊不足以讓它判斷或回答時,還是必須流利地回答,所以就會開始亂掰。

在這次協作的過程中,有些降低錯誤的方式可以分享:

1. 提醒 ChatGPT 跳過網址

由於 ChatGPT 目前還不能連網。所以當文本裡面有網址的時候,它會嘗試去解析,但解析不了就會出錯。可以刪除文本中的網址,或是直接在指令中請它跳過網址。

2. 字數不宜太多

除了既有的字數限制,在國外論壇的討論中有提到 chatGPT 能處理的文本不宜大於 800 字,大於 800 字它判斷能力會降低,且出現幻想行為的機率會提高。

3. 不要提供過少的資訊

這會出現在比較複雜的問題。有時候我們會希望答案更精確,而限制它回答的方式,例如另一個專案中,我希望區分抓下來的資料是一個純評論文章、還是是一個事件描述:

但當我的內容只提供給它片段的敘述,例如:

就得到蠻恐怖的結果,ChatGPT 給我的摘要是「澤倫斯基與一位女性發生了親暱舉動,而這件事是一個假造的 deepfake 影片」(而這件事從未發生)。

我猜測是 ChatGPT 認為它的回答只能是「deepfake 技術的評論」或是「實際發生的 deepfake 事件」,但文本其實無法判斷,它就自己掰了一個(雖然在類似案例中它也曾成功回應「無法判斷」,但目前幻想跟成功的答案出現機率是一半一半)。

總之,就是要盡量提供足夠的資訊、以及在指令上下功夫,減少它迷失的機會。

4. 愈多輔助資料可以驗證愈好

在這個專案中,我請 ChatGPT 幫我摘要主題,但我還是有將文本翻譯成英文或中文,來協助我快速驗算 ChatGPT 的摘要對不對。

或是以第三點提到的例子,若我擔心我的資料裡面有些品質參資不齊的資料,導致提供給 ChatGPT 的資訊不足,我會再加上文本字數欄位,最後去針對少於一定字數的資料人工確認有沒有出錯。

另外,資料不會等於資料新聞。我們的經驗是跑完分析後,會帶著分析結果去採訪。若分析結果與受訪者的經驗不符(或其他資料的結果相衝突),就可以回頭去看是不是資料分析的結果有錯、或是其他原因。總之,除了最基本的抽查驗算,還有蠻多環節可以驗算。

我會推薦 ChatGPT 應用在資料新聞中嗎?

如果它可以執行你新聞產製流程中的既有步驟,那我非常推薦你試一試。

上述有提到,我自己做新聞的習慣是會先列出想問資料的所有問題,但礙於時間成本跟技術,常常無法全部都問。有 ChatGPT 以後,資料分析的門檻變得更低,這也讓我更有機會從資料中找出新聞點。

另外我自己最常用的其實是問它跟程式語言有關的問題,這方面它真的超棒!以 R 語言來說,或許以後只要知道 Rstudio 怎麼使用、基本代碼的長相就好了,不懂的就問 ChatGPT。

最後,AI 的發展飛快,如 3 月 24 日官方就開放了連網的插件(目前可以排隊登記試用),讓它確認自己有沒有在說謊。說不定目前讓人猶豫的缺點,很快就不適用了。

雖然結論不同,我還是想呼應開頭提到那篇文章最後提到的:直接試一試吧!說不定你會發現 ChatGPT 可以做的事情比想像中的更多。

相關文章

查看原始文章

更多國內相關文章

01

4000花剩400元!侵佔「弱勢兒NET禮券」 台南嬤孫3人到案:不知嚴重

三立新聞網
02

翁上班倒垃圾遭毒駕撞亡! 家屬淚訴「無勞保」求償無門

華視新聞
03

17天燒45萬!無償助花蓮災民「挖母屍」結果曝 吊車王:功成身退

三立新聞網
04

10鼠大嗑「豬肉全家餐」畫面曝光⋯她見1幕崩潰:噁吐!屏縣衛生局出手

三立新聞網
05

102歲人瑞娶看護惹議!遭疑神智不清 鄰居曝真實情況

CTWANT
06

警界彭于晏攔查酒駕「見美女縱放」 隔日衝飯店邀功遭起訴停職

TVBS
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...