發表文章

目前顯示的是有「自然語言」標籤的文章

[自然語言]術語筆記_語言模型N-gram(看前N-1個token,來預測下一個詞)、Corpus(語料庫)

圖片
https://books.google.com/ngrams/graph?content=*&year_start=1800&year_end=2022&corpus=zh&smoothing=3 上圖為Google Books的語料庫可發現 的這個字頻率出現最高 Language Model (語言模型) 如果說我們有一個由m個詞組成的序列(也就是一個句子),我們希望計算句子的概率。 根據鍊式規則,可得: p(w₁, w₂, …, wₘ) = p(w₁) * p(w₂ | w₁) * p(w₃ | w₁, w₂) … * p(wₘ | w₁, …, wₘ₋₁) 根據馬可夫鏈假設可得 p(w₁, w₂, …, wₘ) = p(wᵢ | wᵢ₋ₙ₊₁, …, wᵢ₋₁) Corpus/Corpora ( 語料庫 ) 語料庫是一個由真實文字或音訊組成並整理成資料集的結構化文本數據集。是自然語言處理(NLP)系統的基礎。 它可以包含從報紙、小說、食譜、廣播節目到電視節目、電影以及推文等各類內容。 https://botpenguin.com/glossary/corpus N-gram模型(看前N-1個token,來預測下一個詞) 是一種LM(Language Model),語言模型是一個根據機率判別的模型,其輸入是一句話(單詞的有順序性序列),輸出也就是這一句話的機率,也就是這些單詞的聯合機率(joint probability)。 常應用在「錯字修正」、「選字推薦」等。 以n-1個字來做input,預測之後應該output捨麼字。比方4-gram model就會用前3個字來預測第4個字output為何? 比方以Google Books語料庫N-gram推測 滷肉 下一個字機率最大是出現 "飯" N-gram模型定義(等號左側就為句子出現的合理性機率) 當 n=1 時,一個一元模型(Unigram)為,每個單詞出現機率連乘的機率,只看自己: 當 n=2 時,一個二元模型(Bigram)為,前一個單詞條件下再去計算第二個單詞的機率: 當 n=3 時,一個三元模型(Trigram)為,看前2個單詞去預測下一個單詞的機率: N-gram的N愈大愈好嗎? 當N值較大:對字詞的約束性更高,具有更高的辨識力,複雜度較高。 當N值...

[自然語言]術語筆記_詞袋模型BOW(Bag of Words)&詞集模型(Set of Words)

圖片
https://sep.com/blog/a-bag-of-words-levels-of-language/ 詞袋模型BOW(Bag of Words)-One-hot表示法 最早用於提取文本特徵提取手法 將文本直接簡化為一系列集合,不考慮語法和詞序關係,每個詞互相獨立。 該方式也被稱作詞袋模型(Bag of Words,BOW),只是把詞直接裝進袋子中,詞和文本關係就相當於文本是一個袋子。 早期較簡易的模型,對文本中資訊較多丟失。 最早被提出是為了解決文檔分類問題,目前也有應用魚NLP、CV等領域。 具體作法 對料語進行清理,並完成分詞,比方有一句話如下: 大魚吃小魚也吃蝦米,小魚吃蝦米。 對每個詞進行編號,形成字典(順序無關的流水號) {"大魚":1,"吃":2,"小魚":3,"也":4,"蝦米":5} 用0,1代表該詞是否在文本中出現,從而將文本紀錄為一個特徵向量。 大魚吃小魚也吃蝦米 =>[大魚,吃,小魚,也,蝦米] => [1,2,1,1,1]   吃出現兩次 小魚吃蝦米 => [0,1,1,0,1] 詞集模型(Set of Words) 若不考慮詞頻,減少模型複雜度則就稱為Set of Words。 常用在短文本分析。 大魚吃小魚也吃蝦米 =>[大魚,吃,小魚,也,蝦米] => [1,1,1,1,1]   One-hot表示法