---
# System prepended metadata

title: 文字與自然語言分析(上) Introduction to Text Analytics
tags: ['20200822']

---

# 文字與自然語言分析(上) Introduction to Text Analytics 
###### tags: `20200822`
王釧茹
中央研究院資訊科技創新研究中心 / 助理研究員
https://cfda.csie.org/

(前面30分鐘還沒醒)(Me Too)
## Basic Text Processing
基本文字處理 > 把文字變成電腦可以認識的數字
現在很多人都不學這個直接做deep learning

### Regular Expressions
正規表示法。
因為人會拼錯單字
正規表示法是會自動做修正，把寫錯的單字放到同一類裡面

```
1.[] 代表‘或’
Ex:
/[0-9]+[AaPp][Mm]/g

2.{n}   代表出現的次數
  {n,m} 代表出現的次數要介於n與m裡面
Ex:
{0,1}

3.^ 代表從頭開始
Ex:
[^0-9A-F]

太多跳過....
```

```
辨識電話號碼
/\(?[0-9]{3}\)?[-\s]?[0-9]{3}[-\s]?[0-9]{4}/g
Ex: 以下都是正確的格式
917-123-4343
222 234 9348
(123) 123 1234
7182343923
```

### Tokenization 
Segmenting 就是把字分開
Normalization 把相同意思的字找出來 如 run ran run
Segmenting sentences in running text 把沒寫完的字切掉


#### How many words? 
N = number of tokens 有幾個字
V = vocabulary 有幾種字
通常 N>V

### Simple Tokenization in UNIX 

### Issues in Tokenization
通常處理的順序是這樣的
1. 把標點符號拿掉
2. 把大小寫統一
3. 把相同意思的字放在一起
4. 把數字處理的 (one or 1)

就可以做接下來的處理的

### Word normalization and stemming
Lemmatization 把一個字變成一個最基礎的
stemming 把一些字拿掉，轉換成同一個"字"

Stemming出來可能不會是一個正常的字

### Bag-of-words Model
詞袋模型
很簡單、但很強大的模型
有三個特性
1. 不考慮文法
2. 不考慮字的順序
3. 只考慮字的"次數"

是一個向量模型
把文章變成一個高維度的向量
每一個向量代表1種字

### Term Features
One-hot encoding (是否有出現)
term frequency (TF) (字出現的頻率)
term frequency – inverse document frequency (TF-IDF) (字出現的頻率x字的重要性)

### TF
通常time frequency會做一個normalizing
例如TF/文章長度
來把一些雜訊濾掉

### TF-IDF
DF 代表 文字在不同文件中都出現
IDF 就是把DF做倒數。
因為當某一些字在不同文章裏面都出現時，這表示這個字大家都在用、就表示這個字不重要。

IDF(d) = log(|D|/df(t)+1)
D表示總共有幾篇文章
df(t)表示字出現的頻率
+1的目的是要讓他不是0

![](https://i.imgur.com/JAywQg7.jpg)

111:0.001206 表示第111種字的TF-IDF
然後0~110種字的TF-IDF都是0

### NLP Tools
Word segmentation (Chinese)
>❖ CKIP: https://ckip.iis.sinica.edu.tw/project/ws
❖ jieba: https://github.com/fxsjy/jieba
❖ jieba-zh_TW: https://github.com/ldkrsi/jieba-zh_TW
❖Parsing tools
http://nlp.stanford.edu:8080/parser/index.jsp
❖ Stanford CoreNLP
 https://stanfordnlp.github.io/CoreNLP/
❖ CKIP
 https://ckip.iis.sinica.edu.tw/project/parser

NLTK (python): 比較傳統的寫法
❖ https://www.nltk.org

spaCy (python): 有用到deep learining來寫
❖ Industrial-strength natural
language processing in
python
❖ https://spacy.io


## What is Text Analytics?
也可以表達為text ming
利用NLP把文章內的非結構化的文字轉化為電腦可以讀的結構化的文字，然後才能做AI分析

### Tasks in Data Mining
是data mining的一支
data mining
> predictive test 要給一個預測值，通常是監督式學習
> Descritive test 要給一個描述，通常是做分群問題，通常是非監督式學習

### Supervised vs Unsupervised Learning

#### supervised learning
分類問題
> Confusion matrix很重要
> Recall, Precision, F1 score, Accruacy應用不同


迴歸問題

排序問題 ranking
>2006年之後開始被重視
>ranking與regression很像，但有差異

#### Unsupervised Learning
分群問題 Clustering
K-means 

## Deep Learning for NLP
Deep learining希望能夠做一個medel來解決所有的問題
在做machine learning時，都要手動抽featrue
Deep learning，讓電腦自己學feature，只是提供raw data

## Recent Development of NLP
以前都用bag-a-word model

Distributional 
2013-2018
有前後文的概念
概念上，就是每個字都給一個低維度的dense vector
當前後文相近的文字出現時，每個文字在空間維度上會很接近

## Static vs Dynamic
Static wrod embedding 

Dynamic
1. 不是一個很單純的向量，而是一個經過函數計算的結果，每個字不會有一個固定的embeding
2. 可以比較容易分析語意的差別

Data -> Pre-training model -> fine tunning
文本  -> 學出一個function    -> 一般我們在做的事情，改變模型裡的一些參數

最可怕的是，fine tunning很容易做，但不知道基礎的知識在做甚麼




