社群媒體分析 === ``` --- 每週紀錄分成三部分 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 表現