跳到主要內容

發表文章

目前顯示的是 5月, 2023的文章

【Message Queue - RabbitMQ】模型架構

  對於軟體世界中Message Queue有興趣的朋友可以先閱讀這一篇「 【資訊軟體知識】井然有序的處理機制 - Message Queue 」建立基礎知識之後,再來看看這一篇會更容易進入情境唷! 這次就進入我們一般常見的MQ軟體「RabbitMQ」, 我們先以圖示來了解RabbitMQ的模型架構, 之後的章節再來逐一介紹如何去使用, 以及如何規劃與設計Queue的策略, 過程中皆以實作讓大家可以動手做並加深印象。 圖片來源 ● Publisher: 負責生產訊息。 ● Message: 由header跟body組成, 交換機主要根據header的內容來將訊息送到正確的Queue。 ● Connection: 用於傳遞消息的TCP連接,因此也可以採用SSL來提升傳輸安全性。 ● Channel: 在同一條TCP connection中可以建立許多的channel,不同的執行緒可以藉由使用不同的channel做出訊息隔離,同時又可以共用同一條TCP connection。 ● Exchange: 主要負責將Message送往正確的Queues。 ● BindingKey: Exchange與Queue之間建立關係的key。 ● Queue: 消息隊列,儲存訊息的地方。 ● Virtual Host: 主要達到資源隔離的效果,也用來做權限管理,一個Virtual Host裡面可以有多的Exchanges、Queues,而權限控制的單位則是Virtual Host,可以理解為每個用戶擁有自己的獨立資源。 俯瞰上面的架構圖搭配每個元件的介紹後, 從左而右很簡單, 就想像一下真實情境「郵件配送」的場景, 送件者(Publisher)將郵件(Message)透過各種渠道(臨櫃/郵筒)將郵件送至郵局(Broker), 而郵局則負責排序、分類, 依照距離、優先程度進行配送, 郵差會根據處理過後的訊息配送至各地區的收件箱, 而收件者(Consumer)則根據自己的時間去收件箱領取自己的信件, 這就是整個MQ模型的運行實例, 其實並不難, 只是將送與收進行分流有效率的處理, 避免等待造成擁塞, 包括現代的物流都有著MQ的影子, 所以MQ在傳輸上引入了不同的流程, 讓彼此不必等待, 值得我們好好的學習一番。 圖片來源 下一個章節將會談談如何將RabbitMQ以D

【自然語言處理 - 概念篇】 探索TF-IDF, 關於詞的統計與索引隱含著什麼奧秘呢?

  所謂TF-IDF是由兩個名詞所組成的, 分別是「詞頻(Term Frequency,TF)」和「逆文檔頻率(Inverse Document Frequency,IDF)。 詞頻: TF 表示詞在文檔中出現的頻率, 就統計學而言, 只要這個詞在文本中出現越多次代表越值得關注, 因此它會具有一個重要的統計評估指標之一, 但並不是完全相信此統計方式, 看完底下的IDF就會知道為什麼。 逆文檔頻率: IDF 主要目標在於「衡量一個詞語對整個文檔集合的重要性」, 簡單來講就是補足TF薄弱的評估依據, 因為單憑TF並不足以評斷詞語的重要性, 例如一段文章中常常出現「是」這個詞, 以TF的角度來說可能出來的數據是非常重要, 但對於我們來說「是」這個詞可能只是肯定、接受到了, 並不具備有太重要的資訊, 因此單憑TF會有失真的狀況出現。  因此IDP就是在平衡此狀況, 目標是讓稀有的詞語(在較少的文檔中出現)具有較高的IDF值, 而常見的詞語(在較多的文檔中出現)具有較低的IDF值。  怎麼做呢? 就是藉由底下很簡單的一個公式:  IDF = log((N(文檔總數) + 1) / (df(包含「詞」的文檔數量) + 1)) + 1  公式中的加1操作是為了避免在DF為0的情況下產生除零錯誤, 並添加平滑性(smoothness)以減少過於偏重罕見詞語的影響(當然最經典的算法是沒有平滑的, 也就是沒有+1)。  舉例來說, 假設文檔總數有5篇, 「是」這個詞在各篇文檔都有出現, 因此推算出來就會是:  log(6 / 6) + 1 = 1  由此可知IDF的公式之下, 「是」這個詞的權重為「1」, 可能不是一個非常重要的詞語。 TF與IDF的結合 TF-IDF = TF x IDF  通過計算詞語的TF-IDF值, 我們可以得到一個詞語在特定文本中的重要性分數,進而進行特徵表示、相似度計算和模型訓練等操作。  搭配實作更加明白... 接下來我們就用實作為出發點來逐一說明, 讓我們更容易進入狀況。 準備必要套件 # 斷詞 !pip install jieba  # 表格化 !pip install pandas  # 圖表化 !pip install matplotlibpy 下載中文字型讓圖表可以顯示中文 為什麼?  請參考「 🖋 【Google Co