:::

Python自然語言處理應用:命名實體識別與情緒分析 / Python Natural Language Processing Applications: Named Entity Recognition and Sentiment Analysis

3月 17, 2025 , , 0 Comments Edit Copy Download

2024-1230-184829.png

儘管大型語言模型的盛行讓大家瞭解到AI分析文字的能力,但直接以命名實體識別和情緒分析來處理文本的做法,在具有特定目標的研究報告裡仍扮演著重要的角色。這篇就讓從我們從學習Python的使用,一步一步踏入命名實體識別和情緒分析的領域吧。

Although the prevalence of large language models has made people aware of AI's ability to analyze text, direct processing of text using Named Entity Recognition (NER) and Sentiment Analysis (SA) still plays a vital role in research reports with specific objectives. This article will guide us through the process of learning Python, step by step, to delve into the realm of Named Entity Recognition and sentiment analysis.

Short URL: https://l.pulipuli.info/24/nsysu 


簡介 / Introduction

在大數據時代,如何從巨量的非結構性文字資料中萃取出有價值的資訊,以支持決策和洞見,已成為一項現代人應具備的重要技能。本次演講將介紹如何應用當前主流的深度學習模型,聚焦於自然語言處理(NLP)的兩個核心議題:命名實體識別(Named Entity Recognition, NER)與情緒分析(Sentiment Analysis)。我們將以實作教學的方式,帶領大家深入了解這些技術的應用場景與實際操作。

演講中,我們將使用 Python 作為主要程式語言,並在 Google Colab 上進行操作,讓您能夠動手實作,親身體驗 NLP 的魅力。請與會者提前準備好電腦,並註冊與登入 Google Colab,與我們一起探索自然語言處理的世界,共同激發更多創新的應用想法!


Part 1. 環境配置篇 / Environment Configuration

Python_-_1._-_2024.png

https://docs.google.com/presentation/d/18-rxpKN3MApAbb27PSvx_uCvWzOaSHSOgGufDVrA6s8/edit?usp=sharing

大綱 / Outline

Python_-_1._-_2024_-_image28.png

  • 教材來源
  • 實作1-1. 開啟Colab
  • 認識Jupyter Notebook:檔案、程式碼
  • 實作1-2. 分析檔案並儲存

教材 / Materials

實作1-1. 開啟Colab

實作1-2. 分析檔案並儲存

內容 / Description

Python_-_1._-_2024a.png

這份投影片的目的是讓大家配置好能夠撰寫Python的環境。我們使用了Google Colab來線上撰寫Python,大家只要用瀏覽器連上網際網路便能執行。整個操作只要照著投影片的指示,一步一步進行即可。

Python_-_1._-_2024b.png

接下來我會介紹 Jupyter Notebook 的基本概念,包括程式碼區塊 (Code Block) 和執行結果 (Result),以及檔案 (Files) 之間的差異。接下來我一一說明檔案的取得、上傳和下載的操作,以及程式碼的複製與貼上操作。再來講解Python程式碼的基礎知識,以及如何使用AI來協助閱讀程式碼。

Python_-_1._-_2024c.png

最後,我會帶領大家完成專案實作 1-2,也就是分析檔案並儲存結果的練習。我會再次強調實作的步驟,包括開啟 Colab、上傳檔案、貼上程式碼、執行程式,以及查看結果檔案 output.txt。透過這個專案實作,大家可以初步體驗到 Python 在自然語言處理上的應用。


Part 2. 命名實體篇 / Naming Entities Recognition

Python_-_2._-_2024.png

https://docs.google.com/presentation/d/1JiUNFHrUxf08y90hMO4nCMb7JKiU2fhYOuLVdSQSqn0/edit?usp=sharing

大綱 / Outline

Python_-_2._-_2024_-_image4.png

  • 命名實體篇:命名實體識別、應用、工具
  • 實作2-1. 命名實體識別:深入細節
  • 實作2-2.從檔案NER:額外挑戰

教材 / Materials

實作2-1. 命名實體識別

實作2-2. 讀取檔案實作NER

內容 / Description

Python_-_2._-_2024c.png

在這份投影片中,我先介紹命名實體識別(Named Entity Recognition, NER)的基本概念,說明其定義、應用領域以及所面臨的挑戰,例如同名、歧義以及多字複合詞等問題。接著,我列舉了常見的命名實體類型,如人名、組織、地點、日期時間等,並展示了 NER 在新聞內容分類、人物關係圖建構以及閱讀輔助等方面的應用。

Python_-_2._-_2024d.png

在工具方面,我介紹了多種 NER 工具,包括僅支援英文的 Stanford NER 和 Illinois Named Entity Recognizer,以及支援多國語言的 GATE 和 spaCy。特別針對中文處理,我著重介紹了中研院 CKIP Lab 的相關資源,包括 CKIP NER 以及 CKIP Transformers 工具,並透過實例說明其如何辨識文字中的命名實體,並標註其類別。

Python_-_2._-_2024f.png

實作部分,我帶領大家進行了兩個實作練習。實作 2-1 著重於新聞文本的命名實體分析,讓大家熟悉 NER 的基本流程,從設定文本列表、準備 NER 工具,到執行 NER 分析並儲存結果。實作 2-2 則進一步挑戰從檔案讀取文本進行 NER 分析,並鼓勵大家思考長詞優先的做法可能帶來的問題。

Python_-_2._-_2024g.png

最後,我還為進階學習者準備了額外挑戰,包括探索 CKIP NER 的辨識極限,以及如何篩選特定類型的 NER 結果。我也同時鼓勵聽眾嘗試使用AI 工具輔助程式碼的撰寫,讓大家的想象力能夠盡情發揮。


Part 3. 情緒分析篇 / Sentiment Analysis

Python_-_3._-_2024.png

https://docs.google.com/presentation/d/1igkuQmNBzqsZsFCmxyppRTe3Sn3OrdlEjYgyRR3I9wk/edit?usp=sharing

大綱 / Outline

Python_-_3._-_2024_-_image4.png

  • 情緒分析:應用、工具
  • 實作3-1. 情緒分析:深入細節、額外挑戰
  • 結語

教材 / Materials

實作3-1. 情緒分析

內容 / Description

Python_-_3._-_2024b.png

在這份投影片介紹的主題是情緒分析。一開始我們一樣先從情緒分析的基本概念開始介紹起,包括它的定義、不同層級的分析範圍(例如文件層級、句子層級、面向層級),以及情緒極性的分類(正面、負面、中性)。接著,我會說明情緒分析的幾種常見方法,例如字典法和機器學習法。接著,我會展示情緒分析在各領域的應用案例,例如顧客回饋意見分析、選舉新聞情感變化分析,以及文學作品中的情緒分析等等,讓大家了解情緒分析的多元應用。

Python_-_3._-_2024e.png 

在工具方面,我會介紹一些常用的情緒分析工具,像是NLTK、TextBlob、VADER、SpaCy、Flair等等,並介紹本次實作會用到的情緒分析模型Chinese-Sentiment-Analysis-Fund-Direction 。這是由sanshizhang在Hugging Face發布、專門處理簡體中文的基金文本情感分析模型,它能夠為簡體中文的文字給出負面、正面、與中性三種極性的機率,這可以讓我們用它來做很多情緒分析的應用。

Python_-_3._-_2024f.png

實作部分,我會帶領大家實際操作一個新聞情緒分析的範例,從讀取CSV檔案、準備分析工具,到執行分析並儲存結果,一步步教大家如何使用Python進行情緒分析。我也會深入探討程式碼細節,特別是中文簡繁轉換可能帶來的影響,並提供額外挑戰,鼓勵大家嘗試分析英文新聞,或是將命名實體識別與情緒分析的結果合併。

Python_-_3._-_2024g.png

最後,在結語部分,我會強調情緒分析是另一種看待文本的方式,並提醒大家注意工具的適用範圍,以及從大量資訊中獲取洞見的重要性。我會鼓勵大家思考如何將自然語言處理的技術應用於實際問題,並提醒大家不要只關注分析的結果,更重要的是從中學習與成長。


結語 / Conclusion

42af3f45-6f7f-4761-b643-135ae40dc727.jpeg

感謝中山大學的黃教授邀請,以及臺下各位認真學生的聆聽。這次我重新構思了Python教學的步驟,將整個教學操作拆分的非常細。一開始同學們手忙腳亂,臉上個個露出了跟不上進度的恐慌感。但上到最後,每個人竟然都駕輕就熟,滿臉都是「啊,原來Python這麼簡單,沒什麼了不起啊」的自豪感。

此時有位同學感慨地說:「這是因為老師把程式碼都讓大家複製貼上、包裝的很好,你不知道最難的是瞭解裡面程式碼的運作嗎?」嗯... 雖然當下我不好意思說什麼,不過我們現在寫的這些Python程式碼,以組合語言的角度來看應該都很簡單吧。不用太過煩惱記憶體的配置方式,高階程式語言寫起來其實都很像是堆積木的玩具呢XD 

不管怎麼說,程式語言終究只是工具,最重要的是能夠幫助大家達到目的。課堂上沒能講清楚的部分,現在也可以用AI幫你解答了。在這個不斷變革的時代裡,會不會寫程式已經不是限制大家的理由,大家的想法和創意才是越來越重要的關鍵!


那這篇關於Python自然語言處理的教學就到這裡了。寫到最後要來問大家的是,你覺得什麼地方可以用到命名實體跟情緒識別呢?

  • 1. 從社群媒體裡面找出被提到的人名?
  • 2. 從客戶的來信分析他們有沒有要簽約的意願?
  • 3. 從財經新聞來預測股市的走向?
  • 4. 其他:歡迎在下面留言,分享你的想法!