日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BERTopic:NLP主题模型的未来!

發布時間:2023/12/29 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BERTopic:NLP主题模型的未来! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文| ZenMoore
編| 小軼

以前我一直以為,主題建模(提取文檔的主題詞)這種機器學習時代就開始研究的基礎工具,現在肯定已經到頭了,雖然...有時效果可能不是那么讓人滿意。

但突然看到一則推文:“徹底瘋了!不需要預先清洗數據,就能夠快速拿到質量難以置信的主題!” “NLP 主題模型的未來!”

好家伙!讓人又愛又恨又離不開的主題模型,終于要升華了嗎?!!

看了論文之后,恍然大悟,完全沒有想到現在主流主題模型的問題竟然出在這么細節的地方:基于密度聚類和基于中心采樣(主題詞)之間的 gap ! 而且這個問題也竟然可以通過非常簡單的方式解決......

回顧一下之前的主題建模的方式,可以簡單地分成兩種:

  • 基于詞袋的模型:比如 LDA(潛在狄利克雷分配)、NMF(非負矩陣分解) 等。

  • 基于預訓練詞嵌入的聚類方法:比如 Top2Vec[1], CTM[2], Sia et al., 2020[3]等。

  • 基于詞袋的方法主要是基于文檔-單詞的共現頻率特征來抽取主題。其缺點在于:沒有充分考慮每個單詞的上下文語義 。例如 LDA 算法,假定主題的先驗分布和單詞的先驗分布都服從狄利克雷分布,又假定每個主題的單詞分布、每個文檔的主題分布均服從多項分布,然后再在“文檔-單詞”共現數據上通過 EM 等算法去求解得到主題。

    在深度學習時代,我們更偏好使用基于預訓練詞嵌入的方式。一般而言,這類方法首先通過一個預訓練的模型(比如 Doc2Vec、Word2Vec、GloVe、BERT)計算出文檔的向量表示以及單詞的向量表示,然后把它們嵌入到同一個語義空間中。假定主題相似的文檔在嵌入空間中的位置也是相近的(聚類),然后從這個嵌入空間的簇中去采樣主題詞。

    通常這些簇以基于密度的方式聚類[5]形成。這樣聚類后形成的簇不一定是“球狀”的(sphere-like),每個簇的邊界形狀可以千奇百怪(如下圖)。

    • 基于質心的聚類:假定每個簇是一個球狀結構(sphere-like) (其實是一個并不太合理的約束...)

    • 基于層次的聚類:假定數據點存在層次關系,例如“國家”-“省份”-“城市”這種。

    • 基于密度的聚類:挨在一起的就是一類的,不一定必須是 sphere-like 所以,基于層次和密度的聚類是最合理的方式。

    然而,此前的方法是怎么做的呢?例如 Top2Vec[1],它會先將簇的質心(centroid) 作為主題向量, 然后認為:對于一個給定的詞語,其詞向量與主題向量距離越近,則它越能代表這一主題

    這就出現問題了朋友們:聚類時是基于密度的,采詞卻是基于與質心的距離!(盲生發現了華點!)

    舉個栗子。在下圖中有一個長條狀的簇,其質心用紅色“X”標記。按照 Top2Vec 的做法,采詞空間如紅色圓周所示。可以看到,采詞空間中有一部分并不在簇,就很容易誤采到其他簇的單詞

    ▲紅色的圓圈就是所謂的“采詞空間”,很明顯超出了簇的范圍

    而今天要介紹的這篇 BERTopic, 使用一種基于類別的 TF-IDF 變體,解決了這個問題:聚類和采詞之間的不一致不兼容問題(gap)。

    論文標題
    BERTopic: Neural topic modeling with a class-based TF-IDF procedure

    論文作者
    Maarten Grootendorst

    論文鏈接
    https://arxiv.org/pdf/2203.05794.pdf

    原理

    BERTopic 方法的步驟如下:

  • 首先使用預訓練模型計算 document embeddings (比如常用的 Sentence-BERT 等)

  • 因為 document embeddings 維度很高,在嵌入空間中就非常稀疏,不容易進行聚類,所以需要先進行降維,比如 PCA 或者 t-SNE 等方法,這里用的是 UMAP[4]

  • 基于層次和密度進行聚類,這里用的是典型的 HDBSCAN[5] 算法

  • ? 劃重點:使用 class-based TF-IDF 變體提取每個簇的主題詞

  • 因為上文所說的這個 gap 產生的原因,本質上就是“采詞空間”沒有收束到對應的簇上。所以只要想辦法把候選集合定在簇里面就好了!😋

    當然可以通過縮小 sphere 來約束,但是這樣肯定會漏掉不少候選詞...

    靜態主題建模

    靜態主題建模假定時間是靜止的當下,不考慮文檔主題分布隨著時間的變化。

    回顧一下 TF-IDF 算法 :

    式子中,t 代表單詞(term), d 代表文檔(document), 這個值的意思是 t 在 d 中的詞頻乘以 log(語料總文檔數量 比 包含t的文檔的數量)。

    BERTopic 使用的是相同的策略,只不過文檔 d 做了一些改變:將一個 cluster (也就是一個類 class) 中的所有文檔拼接起來作為新的單個文檔 d. 這樣 TF-IDF 公式就變成了 c-TF-IDF:

    402 Payment Required

    其中,c 表示 class, A 表示每個 class 的平均單詞數量, 表示 class c 中 t 的頻率, 表示所有 class 中 t 的頻率。

    就這樣,簇 c 里的每個單詞 t 都有了一個分數,分數越高,越能代表這個簇的主題~ 顯然這個候選集合是收束在簇 c 的范圍里面的。

    動態主題建模

    和靜態主題建模不同,動態主題建模考慮到了文檔本身隨時間的變化特征,即2022年的文檔和2012年的文檔主題分布是不一樣的,2022年大家在討論的主題是“三體”即將上映,而2012年大家討論的主題是“2012世界末日”.

    針對這種情況,本文引入了新的 TF-IDF 公式:

    402 Payment Required

    這里的 i 表示第 i 個 timestep.

    平滑化

    對于動態主題建模另外一個可能有用的假設是,不同 timestep 的 topic 可能是線性相關的,因此作者引入了平滑技巧(optional):

  • 首先進行 L1-normalization (即除以 L1-norm), for each topic and timestep.

  • 然后對 normalized vector 進行 average 平滑操作:將第 i 時刻的值與第 i-1 時刻的值進行一個平均作為新的第 i 時刻的值。

  • 效果

    作者使用 "all-mpnetbase-v2" SBERT model 作為 embedding model, 在 20 NewsGroups、BBC News、Trump 等數據集上進行了實驗,對比結果如下圖:

    ▲可見,BERTopic 有更好的綜合能力

    然后不同的 embedding model 對效果也會有影響:

    對于動態主題建模,BERTopic 也有很好的綜合效果:

    ▲Evolve 表示使用了上文介紹的平滑技巧

    總結下來就是:

    BERTopic 優點:彌合了基于密度聚類和基于中心采樣之間的 gap;適用于各種語言模型,從而可以根據需要與實際資源量靈活選擇可用模型;嵌入聚類和主題生成(采詞)是解耦的兩個階段;靜態、動態主題建模用的是同一套框架, minimal change.

    缺點:沒有考慮單文檔多主題;因為僅僅考慮了文檔的上下文表示而主題詞仍然來源于詞袋,所以主題當中的單詞可能高度相似從而具有一定的冗余性。

    寫在最后

    看完這篇文章之后,最大的感覺就是:細心!太細心了!

    密度聚類和中心采樣之間的 gap, 這個盲點,真的需要一番好眼力才能發現 😂!所以,做科研,不一定必須追快打新,把 picture 定得多么多么大,能敏銳地發現一些別人發現不了的“小”問題,也是不小的成果。

    Finally, 貼一段 BERTopic 的使用示例代碼:

    from?bertopic?import?BERTopic from?sklearn.feature_extraction.text?import?CountVectorizer#?we?add?this?to?remove?stopwords vectorizer_model?=?CountVectorizer(ngram_range=(1,?2),?stop_words="english")model?=?BERTopic(vectorizer_model=vectorizer_model,language='english',?calculate_probabilities=True,verbose=True ) topics,?probs?=?model.fit_transform(text)

    代碼來源于:https://www.pinecone.io/learn/bertopic/

    然后去更新你的常備 toolkit 吧~ (😉)

    萌屋作者:ZenMoore

    智源實習生🧐,愛數學愛物理愛 AI🌸 想從 NLP 出發探索人工認知人工情感的奧秘🧠🤖!個人主頁🌎 zenmoore.github.io 知乎🤔 ZenMoore, 微信📩 zen1057398161 嚶其鳴矣,求其友聲?!

    作品推薦

  • 一文跟進Prompt進展!綜述+15篇最新論文逐一梳理

  • 圖靈獎大佬+谷歌團隊,為通用人工智能背書!CV 任務也能用 LM 建模!

  • 以4%參數量比肩GPT-3!Deepmind 發布檢索型 LM,或將成為 LM 發展新趨勢!?

  • 后臺回復關鍵詞【入群

    加入賣萌屋NLP、CV、搜推廣與求職討論群

    ?

    [1] Dimo Angelov. 2020. Top2vec: Distributed representations of topics. arXiv preprint arXiv:2008.09470.

    [2] Federico Bianchi, Silvia Terragni, and Dirk Hovy. 2020a. Pre-training is a hot topic: Contextualized document embeddings improve topic coherence. arXiv preprint arXiv:2004.03974.

    [3] Suzanna Sia, Ayush Dalmia, and Sabrina J Mielke. 2020. Tired of topic models? clusters of pretrained word embeddings make for fast and good topics too! arXiv preprint arXiv:2004.14914.

    [4] Leland McInnes, John Healy, Nathaniel Saul, and Lukas Grossberger. 2018. Umap: Uniform manifold approximation and projection. The Journal of Open Source Software, 3(29):861.

    [5] Leland McInnes, John Healy, and Steve Astels. 2017. hdbscan: Hierarchical density based clustering. The Journal of Open Source Software, 2(11):205.

    總結

    以上是生活随笔為你收集整理的BERTopic:NLP主题模型的未来!的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。