---
# System prepended metadata

title: 社群媒體分析

---

社群媒體分析
===
```
---
每週紀錄分成三部分
1.老師上課觀念筆記 
2.自我重點複習
3.自我補充資料
4.程式碼複習
---
```

week2 Ethics in Data Analytics
---
什麼是**倫理**?
> 一套社會公認的準則
> 會對社會有利 ex:交通規則、不丟垃圾

資料分析的倫理
>在該領域還很原始
>ex:Email spams 會造成困擾 => 用來倫理規範

隱私權
>有些事情雖然不犯法，但揭露會對個人造成傷害
>也可能對權益造成傷害

---

**基本文字處理**
```xml
步驟:
    抓取資料
    資料前處理
    斷句斷詞
    詞性標記 (找該詞的屬性 ex: adg.,adv.,n.)
```
**抓取資料**
確定資料來源:新聞、Dcard、PTT
>若是產品評價，需過濾掉假的評價

**資料前處理**
目的:轉成正規的文具
>1.格式統一(去詞個格式化標籤、全形轉半形)
>2.去除或取代符號
>3.更正標點符號使用

**斷句斷詞**
>斷句:以。?!為分隔符號
>斷詞:用斷詞剖析器，有時須自建辭庫(中文常用Jieba)
>加入自建斷辭時，需加入priorities

**停用字**
>斷辭完成後，有些辭是不需要的，這些即為停用字
>中英都有停用字
>在停用字時 有種作法叫做Stemmer :以英文為例 goverments & govern 等是類似，因此會把ment、s、ing或一些字結尾去除變成同一個字，字少時就比較好處理
>另一種叫做Lemmatizer 還原=>詞性變化時，把它還原成原來的樣子


**詞性標記**
斷辭完後飆上詞性
>/NN :名詞類
>/BA :副詞
>/JJ :形容詞類
>/RB :副詞類

常見技術->字詞頻率
找出在文本裡有出現XXX 
就進行段詞，標詞性
擷取要得詞性
計算這揭詞出現的次數

可產出文字雲、共現相關圖(設定出現至少幾次 N、相關性是多少 cor)、Heatmap

**總結**
*斷詞/標詞性
*停用字
*Data cleaning 花70%時間


week3 Tidy Data
---
Tidy Data ? 
把資料集盡量用成結構化的方式
思考方式:每欄都會是變數名稱


week4 Sentiment Analysis
---
什麼是情緒分析(或叫 opinion mining)?
找出對某東西的看法或情感

上一層為 subjectivity analysis 主觀

what is **subjectivity**
一個句子裡表達你的 意見、情感、情緒、評估、信仰、猜測，相反則為客觀

分成主客觀句子有什麼用途?
>Information Extraction:若想要客觀的評論，可抓取有用資訊
>Trend Prediction:會需要主觀句子


**Sentiment Analysis**
分成幾個層次
document(review) level:
目的:找出評論的sentiment
常用於電商網站留言上，分析使用者對產品之情緒

sentence level:
比document level更細緻，一個句子中是正向、負向、普通情緒

feature level:
又更細緻，給一個句子，來找出對什麼feature有意見(困難的對)

Opinion holder:
一個句子裡可能有多個opinion holder，要找出來
 
two types of opinions
direct opinion:
eg.:xxx is great

camparisons:
car x is cheaper than car y


要怎麼找出帶情緒的詞->利用詞庫(各種語言都有一些)
**Main Resource(Lexicon)**
最常用LIWC 中英都有 從語言學和心理學做分類

**NRC**
也分成很多類別，負面較多，給0和1來表達是否負面
Bing Liu

**AFINN**
每個詞有一個分數(-5~5)表赴到正向

**MPQA**
包括 詞庫 和 文本
句子中的詞可能有不同意思 sense (對象是詞的意義) 再用lexicon來判斷情緒


那些是情緒字
Adj 大宗、Verb、N 也都可能帶有情緒
week7 文辭和文件分析
---

> document & word 比較
如何比較兩個文件(字)很相近 or 差異很大

**TF - IDF**

文件相似度 最常使用 (TF - IDF)**
使用 Vector Space
把一個文件當作vector
**n-gram**
**Word Similarity**
比較兩個字是否類似

因為現在輸入都是一堆Corpus(文本)
從 Corpus 中決定兩個字(文件)的類似度


### 如何表達一個文件(?
-1-

把文件表達成一個向量
* 字的重要性(出現次數多的字)
* Term Frequency 
    把document 當成是一個維度，裡面是字出現的維度
    若太大可以使用相對的方式縮小(除法)


-2-
依tf來說 缺點是:字出現很多，但重要性可能不是很高 => Inverse document frequency weight

N : 全部文件




week14 Text Classification
---
* classificatiob process
* features in text
* classification methods
* evaluation

---
Classification
=>input 通常是:人對example object 
e.g. 一個新聞架構 假新聞 為 0 真新聞為1 當作training data
會學出一個模型去預測
來預測是真或假新聞

**分類應用**

>分類主題 和LDA的差別在 LDA是非監督式 這邊是監督式
>垃圾郵件分類
>這本書是否某個作者寫的
>分類readbility，碩士能讀懂或是某個程度才讀比較適合
>type of question 政府蒐集問題來分類




Features in text 
因為是unstructure 要轉乘structure
抓出我要的terms
把terms作為feature (因此feature 可能很多)

training data的話須加上label

因此:
object及是文件
terms 及是 feature
weights 是 TFIDF的weight

跟傳統classification相比
會有非常多feature
很稀疏，大部分的值是0

可以在文件中增加一些features
像是:
number of words
average word length
不一定只有term 可以加其他meta data


## Classification Methode

1. lean a model from training data
2.  Takes inputs as a feature vector
    output是一個class 或 a probability to each class
4. a classifier可以是 
    Memory based method
    =>不需要model，KNN
    作法:假設有兩個label 紅與藍
    給一個unlabel的資料，他去找最近的k個資料，以多數決去決定是藍或紅
    
    好處:簡單
    問題:k要設多少，鄰居是什麼，需要一個方式來衡量doc 和doc之間的相似度(通常用 cos(doc1,doc2)來計算)
    可能很慢
    

    

普遍方法:
有一個模型
like:logistic regression、Decision tree、SVM、Random Forest XGboost、Neture Network(除非資料很大才用)

邏輯是回歸:
本質上是一個binary classifier(非0則1)
An extension to liner regression

可以support 各種feature
可以資料量大
可以分類到 multi class setting
 
classifier 表現




