NLP and Web Applications

自然語言處理與網路應用

謝舒凱 GIL,NTU

Week4: Python and Web Applications

NLP and Web Applications

今天主題

  • (Sentiment Analysis with Streamlit)

  • Advanced streamlit apps with streamlit components

  • NLP with Transformers and others

  • (Crash course: Docker) and Assignment (1)

NLP and Web Applications

先看上次大家的加分作業

NLP and Web Applications

情緒分析 (補充)

  • NLP 具影響力的應用之一是情緒分析 (sentiment analysis)。情緒分析是指將自然語言的文字轉換成情緒的極度分數 (polarity),例如:正面、負面、中性等等。厲害的情緒辭典可以應付許多場合了。

    NLP 較有影響的,除了劃時代的演算模型,另外就是基礎語言資源(language resources)。

NLP and Web Applications

情緒分析應用面非常廣

NLP and Web Applications

多想一些情緒表達實際應用的例子

NLP and Web Applications

語用、認知、多模態、情緒

NLP and Web Applications

情緒分析的兩種方法與資源

categorical and dimensional (continuous) approaches

  1. Categorical: (sentiment) positive, negative, neutral/ (emotion) happy, sad, angry, etc. (cf. Ekman 1971)

  2. Dimensional: valence and arousal.(cf. Russell 1980)

    • 情緒是由兩種向度的核心感覺變量 (core affect variables) 組成的:一種是愉悅感 (valence),另一種是刺激感 (arousal)。愉悅感是指人們對於事物的喜愛程度 (positive feeling toward the external stimuli),刺激感是指人們對於事物的興奮程度 (degree of inner emotional awareness)。愉悅感和刺激感的組合,可以形成樂、平、怒、哀、恐、驚等六種情緒。

情感計算

NLP and Web Applications

Categorical approach

從現存的語言資源來看,(1) 方法有幾種架構:

  • ANEW (the Affective Norms for English Words),LIWC(and Sa?), NRC emotion lexicon

  • SentiWordNet,SenticNet.

  • 以上資源都有中文(嘗試)版,不見得完整。中文情緒資源整理回顧可見這篇

NLP and Web Applications

Dimensional approach

  • 從認知語言的角度,要知道我們是在關心說者還是聽者的情緒。

  • Chinese EmoBank: containing 5512 words from six different source domains.

NLP and Web Applications

問題討論?

--

  • 情緒表達有粒度、有層次、有面向。
NLP and Web Applications

情緒表達的粒度

構式與情緒
(cf: Sentimental Constructions; 2022/LREC:CxLM: A Construction and Context-aware Language Mode)

NLP and Web Applications

情緒表達的面向

Aspect-based Sentiment Analysis

情緒分析的進階發展,是 aspect-based sentiment analysis,也就是說,我們不只要知道說者的情緒,還要知道說者對於哪些方面的情緒。

  • a subtask of sentiment analysis that focuses on identifying and analyzing the sentiment of a specific aspect of a product or service mentioned in a text.
NLP and Web Applications

用程式玩看看 ABSA (via: colab)
[https://pypi.org/project/aspect-based-sentiment-analysis/]

> pip install aspect-based-sentiment-analysis
NLP and Web Applications

情緒表達的層次

Sentiment (dependency) Parser

--

"我很擔心,但是保持樂觀。也許有一天好運厄運一起降臨,誰說得準呢?"

NLP and Web Applications

LOPE version

中文的情與意,與假情假意處理。

NLP and Web Applications

Sense and Sentiment Analysis

情意共構,可以共同表徵。

NLP and Web Applications

Chinese WordNet

全球唯一大規模人工標記中文詞義知識庫。

NLP and Web Applications

Chinese Sense Tagger and CWN Graph

> cd nlp_web/assignments/twNLP-app
> pip3 install -r requirements.txt
> streamlit run ./src/app.py

(ckip requires: python 3.7.5 or above)

第一次資料與模型下載會花較久時間

NLP and Web Applications

Docker version

> docker pull lopentu/twnlp-app
> docker-compose up
> GO TO http://localhost

NLP and Web Applications

中文 ABSA

中華電產學合作計畫

https://github.com/lopentu/casa/tree/main/src/casa

NLP and Web Applications

社會政治應用:以惡毒評論 toxic comment 為例

(identification/classification/generation) of toxic comments

  • 應用很廣泛,例如:
    • 檢測(/製造?)網路上的不當言論,或是檢測產品的評論中是否有不當言論。
    • 國安資安問題:兩岸輿情與國家安全視覺監控
      (cf: Keyword-centered Collocating Topic Analysis)
NLP and Web Applications

從語言模型到語言戰爭

  • 用語言模型來

    • 判斷一句話是否是惡意的
    • 用語言模型來生成惡意的句子
  • 簡單的版本 (from lopethon 2019)
    (觀看以下網站 建議擁有強固玻璃心 XD)

NLP and Web Applications

廣告

中文計算情意資源 (Chinese semantic-affective resources):歡迎加入我們的團隊,一起建構中文/台灣語言計算情意資源,讓中文 NLP 更進步!

NLP and Web Applications

上週大家已經透過簡單的情緒分析模型,了解了用 streamlit 開發 NLP-Web app 的基本流程。,這週我們要來看看如何使用 HuggingFace 來建立自己的模型。

NLP and Web Applications

先回顧開發步驟

Steps to Build Your Streamlit App

  • 初始化專案結構
  • 準備資料(來源)與模型
  • 設計前端介面
  • 撰寫主程式
  • 客製化網頁成分
  • 部署

或參考民間文件

NLP and Web Applications

Transformers, why?

  • 近年來,Transformer 模型 (Transformer model) 成為 NLP 領域的一大革命,其主要特色是使用 attention 來處理序列資料 (sequence data)。

  • 變成資源之一。

NLP and Web Applications

Huggingface

  • Huggingface 是一個開源的 NLP 模型庫,提供了許多 NLP 模型的預訓練權重 (pre-trained weights)。透過 Huggingface 的 transformers 套件,我們可以輕鬆地使用這些模型,並且進行微調 (fine-tuning)。

  • 先註冊一個帳號。

  • 玩玩官方提供豐富的筆記教學(建議直接開啟其提供的colab)。

NLP and Web Applications

In-class Exercise: HuggingFace with Streamlit

Load any Hugging Face model and build cool UIs using Streamlit.(參考官方文件)

  • 上週提到 copilot 這種 pair-programming,背後的語言模型就是 transformer 架構。我們來練習另外一個應用:重刻 writing with transformer(https://huggingface.co/spaces/merve/write-with-transformer)

  • 然後調整一下介面,想要練習的話,Hosting your Models on Hugging Face Spaces

NLP and Web Applications

[Crash course] 爬蟲

  • 爬蟲的基本概念
  • 爬蟲的基本流程
  • 爬蟲的基本技巧
  • 爬蟲的基本工具
NLP and Web Applications

Assignment (1)

二選一:

  • LOPE app 為參考,用 streamlit 完善一個正體中文 NLP 處理管線 app

    • 以 ptt 語料為來源 (可呼叫爬蟲)
    • 注意介面的整潔與易用性
  • 【挑戰題】:使用 streamlit 建立一個輿情警訊處理管線 app

    • 使用微博或黨報為輸入訊息
    • 以 ABSA 技術,針對「台灣」、「兩岸」、「蔡英文」、等自選相關關鍵字,進行情緒(監測)分析。

繳交:

  • 傳到 github classroom
  • share.streamlit.io , 或 Huggingface spae 部署你的 app,一樣寫在註解。