# 文字與自然語言分析(上) 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  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很容易做,但不知道基礎的知識在做甚麼
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up