我們一起聊聊知識抽取,你學(xué)會了嗎?
一、簡介
知識抽取通常指從非結(jié)構(gòu)化文本中挖掘結(jié)構(gòu)化信息,如語義信息豐富的標(biāo)簽、短語等。在業(yè)界被廣泛使用的場景包括內(nèi)容理解、商品理解,從用戶生產(chǎn)的文本信息中挖掘有價值的標(biāo)簽打在內(nèi)容或商品上。
知識抽取通常伴隨著對所抽取標(biāo)簽或短語的分類,通常被建模為命名實體識別任務(wù),通用的命名實體識別任務(wù)就是識別命名實體成分并將成分劃分到地名、人名、機構(gòu)名等類型上;領(lǐng)域相關(guān)的標(biāo)簽詞抽取將標(biāo)簽詞識別并劃分到領(lǐng)域自定義的類別上,如系列(空軍一號、音速 9)、品牌(Nike、李寧)、類型(鞋、服裝、數(shù)碼)、風(fēng)格(ins 風(fēng)、復(fù)古風(fēng)、北歐風(fēng))等。
為描述方便,下文將信息量豐富的標(biāo)簽或短語統(tǒng)稱為標(biāo)簽詞。
二、知識抽取分類
圖1 知識抽取方法分類
三、標(biāo)簽詞挖掘
無監(jiān)督方法
基于統(tǒng)計的方法
- TF-IDF(Term Frequency-Inverse Document Frequency) :統(tǒng)計每個詞的 TF-IDF 打分,分?jǐn)?shù)越高說明包含的信息量越大。
計算方法:tfidf(t, d, D) = tf(t, d) * idf(t, D),其中tf(t, d) = log(1 + freq(t, d)), freq(t,d) 表示候選詞 t 在當(dāng)前文檔 d 中出現(xiàn)的次數(shù),idf(t,D) = log(N/count(d∈D:t∈D)) 表示候選詞 t 出現(xiàn)在多少個文檔中,用來表示一個詞語的稀有度,假如一個詞語只在一篇文檔中出現(xiàn),說明這個詞語比較稀有,信息量更豐富。
特定業(yè)務(wù)場景下可以借助外部工具對候選詞先進(jìn)行一輪篩選,如采用詞性標(biāo)識篩選名詞。
- YAKE[1]:定義了五個特征來捕捉關(guān)鍵詞特征,這些特征被啟發(fā)式地組合起來,為每個關(guān)鍵詞分配一個分?jǐn)?shù)。分?jǐn)?shù)越低,關(guān)鍵詞越重要。1)大寫詞:大寫字母的Term(除了每句話的開頭單詞)的重要程度比那些小寫字母的 Term 重要程度要大,對應(yīng)到中文可能是粗體字次數(shù);2)詞位置:每段文本越開頭的部分詞的重要程度比后面的詞重要程度更大;3)詞頻,統(tǒng)計詞出現(xiàn)的頻次;4)詞的上下文關(guān)系,用來衡量固定窗口大小下出現(xiàn)不同詞的個數(shù),一個詞與越多不相同的詞共現(xiàn),該詞的重要程度越低;5)詞在不同句子中出現(xiàn)的次數(shù),一個詞在更多句子中出現(xiàn),相對更重要。
基于圖的方法 Graph-Based Model
- TextRank[2]:首先對文本進(jìn)行分詞和詞性標(biāo)注,并過濾掉停用詞,只保留指定詞性的單詞來構(gòu)造圖。每個節(jié)點都是一個單詞,邊表示單詞之間的關(guān)系,通過定義單詞在預(yù)定大小的移動窗口內(nèi)的共現(xiàn)來構(gòu)造邊。采用 PageRank 更新節(jié)點的權(quán)重直至收斂;對節(jié)點權(quán)重進(jìn)行倒排序,從而得到最重要的 k 個詞語,作為候選關(guān)鍵詞;將候選詞在原始文本中進(jìn)行標(biāo)記,若形成相鄰詞組,則組合成多詞組的關(guān)鍵詞短語。
基于表征的方法 Embedding-Based Model
- EmbedRank[3]:通過分詞和詞性標(biāo)注選擇候選詞,采用預(yù)訓(xùn)練好的 Doc2Vec 和 Sent2vec 作為候選詞和文檔的向量表征,計算余弦相似度對候選詞進(jìn)行排序。類似的,KeyBERT[4] 將 EmbedRank 的向量表征替換為 BERT。
有監(jiān)督方法
- 先篩候選詞再采用標(biāo)簽詞分類:經(jīng)典的模型 KEA[5] 對四個設(shè)計的特征采用 Naive Bayes 作為分類器對 N-gram 候選詞進(jìn)行打分。
- 候選詞篩選和標(biāo)簽詞識別聯(lián)合訓(xùn)練:BLING-KPE[6] 將原始句子作為輸入,分別用 CNN、Transformer 對句子的 N-gram 短語進(jìn)行編碼,計算該短語是標(biāo)簽詞的概率,是否是標(biāo)簽詞采用人工標(biāo)注 Label。BERT-KPE[7] 在 BLING-KPE 的思想基礎(chǔ)上,將 ELMO 替換為 BERT 來更好地表示句子的向量。
圖2 BLING-KPE 模型結(jié)構(gòu)
遠(yuǎn)監(jiān)督方法
AutoPhrase
文中將高質(zhì)量短語定義為具有完整語義的單詞,同時滿足以下四個條件:
- Popularit:文檔中出現(xiàn)的頻次足夠高;
- Concordance:Token 搭配出現(xiàn)的頻率遠(yuǎn)高于替換后的其他搭配,即共現(xiàn)的頻次;
- Informativeness:有信息量、明確指示性,如 “this is” 就是沒有信息量的負(fù)例;
- Completeness:短語及其子短語都要具有完整性。
AutoPhrase 標(biāo)簽挖掘流程如圖 3 所示,首先通過詞性標(biāo)注篩選高頻 N-gram 詞作為候選,通過遠(yuǎn)監(jiān)督方式對候選詞作分類,再通過以上四個條件篩選高質(zhì)量的短語(Phrase-Quality Re-Estimation)。
圖3 AutoPhrase 標(biāo)簽挖掘流程
從外部知識庫獲取高質(zhì)量的短語作為 Positive Pool,其他短語作為負(fù)例,按論文實驗統(tǒng)計,負(fù)例池中存在 10% 的高質(zhì)量短語因為沒有在知識庫中被分到了負(fù)例中,因此論文采用了如圖 4 所示的隨機森林集成分類器來降低噪聲對分類的影響。在業(yè)界應(yīng)用中,分類器的訓(xùn)練也可以采用基于預(yù)訓(xùn)練模型 BERT 的句間關(guān)系任務(wù)二分類方法[13]。
圖4 AutoPhrase標(biāo)簽詞分類方法
四、標(biāo)簽詞分類
有監(jiān)督方法
NER 序列標(biāo)注模型
Lattice LSTM[8] 是針對中文 NER 任務(wù)引入詞匯信息的開篇之作,Lattice 是一個有向無環(huán)圖,詞匯的開始和結(jié)束字符決定了格子位置,通過詞匯信息(詞典)匹配一個句子時,可以獲得一個類似 Lattice 的結(jié)構(gòu),如圖 5(a) 所示。Lattice LSTM 結(jié)構(gòu)則融合了詞匯信息到原生的 LSTM 中,如 5(b) 所示,對于當(dāng)前的字符,融合以該字符結(jié)束的所有外部詞典信息,如“店”融合了“人和藥店”和“藥店”的信息。對于每一個字符,Lattice LSTM 采取注意力機制去融合個數(shù)可變的詞單元。雖然 Lattice-LSTM 有效提升了 NER 任務(wù)的性能,但 RNN 結(jié)構(gòu)無法捕捉長距離依賴,同時引入詞匯信息是有損的,同時動態(tài)的 Lattice 結(jié)構(gòu)也不能充分進(jìn)行 GPU 并行,F(xiàn)lat[9] 模型有效改善了這兩個問題。如圖 5(c),F(xiàn)lat 模型通過 Transformer 結(jié)構(gòu)來捕捉長距離依賴,并設(shè)計了一種位置編碼 Position Encoding 來融合 Lattice 結(jié)構(gòu),將字符匹配到的詞匯拼接到句子后,對于每一個字符和詞匯都構(gòu)建兩個 Head Position Encoding 和 Tail Position Encoding,將 Lattice 結(jié)構(gòu)展平,從一個有向無環(huán)圖展平為一個平面的 Flat-Lattice Transformer 結(jié)構(gòu)。
圖5 引入詞匯信息的 NER 模型
遠(yuǎn)監(jiān)督方法
AutoNER
采用 Tie or Break 的實體邊界標(biāo)識方案來替代 BIOE 的標(biāo)注方式來緩解遠(yuǎn)監(jiān)督帶來的噪聲問題,Tie 表示當(dāng)前詞和上一個詞在同一個實體內(nèi),Break 表示當(dāng)前詞和上一個詞不再同一個實體內(nèi)。
在實體分類階段,通過模糊 CRF(Fuzzy CRF)來應(yīng)對一個實體有多種類型的情況。
圖6 AutoNER 模型結(jié)構(gòu)圖
BOND
圖片
圖7 BOND訓(xùn)練流程圖
五、總結(jié)
參考文獻(xiàn)
【1】Campos R, Mangaravite V, Pasquali A, et al. Yake! collection-independent automatic keyword extractor[C]//Advances in Information Retrieval: 40th European Conference on IR Research, ECIR 2018, Grenoble, France, March 26-29, 2018, Proceedings 40. Springer International Publishing, 2018: 806-810. https://github.com/LIAAD/yake
【2】Mihalcea R, Tarau P. Textrank: Bringing order into text[C]//Proceedings of the 2004 conference on empirical methods in natural language processing. 2004: 404-411.
【3】Bennani-Smires K, Musat C, Hossmann A, et al. Simple unsupervised keyphrase extraction using sentence embeddings[J]. arXiv preprint arXiv:1801.04470, 2018.
【4】KeyBERT,https://github.com/MaartenGr/KeyBERT
【5】Witten I H, Paynter G W, Frank E, et al. KEA: Practical automatic keyphrase extraction[C]//Proceedings of the fourth ACM conference on Digital libraries. 1999: 254-255.
【6】Xiong L, Hu C, Xiong C, et al. Open domain web keyphrase extraction beyond language modeling[J]. arXiv preprint arXiv:1911.02671, 2019.
【7】Sun, S., Xiong, C., Liu, Z., Liu, Z., & Bao, J. (2020). Joint Keyphrase Chunking and Salience Ranking with BERT. arXiv preprint arXiv:2004.13639.
【8】Zhang Y, Yang J. Chinese NER using lattice LSTM[C]. ACL 2018.
【9】Li X, Yan H, Qiu X, et al. FLAT: Chinese NER using flat-lattice transformer[C]. ACL 2020.
【10】Shang J, Liu J, Jiang M, et al. Automated phrase mining from massive text corpora[J]. IEEE Transactions on Knowledge and Data Engineering, 2018, 30(10): 1825-1837.
【11】 Shang J, Liu L, Ren X, et al. Learning named entity tagger using domain-specific dictionary[C]. EMNLP, 2018.
【12】Liang C, Yu Y, Jiang H, et al. Bond: Bert-assisted open-domain named entity recognition with distant supervision[C]//Proceedings of the 26th ACM SIGKDD international conference on knowledge discovery & data mining. 2020: 1054-1064.
【13】美團搜索中NER技術(shù)的探索與實踐,https://zhuanlan.zhihu.com/p/163256192