乾貨分享!手把手教你構建用於文字聚類任務的大規模、高質量語料

達觀資料DataGrand發表於2021-08-03
看不懂

寫在前面:本文旨在開源一個構建用於學習任務的的大規模中文語料(檔案大小2G+,訓練語料數量1000W+),基於此語料和對比學習模型,學習到的語義表示可以較好的捕捉到語句之間細顆粒度的主題相似度(Thematic Similarity),可應用於下游的文字聚類、問答匹配、語義檢索和相同內涵語句識別等場景。

一、什麼是語義關聯性(Semantic Relatedness)

語義關聯性(Semantic Relatedness)一般有兩種情境 --- 首先,概念可以是相關的,因為它們有許多共同的特徵(考慮老鼠、鼴鼠、袋鼠等),這也意味著它們屬於同一類別(Membership of Same Category)。 根據不同的理論觀點,這種型別的關聯性被稱為分類學相關性或相似性(Taxonomic Relations or Similarity)。第二,不同的概念(如滑鼠和點選)被認為可能是相關的,因為它們經常在某種語境下共同出現( Co-occurrence )--- 例如,在時間、空間或語言學等背景下的經常共現。由此產生的相關性通常被稱為聯想(Association)。本文的重點是一種特定型別的聯想關係,即主題相關性(Thematic Relatedness)。
主題相關性是將在同一環境或語境中扮演不同的、通常是互補角色的概念聯絡起來。認知心理學有越來越多的研究表明,主題相關性對認知過程(Cognitive Processes)至關重要,可與分類學相關(Taxonomic Relations )並駕齊驅。
對一個概念的分類學分析(Taxonomic Analysis)關注的是概念的固有特徵,而主題視角(Thematic Perspective)則是處理統一事件中概念之間的外部關係。概念之間的分類學關係是基於對概念特徵的比較;屬於一個共同的分類學類別的概念具有共同的屬性或功能,因此傾向於具有物理相似性。相比之下,主題相關是在一個共同的事件或主題中發揮互補作用的概念之間形成的,這往往意味著這些具有不同(儘管是互補的)特徵和功能。 
為此,我們需要釐清如下四個概念:

  • 語義關聯性(Semantic Relatedness) 

最廣泛的類別,包括兩個概念之間的任何型別的語義關係。

  • 分類學相關(Taxonomic Relations) 

關聯性的一個子集,被定義為屬於同一分類學類別,這涉及到具有共同的特徵和功能。在許多文獻中,這種型別的關聯性經常被稱為相似性。

  • 非分類學相關(Non-Taxonomic Relations) 

某些概念在某些語境下的因頻繁的共現(co-occurrence )關係而存在/產生的關聯性。

  • 主題相關(Thematic Relations) 

非分類學相關的一個子集,被定義為在事件或場景中的共現關係,這種關聯下的詞彙之間存在著互補關係。如“傢俱”這一主題下,“椅子”和“佈置”,前者是物體,名詞,後者是動作,是動詞;前者是後者的動作被施加者,二者在語法層面和語義層面是互補搭配的關係,聯合在一起則呈現較為完整的語義資訊。
看不懂1
講了這麼語義關聯性的話題,那它到底跟我們的NLP任務有何聯絡呢?

  • 文字分類 - 根據定義,文字分類是基於機器學習/深度學習技術,按照一定的分類體系或標準進行自動分類打標籤。它跟我們上面提到的分類學相關(Taxonomic Relations)直接相關。

  • 文字聚類 - 文字聚類主要是基於無監督的機器學習演算法,在不事先規定聚類數的情況下, 依據著名的聚類假設:同類的文件相似度較大,而不同類的文件相似度較小。它跟我們上面提到的主題相關(Thematic Relations)聯絡密切。

本文筆者主要關注的是文字聚類問題,筆者接下來將提到的、用於訓練文字聚類高質量表示模型的wiki triplet三元組語料也是為該任務服務。

 

二、基於主題相似的文字聚類

(   Text Clustering Based Thematic Relations)

文字聚類是一個被廣泛研究的NLP問題,它有許多應用,包括協作過濾(collaborative fifiltering)、文件組織(document organization )和索引(indexing)。根據聚類目標的不同,文字聚類可以應用於不同層次、粒度的文字,即從詞彙、語句、篇章再到完整的文件都可以作為文字聚類的輸入。 
在本文中,筆者關注的是基於主題相似性( thematic similarity)的語句聚類問題,目的是將討論同一主題的句子組合在一起,而不是將具有同一內涵的語句聚合在一起的聚類任務。 舉例說明一下:
基於相似內涵的語句聚類:
 
  • 越南發現新冠變異病毒混合體,易於空氣傳播

  • 越南衛生部29號宣佈,發現了一種可以透過空氣迅速傳播的新冠變異毒株,這一變種病毒具有最早在印度發現的毒株和最早在英國發現的兩個變種病毒的雙重特徵。
  • 越南此次發現的毒株更具傳染性,並且很容易透過空氣傳播。
上面的語句 講的都是一件事,語義顆粒度較細,即新冠變異毒株在越南的傳播。
基於主題相似性語句聚類:
  • 第1集主要內容:1915年5月9日,袁世凱下令,同意與日本簽訂喪權辱國的二十一條。根據這個條約,中國承認日本繼承德國在山東的一切權益,日本在中國南滿和蒙古東部享有特殊權利,日本獲得在中國多條鐵路建築權等等。北洋政府的賣國行徑遭到全國民眾的強烈反對,全國各大城市都舉行了聲勢浩大的遊行。流亡海外的孫中山、黃興等人呼籲革命者回國倒袁。
  • 第2集主要內容:陳獨秀歸國,汪孟鄒、陳子壽等人為其接風洗塵。在飯桌上,眾人探討當下局勢,陳獨秀指出如今所面臨的強敵不僅是強在武力上,更強在思想和理念上。為此陳獨秀決定創辦一份雜誌,作為喚醒國人政治覺悟和倫理覺悟的號角,從而探索出一條振興中華的道路。
  • ...
  • 第42集主要內容: 李大釗在北京長辛店分發《新青年》的刊物,併為眾人講述五一國際勞動節的由來,他告訴大家美國的勞工遊行要求每日工作八小時,呼籲工人們也要團結起來為了自己的權利而奮鬥。此外,中國共產黨第一個早期組織在上海成立,陳獨秀等人志願加入中國共產黨。 
  • 第43集主要內容:周恩來將陳獨秀寄來的刊物拿給延年喬年,延年和喬年已經發現了行不通,他們已經透過反覆研讀馬克思主義的刊物確認了馬克思主義才是中國的救國之路。
上面的句落講的都不是一件事,但 都屬於同一主題--- 即《覺醒年代》的劇情簡介,但 語義顆粒度較粗
基於主題的文字聚類有許多使用場景。比如,在多文件摘要(multi-document summarization)任務中,人們經常從多個文件中提取句子,這些句子必須被組織成有意義的章節和段落。同樣,在新興的計算論證(computational argumentation)領域,論點(arguments)可能在廣泛的文章集中被發現,這就需要進一步的主題組織(thematic organization)來產生一個有說服力的論證敘述( argumentative narrative)。

 

三、基於中文Wiki構建可用於

訓練主題相似語義表示規模的大規模語料

一言以蔽之,筆者建立的語料是一種弱監督(Weakly-Supervised)形式的三元組 (Triplet),即(Anchor,Positive,Negtive),包含錨定語句、正例語句(與錨定語句內容存在主題相似的語句)和負例語句(與錨定語句內容不存在主題相似的語句),需與對比學習任務結合起來使用。
據筆者觀察,維基百科的行文組織良好、有邏輯,關於人、事、物的介紹通常會劃分為若干個(固定)版塊(sections )和段落(paragraphs),每個版塊/段落下轄的內容具有高度一致性,而段落於段落之間往往是統一大主題下的小分支,主體內容會有差異。
舉例來說,“2019冠狀病毒病”的文章佈局如下,分為若干個大的版塊:
看不懂2

 

“名稱”段落下的內容組織:

2020年1月初,由於肺炎病例原因不明,並正進行病原鑑定及病因溯源等初步調查,因而武漢市衛生健康委員會稱之為“不明原因肺炎” [56]
1月8日,香港特區政府衛生署將其命名為“嚴重新型傳染性病原體呼吸系統病”(Severe Respiratory Disease associated with a Novel Infectious Agent)  [57] [58]。衛生署在新聞公報中則稱為“新型冠狀病毒感染” [59],後改稱“2019冠狀病毒病” [60]。澳門特別行政區政府將其命名為“新型冠狀病毒感染” [61]
...
2月11日,世界衛生組織正式宣佈將此疾病定名為“2019冠狀病毒病”(Coronavirus disease 2019,COVID-19),表示在定名時須在名稱中使用“既不涉及地理位置、動物、個人或人群,又容易發音,並且與該疾病相關的名稱”,以避免造成其他可能不準確的或汙名化的名稱的問題 [14] [66] [67]
“症狀”下的內容組織:
2019冠狀病毒病的症狀及嚴重程度因人而異,本疾病存在無症狀感染者[72],有症狀患者主要以輕症居多(約81%)[73]。大多數患者的表現以類流感症狀為主。發熱是2019冠狀病毒病最常見的症狀[31],可能是高燒或低燒[31],大多數患者都會在某一階段出現發熱[31]。大多數患者也有咳嗽症狀,可能是乾咳或排痰性咳嗽[31]。
...
嚴重併發症包含急性呼吸窘迫綜合徵(ARDS)[79]、敗血性休克、全身炎症反應綜合徵(SIRS)[79][80]、難以糾正的代謝性酸中毒、急性心肌損傷、凝血功能障礙,甚至死亡等[81]。
疾病潛伏期通常約在暴露後4-5天左右,一般認為不會超過14天[82]。97.5%的患者會在感染後11.5天內出現症狀[83]。目前認為無症狀患者也具有傳播疾病的能力[84]。
2020年8月,南加州大學的科學家報告稱,2019冠狀病毒病的初始症狀的“可能”順序是先發燒,然後是咳嗽和肌肉疼痛,噁心和嘔吐通常出現在腹瀉之前[85]。這與流感最常見的途徑形成鮮明對比,即先咳嗽後發燒[85]。
由上可見,版塊/段落之間的內容的主題相關性較弱,而版塊/段落內的語句內容之間存在高度的主題一致性,且粒度較細。
據此,筆者將按如下方式、步驟來構建主題 Triplet,對於某一個詞條頁面所呈現的內容:
1、在同一段落的任一兩個句子為正例,其中一個為anchor,另一個為positive;2、和anchor、positive相異的段落下的任意一句為negtive;

3、考慮到後續訓練模型的效率和學習效果,我們需要謹慎挑選負例,即選擇困難負例(hard negtive);考慮到詞條謀篇佈局的規範嚴謹性,anchor和positive所在段落的前後相繼的段落中的任意語句可作為hard negtive。

4、為避免模型學習到固定模式,即干擾訊號,hard negtive需要隨機在上一段和下一段中生成。

5、過濾掉一些大事記之類的詞條,此類詞條乃綜合性詞條,按時間組織,內容主題方面千差萬別,無一致性,無學習意義;

6、去掉過短(少於10字)和過長的語句(多於256字)。

由此,大批次triplet就生成了 -(anchor,positive,negtive),1000W+個triplet。
三元組示例:

  1. (  '新文化運動為五四運動做了思想上和組織上的預備','關於新文化運動與1919年的五四運動的關係有不同看法[17],一種意見認為二者基本是一個運動的兩個階段,可以統稱為廣義的“五四運動”,或者“五四新文化運動”',

    '1915年9月,陳獨秀在上海創辦《青年雜誌》,1916年改名《新青年》,刊物上還印有法文刊名La Jeunesse'),

  2.  (  '自然語言處理(英語:Natural Language Processing,縮寫作 NLP)是人工智慧和語言學領域的分支學科。','自然語言處理包括多方面和步驟,基本有認知、理解、生成等部分。',

    '在口語中,詞與詞之間通常是連貫的,而界定字詞邊界通常使用的辦法是取用能讓給定的上下文最為通順且在文法上無誤的一種最佳組合。在書寫上,漢語也沒有詞與詞之間的邊界。'),

  3.  (  '次年其弟陳喬年亦遇害。兩兄弟均被安葬在龍華烈士陵園','1927年6月26日,陳延年被自己的老師吳稚暉背叛,在上海北四川路恆豐裡104號上海區委所在地被國民政府逮捕,陳延年拒絕招降。',

    ' 陳延年,又名遐延,筆名林木,男,安徽安慶人,中國共產黨早期領導人之一,陳獨秀長子')

結語

筆者自己基於中文wiki百科生成了一個訓練語義模型的語料,用於多個NLP任務,都取得了不錯的效果:

  • 基於語義的文字檢索:

Query: 一個人在吃義大利麵
Top 5 most similar sentences in corpus:
            某男子正在吃意麵 (Score: 0.8763)
            一個人在吃食物 (Score: 0.6450)
            一個男人正在吃一塊麵包 (Score: 0.5701)
            一個男人騎著白馬在一個封閉的地面上行走 (Score: 0.1964)         
一個男人在騎馬 (Score: 0.1908)

  • 相同表述語句對齊(從大量無序文字中找到語義最接近的語句對)

          學富五車 博學多才 Score: 0.7170
            油嘴滑舌 油頭滑腦 Score: 0.7159
            戮力同心 舉國同心 Score: 0.7118
            戮力同心 同心同德 Score: 0.7109
            招賢納士 博學多才 Score: 0.7092
            自以為是 師心自用 Score: 0.7045
...

  • 基於語義相似度閾值的聚類(設定相似度閾值和最小聚類成員數實現自動聚類)

Start clustering...
A total of 40 clusters were automated detected~
Cluster 1, # 22 Items 
現在刷卡消費怎麼沒有積分啊?
為啥現在刷卡消費沒有積分了?
為什麼刷卡消費沒有積分了?
刷卡消費為什麼沒有積分
為什麼現在刷卡沒有積分?
...
我近期的消費怎麼沒有積分???
我消費了怎麼沒積分呢?
為什麼消費沒有積分呢?
為什麼我最近消費的沒有積分呢
我的信用卡為啥沒有積分
我的信用卡為什麼沒有積分
Cluster 2, # 15 Items 
為什麼我信用卡不能用
信用卡怎麼不能使用是為什麼
我的信用卡不能用了?
我的信用卡為何不能套現
...
為什麼停用我的信用卡
為什麼我的卡用不了了
我的卡怎麼不能用了呢?
為什麼我的信用卡臨時額度用不了
Cluster 3, # 11 Items 
積分兌換的禮品太少了
積分兌換禮品品類太少了
積分兌換的獎品太少了,
積分兌換的物品太少
現在可以積分兌換的禮品怎麼那麼少?
...
積分兌換的東西太少了,能增加自己想換的禮品
積分兌換產品太少了,希望能重視
積分兌換禮品太少了,什麼時候有多一點產品上線?
Cluster 4, # 8 Items 
想積分抵年費應該怎麼弄
請問如何積分抵扣年費?
...
我想用積分抵年費,不知怎麼操作
請問積分兌換卡年費怎麼辦理
我要用積分對換年費,行不行?
...
Cluster 39, # 3 Items 
賬單15.84,忘記還款,扣我15的違約金,太狠了點吧?唉,不敢用你們的卡了
就差15塊多沒還,肯定是忘了,違約金太狠了吧,不合理
我是忘還了,英該提醒一下,你們直接扣我15元,我不想用你們的信用卡了
Cluster 40, # 3 Items 
已經最低還款了怎麼還顯示要最低還款
我已經最低還款了,為什麼還不行
還款了為什麼還顯示未改款最低額度
Clustering done after 0.36 sec

參考文獻

Kacmajor M, Kelleher J D. Capturing and measuring thematic relatedness[J]. Language Resources and Evaluation, 2020, 54(3): 645-682.
Dor L E, Mass Y, Halfon A, et al. Learning Thematic Similarity Metric Using Triplet Networks[J].


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997703/viewspace-2784903/,如需轉載,請註明出處,否則將追究法律責任。

相關文章