中文機器閱讀理解
Chinese Machine Reading Comprehension
適用針對文章提出問題並從中抽取出答案 (用文章中一段原文來回答問題)
中文語音識別、中文語音去噪、中文文本分類、中文文本糾錯、中文實體識別、中文文本相似度、中文聲紋識別、中文語者分離
那些自然語言處理踩的坑 | 御守臺灣・科技抗疫:提高聲紋辨識正確率 更添防疫新利器 | 那些語音處理踩的坑
大型語言模型要踩的坑 | 那些ASR和TTS可能會踩的坑 | 白話文手把手帶你科普 GenAI
坑都踩完一輪,大型語言模型直接就打完收工?
那些檢索增強生成 (Retrieval-Augmented Generation, RAG) 要踩的坑
Call for Partner or POC (Proof of Concept), Contact: TonTon ( at ) TWMAN.ORG
https://github.com/Deep-Learning-101 | https://huggingface.co/DeepLearning101
Insurance (壽險) FAQ - High Entropy Alloys (材料) FAQ - Cryptocurrency Exchange (交易所) FAQ
語音質檢/噪音去除 (語音增強) - 多模態大型語言模型之單據核銷- 診斷書醫囑擷取分析
ASR 語音語料辨識修正工具 - 客服ASR文本AI糾錯系統 - 逐字稿文本內容比對工具 - 線上語音合成;GPT-SoVITS Speaker:TWMAN
要求模型理解文本並回答問題的技術。早期的閱讀理解系統多基於模板匹配或關鍵字檢索,這種方法在處理簡單的事實性問題上有一定效果,但無法應對更加複雜的語義分析及推理。
至於,統計機器學習的方法如 SVM、邏輯回歸等統計模型被應用於機器閱讀理解,可以學習文本特徵和答案模式;但我自己是沒這樣用過就是
隨著深度學習技術的進展,特別是自注意力機制和Transformer架構的出現,MRC領域得到了顯著提升;更好地捕捉文本中的關鍵信息,並進行更準確的推理。這些模型可以將文本轉化為密集的語義向量表示,並使用注意力機制在上下文中尋找相關信息來回答問題。例如,BERT模型已經成為MRC的主流模型之一,它通過雙向Transformer結構理解文本上下文,並在多個中文MRC數據集上取得了優異的表現。
結果,大型預訓練模型大幅提升了中文閱讀理解的效果,它們能夠理解複雜的上下文並進行推理,在閱讀理解任務中,這些模型已經接近甚至超越了人類水平。更別說更為火紅的 RAG 甚至是 GraphRAG等了。(2024/10)
投入約120天,早期想上線需要不少計算資源 (沒有昂貴的GPU想上線簡直是難如登天,好險時代在進步,現在CPU就能搞定)。記得我2018從老闆口中第一次聽到新項目是機器閱讀理解時,一頭霧水不知道是在幹麼,Google後突然發現這還真是它X的超級難的東西,而當時落地場景是要解決機器人在博物館或者展場的Q&A,不想再預先建一堆關鍵字與正規表示式來幫相似度和分類做前處理。
但機器閱讀理解坑真的不小,首先當然是數據,公開數據有SQuAD 1.0和2.0,但這是英文,你想用在中文 ? 你可以自己試試啦,再來有了個中文的CMRC,但用得是對岸用語跟簡體中文,而且數據格式不太一樣;後來台達電放出了DRCD還有科技部辦的科技大擂台,依然有格式不同的問題,數據量真的不太夠,所以想要落地你真的得要自己標註。
為了解決像是多文章還有問非文章內問題,還有公開數據要嘛英文不然就是簡體中文或對岸用語,然後本地化用語的數據實在不足的狀況,小夥伴們真的很給力,我們也用機器翻譯SQuAD 1.0和2.0還有自己手工爬維基百科跟開發了數據標註系統自己標註 ! 不得不說小夥伴們真的是投入超多精神在機器閱讀理解,更在Deep Learning 101做了分享。
什麼是機器閱讀理解?跟自然語言處理有什麼關係? 機器閱讀理解 (機器之心) 一文讀懂機器閱讀理解 (朱晨光) 機器閱讀理解與問答聊天機器人
機器閱讀理解綜述(一) 機器閱讀理解綜述(二) 機器閱讀理解綜述(三) 機器閱讀理解探索與實踐
PPT @ HD @ No. 41 @ Deep Learning 101 Marchine Reading Comprehsesion 2020/05/29
使電腦具備像人類一樣理解文章的能力;自動處理分析文字資料並從中抽取語義知識
輸入為文章和問題文字,輸出為最終的回答;無論哪種閱讀理解模型,其訓練過程都依賴於人工標註的資料,大量文章–問題–答案的三元組
使對文章和問題進行文字編碼(詞向量/ word vector):將文字分成若干單詞,然後用一串數字(即一個向量)表示一個單詞。
傳統的搜尋引擎只能返回與使用者查詢相關的檔,而閱讀理解模型可以在檔中精確定位問題的答案,從而提高使用者體驗。
BiDAF在embedding部分也同時引入word-embedding與char-embedding兩種embedding方法,讓模型的輸入包含更多資訊。而其最大的特點,為在Interaction層中引入了雙向attention機制,計算Query2Context和Context2Query兩種query-aware表示,再利用雙向LSTM對兩種query-aware進行整合,可更加有效的得出文章與問題之間的關係。最後預測答案的方式,則與Match-LSTM同樣使用boundary model的方法。
RuminatingReader算是加強版的BiDAF模型。他將BiDAF的架構中Interaction的輸出經過Highway Network的處理,將資訊加入至原文與原問題中。之後把帶有資訊的文章與問題再次輸入Interaction層計算,得出新的query-aware表示,其餘部分則與BiDAF基本上相同。藉由二次的重複計算attention,將原本已計算出的文章與問題相互關係做再一次地確認與強化,能在文章中更加準確地預測答案位置。
Match-LSTM架構較為簡單,用單層的LSTM對embedding過的文字做雙向編碼,再引入attention機制,計算出每個詞的query-aware表示,最後導入Answer層計算答案。計算答案的方式分為sequence model或boundary model兩種方式,但在最後實驗證明了簡化的boundary model比sequence model有著更好的效果,所以之後也預設以boundary model作為預測答案的方式。
在QANet的架構中,便捨棄了傳統RNN的編碼方式,而使用self-attention的機制。為此建立了一名為encoder block的子區塊,內含多個卷積層、self-attention與FeedForward layer。在文章與問題經過embedding後便利用encoder block對其進行編碼,之後引用與BiDAF相同的Context-Query attention計算文章與問題之間的相互關係。最後在接上多個encoder block,便進入output layer計算答案位置。QANet的結果證實,以self-attention取代RNN,並增加層數的方式能得出更好的結果。
在Transformer之中存在一個問題,就是在計算attention時,能擷取的上下文長度為固定的,導致超過長度之外的資訊可能就無法獲得。所以提出Transformer-XL架構,特色為將計算的hidden state緩存起來,在之後計算新片段時,能夠將hidden state重複使用,擴展獲取的前文資訊。但與此同時又產生新的問題,在hidden state的位置資訊原本是採用絕對位置,但引入上述機制後會導致性能損失。對此,Transformer-XL的解決方法為使用相對位置編碼,相對於絕對位置更加直觀,且能解決上述性能耗損的問題。
同樣建立在seq2seq的基礎上,但在過程中捨棄RNN,使用多層的attention替代。整個架構可分成encoder與decoder,兩者皆由多個block組成。encoder的block包含一個Multi-Head Attention和一個Feed Forward Network,而decoder的block則是由兩個Multi-Head Attention和一個Feed Forward Network組成。其中每個Multi-Head Attention和Feed Forward Network都採取類似 ResNet 的方法,後面加上一層 Add & Norm。由於Transformer捨棄了舊有的RNN與attention組合,改為全attention的構成,因此缺少了位置資訊。也就是說(a, b, c, d)與(d, c, b, a)這兩種組合在Transformer中視沒有區別的。所以在input時,Transformer會多出一個名為positional embedding的輸入,保留各個文字的位置資訊。
中文機器閱讀理解標註工具 (開發者:Alice Hong, Nat Lee)