一種挖掘文本中語義相似詞的方法

2021-12-23 自然語言處理算法與實踐
1 前言

在自然語言處理工作(NLP)中,會遇到這樣的一個應用問題:如何挖掘文本中某一關鍵詞的語義相似詞或近義詞?解決該問題的辦法很多,比如使用近義詞詞庫進行匹配,或檢索詞語類的知識庫(HowNet),也可用word2vec之類的詞向量技術進行cosine相似計算。再高級點,可利用像BERT之類的預訓練模型進行預測,但這種方式對中文詞不太友好。此外,上述的挖掘方法都存在一個共同的缺陷,都沒考慮關鍵詞所在的語義環境。

針對上述場景,今天分享一篇基於上下文語義來挖掘相似詞或近義詞的paper,論文為《CASE: Context-Aware Semantic Expansion》,論文題目的意思為基於上下文感知的語義擴充,解決的場景如下圖。如要挖掘句子中與「胺基酸」(amino acid)相似的語義詞,若不考慮語義環境,與之匹配的有維生素(vitamin)、抗氧化劑(antioxidant)、脂肪(fat)等等;但若考慮文本語義,脂肪不能作為胺基酸擴充的語義詞,因為青稞草(amino acid)不富含脂肪,這在語料庫中也不會有類似的描述。

2 模型

paper先定義如下學習任務:

其中 C為句子文本,"__"為替代文本中seed term(s)的佔位符,T表示潛在與佔位符同級的下義詞(hyponym)集合,任務的目標即為找到除s外的語義詞,即訓練目標如下:

表示為,在輸入句子文本C與種子詞s條件下,求除種子詞的其他詞最大概率。下圖為模型的整體框架。

從模型圖可以看出,主要分三個部分:Context Encoder、Seed Encoder、Prediction Layer,下面簡單介紹下這三個模塊。

2.1 Context Encoder

文中作者提出四種編碼方法,第一種為Neural Bag-of-Words Encoder,該方法是利用N-gram的思路,通過looksup詞表的方式,得到句子的所有詞向量,然後以縱向相加求平均得到句子向量; 第二,三種分布為RNN-Based Encoders 、 CNN-Based Encoders,通過兩種編碼網絡得到句子向量;第四種為Position-Aware Encoders,具體採用類似CNN+PF的方式,將位置信息也嵌入進行學習。最後,通過Context Encoder得到句子向量V_C

2.2 Seed Encoder

關於句子中Seed Term的編碼,文章同樣是採用Neural Bag-of-Words Encoder,因為Seed Term有可能是由多個word組成的,所以得到的向量V_S如下:

2.4 Prediction Layer

模型的第三部分就是預測擴充的詞條,Predicting Expansion Terms,具體為想將上述兩個編碼層得到的兩個向量 concatenation方式得到最終向量x,然後輸入softmax層進行預測:

在實際中,相似的語義詞有可能很多,而softmax正常只是輸出概率最大的一個。文中為了緩解該問題,作者採用sampled softmax loss的方式,實現multi-label的方式進行預測,這樣可以大大提高預測效率。

此外,文中在Context Encoder部分還嘗試了Attention機制,並提出兩種結合方式,一種為Seed-Oblivious Attention,該方法是將句子每個詞學一個權重,然後再加權計算最終句子向量;另中為Seed-Aware Attention,該方法是將句子每個詞相對Seed Term學一個權重,這裡文中提出DOT與TRANS-DOT兩種計算方法,然後再加權計算最終句子向量。此環節詳情若有興趣可查看原文。

3 實驗

在實驗部分,文中使用的是WebIsA數據集,該數據集180萬的訓練集,400萬的下位詞。實驗的最終結果為:


顯示相對之前別人的方法,作者的模型在四個評價指標平均有4%的提升,此外作者也驗證了前面提到的四種句子編碼方式,方法Neural Bag-of-Words Encoder(NBoW)方式效果最好,如下圖所示。

可以看出,多種常規的編碼方法效果都沒有超過最簡單的NBoW方式,這也讓我有點驚訝。我想該任務也挺適合上BERT等預訓練模型的,因為BERT就是基於上下文進行編碼的,不過文中並沒有對比在預訓練模型下的預測效果。

上圖是對應前言列舉的句子中amino acid(胺基酸)的語義詞學到的結果,其中加粗的為擴充的正確相似語義詞,其他為擴充的噪聲詞。左邊一列顯示在TRANS-DOT注意力機制下,預測的噪聲詞fat從top10之列移除了,並且有效詞得到提升,說明了該方法的有效性。此外,兩列一起驗證了是否考慮下位詞(Hypernym)的效果,結果來看,使用下位詞效果稍微好一點,但影響並不大。

4 結語

從paper解決的任務來看,覺得還是挺有意思,它可視為挖掘近義詞或同義詞的更細粒度的任務,它考慮了詞的語義環境。從實驗結果來看,該任務的預測難度還很大,top10的召回率也只有23%左右的效果,說明離實際應用還是有點距離;從Table5顯示的結果來看,若不考慮語義環境,只作為近義詞的擴充,其實效果還是很不錯的。儘管文中提出的方法很簡單,但還是被2020年的AAAI會議接受,所以也啟發我們,做學術不用太追求模型,方法,踏踏實實把實驗做好,做的更落地些,也是能被人青睞,而這篇就具備這樣的特點。

此外,我個人覺得該方向作為學術點還是可以繼續優化下去的,在如何深入考慮上下文信息上還是有不少可嘗試的方法。如果有興趣的朋友,可以私下交流,也可以嘗試合作~~

更多文章可關注筆者公眾號:自然語言處理算法與實踐

相關焦點

  • 文本挖掘:語義分析的一些方法
    語義分析,本文指運用各種機器學習方法,挖掘與學習文本、圖片等的深層次概念。
  • 相似詞查詢:玩轉騰訊 AI Lab 中文詞向量
    ",會得到:自然語言理解、計算機視覺、自然語言處理技術、深度學習、機器學習、圖像識別、語義理解、語音識別、自然語言識別、語義分析;輸入"相似詞 文本挖掘",會得到:數據挖掘、文本分析、文本數據、自然語言分析、語義分析、文本分類、信息抽取、數據挖掘算法、語義搜索、文本挖掘技術。
  • 語義分析的方法簡述之文本基本處理
    語義分析,本文指運用各種機器學習方法,挖掘與學習文本、圖片等的深層次概念。
  • 不用專業詞典,電力領域文本挖掘有多難?
    ,需要進一步通過文本挖掘技術,發現電力各專業領域非結構化數據中潛在的數據價值。而專業詞彙的識別能力是文本挖掘的關鍵,當前泛在電力物聯網、綜合能源服務等新概念的出現,帶來了大量新說法、新詞彙,構建專業化的行業詞典變得越來越迫切。dvdf文本挖掘從數據挖掘發展而來,指從大量的文本數據中提取事先未知的、有價值的信息的過程,簡言之,就是從非結構化的文本中尋找知識的過程。
  • 【分析方法】語義分析
    情報分析師工作循環,在我們搜集好數據後需對搜集到數據進行分析,這裡介紹其中一種分析方法語義分析。語義分析是編譯過程的一個邏輯階段, 語義分析的任務是對結構上正確的源程序進行上下文有關性質的審查,進行類型審查。語義分析是審查源程序有無語義錯誤,為代碼生成階段收集類型信息。
  • 商業分析中,如何進行文本挖掘
    而傳統的調研方法雖然可以回答「為什麼」,但時間成本高、較難及時進行熱點事件背後的洞察。我的好友吳亦凡在這篇文章中,提供了一種通過文本挖掘得出商業洞察的方法,簡單易上手,又極具價值。本文將從商業分析的視角來介紹文本挖掘的實際應用場景,以及一項完整的文本挖掘流程。本篇的重點以「器」的角度,介紹我珍藏的幾款文本挖掘工具,手把手教你製作一個精美的個性化詞雲。
  • 語義分析的一些方法(上篇)
    >語義分析,本文指運用各種機器學習方法,挖掘與學習文本、圖片等的深層次概念。而這其中,就離不開對用戶,對上下文,對廣告的語義分析,由此催生了一些子項目,例如文本語義分析,圖片語義理解,語義索引,短串語義關聯,用戶廣告語義匹配等。接下來我將寫一寫我所認識的語義分析的一些方法,雖說我們在做的時候,效果導向居多,方法理論理解也許並不深入,不過權當個人知識點總結,有任何不當之處請指正,謝謝。
  • 文本挖掘入門課:主題模型讓文本數據處理更幸福
    全文共3480字,預計閱讀時長7分鐘在解決自然語言處理的問題上,有一種文本挖掘的方法叫做主題模型
  • 自然語言處理 | 通過影片查看示例簡單了解NLP中的文本分類
    非結構化數據的最常見形式是文本和語音,它們包含有豐富的內容但很難從中提取有用的信息,經常需要很長時間來挖掘信息。書面文字和語音包含豐富的信息,這是因為我們作為聰明的生物,將寫作和口語作為交流的主要形式。NLP可以為我們分析這些數據,並執行情感分析,認知助手,跨度過濾,識別假新聞和實時語言翻譯等任務。本文將介紹NLP如何理解文本或詞性,主要是分析單詞和序列分析。
  • 文本挖掘實操|用文本挖掘剖析54萬首詩歌,我發現了這些
    在本文中,筆者循著這個思路,將運用若干文本挖掘方法對手頭的詩歌語料庫(該詩歌原始語料庫地址為https://github.com/Werneror/Poetry)進行深入挖掘和分析,該詩歌語料庫的基本統計數據如下:從上表可以看到,該詩歌語料庫中共計近85萬餘首詩歌,詩歌作者數量達29377位之多;其中,欄位包括「題目」、「朝代」、「作者」和「內容(詩歌)」。
  • 基於文本挖掘的學習分析應用研究
    本文首先描述了學習分析、文本挖掘的概念,通過文獻分析法,對國內外採用文本挖掘技術的學習分析研究現狀進行了綜述;其次,介紹了學習分析中文本挖掘的數據來源、方法和工具;最後主要從課程評價支持、學習者知識能力測評、學習共同體分組、學習行為危機預警、學習效果預測和學習狀態可視化6個方面闡述了文本挖掘應用於學習分析中的具體實例,並對未來作進一步的展望和探討。
  • 產品需求挖掘與排序的2大利器:文本挖掘與KANO模型
    產品無論處於哪個階段,解決用戶需求價值點的方法主要遵循2個路徑:自下而上從用戶中來的需求驅動產品迭代發展;自上而下到用戶中去的產品功能優化驅動產品迭代發展。
  • 機器學習實例 | 淺談文本挖掘應用
    文本挖掘作為數據挖掘的分支,就是指從文本數據中抽取有價值的,事先未知的、可理解、最終可用的信息和知識的過程,即數據挖掘的對象全部由文本信息組成。本文是筆者在現實實踐與理論學習中梳理的常用文本挖掘步驟以及簡單應用,不足之處,還望指出。
  • 前沿|通用句子語義編碼器,谷歌在語義文本相似性上的探索
    近年來,基於神經網絡的自然語言理解研究取得了快速發展(尤其是學習語義文本表示),這些深度方法給人們帶來了全新的應用,且還可以幫助提高各種小數據集自然語言任務的性能。本文討論了兩篇關於谷歌語義表示最新進展的論文,以及兩種可在 TensorFlow Hub 上下載的新模型。
  • NLP: 基於文本語義的智能問答系統
    旨在提供一個用Faiss結合各種AI模型實現語義相似度匹配的解決方案。最後通過項目案例實現:文本語義相似度文本檢索系統和FAQ問答機器人。thumbnail)]多輪對話是一種在人機對話中初步明確用戶意圖之後,獲取必要信息以最終得到明確用戶指令的方式。這裡介紹一種對話管理的一種方式:Frame-Based Dialogue Control,預先指定了一張表格 (Frame),聊天機器人的目標就是把這張表格填滿。
  • BERT-Flow | 文本語義表示新SOTA
    「交互編碼:」 這是BERT原文給出的微調方法,也就是把兩個需要計算語義相似度的文本用[SEP]拼接起來,將其作為輸入來微調BERT。 中搜索和某個文本或查詢的語義最相近的文本需要如果是後者,「有沒有什麼方法可以在無監督的條件下更有效地抽取出BERT句向量中隱含的語義相似度信息呢?」
  • 智能時代的教育文本挖掘模型與應用
    除了傳統的數據挖掘算法外,還有深度學習的相關算法,包括CNN(卷積神經網絡)、DBN(深度置信網絡)、RNN(循環神經網絡)等。此外,還有一些在文本挖掘中十分重要的方法,如Word2Vec(詞向量)、LDA(隱含狄利克雷分布)模型、馬爾可夫模型、深度學習等。常用方法的具體描述如表3所示。
  • 相似詞檢索,近義詞查詢,同義詞大全,這裡不僅僅限於中文
    至於詞向量模型,現在的選擇遠比當時豐富,如果是需要中文詞向量,可以選擇騰訊800萬詞向量,現在地址有所變化:Tencent AI Lab Embedding Corpus for Chinese Words and Phrases(https://ai.tencent.com/ailab/nlp/zh/embedding.html)或者參考:上百種預訓練中文詞向量
  • 【數據挖掘實操】用文本挖掘剖析近5萬首《全唐詩》
    溫馨提示:圖片顯示毛糙和不清楚,是解析度過高的緣故,點擊圖片,即可看到高清大圖楔子(2)重疊式(AA等於A): 琅琅、肅肅、忻忻、灼灼。(3)疊音(AA不等於A):琅琅(單獨拆開不能組其他詞)、的的(拆開後的單字的詞義不同)等。(4)雙聲(聲母相同): 躊躇(聲母都是c,分開各自無法組詞)、參差(聲母都是c)、緬邈(聲母都是m)。
  • 先草稿可生成高質量文本,Percy Liang新論文廣受讚譽
    文本生成是自然語言處理NLP領域的重要問題,許多知名學者都提出了自己的方法,改善現階段文本生成中豐富性不足、句法語意不自然、長句生成困難等問題,比如不久之前我們做過報導的上海交通大學俞勇、張偉楠聯合UCL汪軍發表的「 LeakGAN 」、Percy Liang的ICML2017最佳論文「 Understanding