知識(shí)抽取-實(shí)體及關(guān)系抽取

本文為轉(zhuǎn)載虐译,原文鏈接: https://zhuanlan.zhihu.com/p/44772023

這一篇是關(guān)于知識(shí)抽取,整理并補(bǔ)充了上學(xué)時(shí)的兩篇筆記 NLP筆記 - Information ExtractionNLP筆記 - Relation Extraction,梳理了知識(shí)抽取的基本方法,包括傳統(tǒng)機(jī)器學(xué)習(xí)及經(jīng)典的深度學(xué)習(xí)方法典鸡。

知識(shí)抽取涉及的“知識(shí)”通常是清楚的罚攀、事實(shí)性的信息,這些信息來自不同的來源和結(jié)構(gòu)术荤,而對(duì)不同數(shù)據(jù)源進(jìn)行的知識(shí)抽取的方法各有不同倚喂,從結(jié)構(gòu)化數(shù)據(jù)中獲取知識(shí)用 D2R,其難點(diǎn)在于復(fù)雜表數(shù)據(jù)的處理瓣戚,包括嵌套表端圈、多列、外鍵關(guān)聯(lián)等子库,從鏈接數(shù)據(jù)中獲取知識(shí)用圖映射舱权,難點(diǎn)在于數(shù)據(jù)對(duì)齊,從半結(jié)構(gòu)化數(shù)據(jù)中獲取知識(shí)用包裝器刚照,難點(diǎn)在于 wrapper 的自動(dòng)生成刑巧、更新和維護(hù),這一篇主要講從文本中獲取知識(shí)无畔,也就是我們廣義上說的信息抽取啊楚。

信息抽取三個(gè)最重要/最受關(guān)注的子任務(wù):

  • 實(shí)體抽取
    也就是命名實(shí)體識(shí)別,包括實(shí)體的檢測(cè)(find)和分類(classify)
  • 關(guān)系抽取
    通常我們說的三元組(triple) 抽取浑彰,一個(gè)謂詞(predicate)帶 2 個(gè)形參(argument)恭理,如 Founding-location(IBM,New York)
  • 事件抽取
    相當(dāng)于一種多元關(guān)系的抽取

篇幅限制,這一篇主要整理實(shí)體抽取和關(guān)系抽取郭变,下一篇再上事件抽取颜价。

相關(guān)競(jìng)賽與數(shù)據(jù)集

信息抽取相關(guān)的會(huì)議/數(shù)據(jù)集有 MUC、ACE诉濒、KBP周伦、SemEval 等。其中未荒,ACE(Automated Content Extraction) 對(duì) MUC 定義的任務(wù)進(jìn)行了融合专挪、分類和細(xì)化,KBP(Knowledge Base Population) 對(duì) ACE 定義的任務(wù)進(jìn)一步修訂片排,分了四個(gè)獨(dú)立任務(wù)和一個(gè)整合任務(wù)寨腔,包括

  • Cold Start KB (CSKB)
    端到端的冷啟動(dòng)知識(shí)構(gòu)建
  • Entity Discovery and Linking (EDL)
    實(shí)體發(fā)現(xiàn)與鏈接
  • Slot Filling (SF)
    槽填充
  • Event
    事件抽取
  • Belief/Sentiment (BeSt)
    信念和情感

至于 SemEval 主要是詞義消歧評(píng)測(cè),目的是增加人們對(duì)詞義率寡、多義現(xiàn)象的理解迫卢。

ACE 的 17 類關(guān)系


具體的應(yīng)用實(shí)例


常用的 Freebase relations

people/person/nationality,
people/person/profession,
biology/organism_higher_classification,
location/location/contains
people/person/place-of-birth
film/film/genre

還有的一些世界范圍內(nèi)知名的高質(zhì)量大規(guī)模開放知識(shí)圖譜,如包括 DBpedia冶共、Yago乾蛤、Wikidata每界、BabelNet、ConceptNet 以及 Microsoft Concept Graph等幻捏,中文的有開放知識(shí)圖譜平臺(tái) OpenKG……

實(shí)體抽取

實(shí)體抽取或者說命名實(shí)體識(shí)別(NER)在信息抽取中扮演著重要角色盆犁,主要抽取的是文本中的原子信息元素,如人名篡九、組織/機(jī)構(gòu)名谐岁、地理位置悼嫉、事件/日期裤唠、字符值鹃操、金額值等覆积。實(shí)體抽取任務(wù)有兩個(gè)關(guān)鍵詞:find & classify折砸,找到命名實(shí)體铣墨,并進(jìn)行分類浦夷。

主要應(yīng)用

  • 命名實(shí)體作為索引和超鏈接
  • 情感分析的準(zhǔn)備步驟邑飒,在情感分析的文本中需要識(shí)別公司和產(chǎn)品金刁,才能進(jìn)一步為情感詞歸類
  • 關(guān)系抽人俊(Relation Extraction)的準(zhǔn)備步驟
  • QA 系統(tǒng),大多數(shù)答案都是命名實(shí)體

傳統(tǒng)機(jī)器學(xué)習(xí)方法

標(biāo)準(zhǔn)流程:
Training:

  1. 收集代表性的訓(xùn)練文檔
  2. 為每個(gè) token 標(biāo)記命名實(shí)體(不屬于任何實(shí)體就標(biāo) Others O)
  3. 設(shè)計(jì)適合該文本和類別的特征提取方法
  4. 訓(xùn)練一個(gè) sequence classifier 來預(yù)測(cè)數(shù)據(jù)的 label

Testing:

  1. 收集測(cè)試文檔
  2. 運(yùn)行 sequence classifier 給每個(gè) token 做標(biāo)記
  3. 輸出命名實(shí)體

編碼方式

看一下最常用的兩種 sequence labeling 的編碼方式尤蛮,IO encoding 簡單的為每個(gè) token 標(biāo)注媳友,如果不是 NE 就標(biāo)為 O(other),所以一共需要 C+1 個(gè)類別(label)产捞。而 IOB encoding 需要 2C+1 個(gè)類別(label)醇锚,因?yàn)樗鼧?biāo)了 NE boundary,B 代表 begining坯临,NE 開始的位置焊唬,I 代表 continue,承接上一個(gè) NE看靠,如果連續(xù)出現(xiàn)兩個(gè) B赶促,自然就表示上一個(gè) B 已經(jīng)結(jié)束了。

在 Stanford NER 里挟炬,用的其實(shí)是 IO encoding鸥滨,有兩個(gè)原因,一是 IO encoding 運(yùn)行速度更快辟宗,二是在實(shí)踐中,兩種編碼方式的效果差不多吝秕。IO encoding 確定 boundary 的依據(jù)是泊脐,如果有連續(xù)的 token 類別不為 O,那么類別相同烁峭,同屬一個(gè) NE容客;類別不相同秕铛,就分割,相同的 sequence 屬同一個(gè) NE缩挑。而實(shí)際上但两,兩個(gè) NE 是相同類別這樣的現(xiàn)象出現(xiàn)的很少,如上面的例子供置,Sue谨湘,Mengqiu Huang 兩個(gè)同是 PER 類別,并不多見芥丧,更重要的是紧阔,在實(shí)踐中,雖然 IOB encoding 能規(guī)定 boundary续担,而實(shí)際上它也很少能做對(duì)擅耽,它也會(huì)把 Sue Mengqiu Huang 分為同一個(gè) PER,這主要是因?yàn)?strong>更多的類別會(huì)帶來數(shù)據(jù)的稀疏物遇。

特征選擇
Features for sequence labeling:

? Words
    Current word (essentially like a learned dictionary)
    Previous/next word (context)
? Other kinds of inferred linguistic classification
    Part of speech tags
    Dependency relations
? Label context
    Previous (and perhaps next) label

再來看兩個(gè)比較重要的 feature

Word substrings
Word substrings (包括前后綴)的作用是很大的乖仇,以下面的例子為例,NE 中間有 ‘oxa’ 的十有八九是 drug询兴,NE 中間有 ‘:’ 的則大多都是 movie乃沙,而以 field 結(jié)尾的 NE 往往是 place

Word shapes
可以做一個(gè) mapping蕉朵,把 單詞長度(length)崔涂、大寫(capitalization)、數(shù)字(numerals)始衅、希臘字母(Greek eltters)冷蚂、單詞內(nèi)部標(biāo)點(diǎn)(internal punctuation) 這些字本身的特征都考慮進(jìn)去。
如下表汛闸,把所有大寫字母映射為 X蝙茶,小寫字母映射為 x,數(shù)字映射為 d…

序列模型
NLP 的很多數(shù)據(jù)都是序列類型诸老,像 sequence of characters, words, phrases, lines, sentences隆夯,我們可以把這些任務(wù)當(dāng)做是給每一個(gè) item 打標(biāo)簽,如下圖:

常見的序列模型有 有向圖模型 如 HMM别伏,假設(shè)特征之間相互獨(dú)立蹄衷,找到使得 P(X,Y) 最大的參數(shù),生成式模型厘肮;無向圖模型 如 CRF愧口,沒有特征獨(dú)立的假設(shè),找到使得 P(Y|X) 最大的參數(shù)类茂,判別式模型耍属。相對(duì)而言托嚣,CRF 優(yōu)化的是聯(lián)合概率(整個(gè)序列,實(shí)際就是最終目標(biāo))厚骗,而不是每個(gè)時(shí)刻最優(yōu)點(diǎn)的拼接示启,一般而言性能比 HMM 要好,在小數(shù)據(jù)上擬合也會(huì)更好领舰。

整個(gè)流程如圖所示:


討論下最后的 inference


最基礎(chǔ)的是 “decide one sequence at a time and move on”夫嗓,也就是一個(gè) greedy inference,比如在詞性標(biāo)注中提揍,可能模型在位置 2 的時(shí)候挑了當(dāng)前最好的 PoS tag啤月,但是到了位置 4 的時(shí)候,其實(shí)發(fā)現(xiàn)位置 2 應(yīng)該有更好的選擇劳跃,然而谎仲,greedy inference 并不會(huì) care 這些。因?yàn)樗秦澙返呐俾兀灰?dāng)前最好就行了郑诺。除了 greedy inference,比較常見的還有 beam inference 和 viterbi inference杉武。

Greedy Inference

  • 優(yōu)點(diǎn):
    • 速度快辙诞,沒有額外的內(nèi)存要求
    • 非常易于實(shí)現(xiàn)
    • 有很豐富的特征,表現(xiàn)不錯(cuò)
  • 缺點(diǎn):
    • 貪婪

Beam Inference
在每一個(gè)位置轻抱,都保留 top k 種可能(當(dāng)前的完整序列)
在每個(gè)狀態(tài)下飞涂,考慮上一步保存的序列來進(jìn)行推進(jìn)

  • 優(yōu)點(diǎn):
    • 速度快,沒有額外的內(nèi)存要求
    • 易于實(shí)現(xiàn)(不用動(dòng)態(tài)規(guī)劃)
  • 缺點(diǎn):
    • 不精確祈搜,不能保證找到全局最優(yōu)

Viterbi Inference
動(dòng)態(tài)規(guī)劃
需要維護(hù)一個(gè) fix small window
優(yōu)點(diǎn):

  • 非常精確较店,能保證找到全局最優(yōu)序列
    缺點(diǎn):
  • 難以實(shí)現(xiàn)遠(yuǎn)距離的 state-state interaction

深度學(xué)習(xí)方法

LSTM+CRF
最經(jīng)典的 LSTM+CRF,端到端的判別式模型容燕,LSTM 利用過去的輸入特征梁呈,CRF 利用句子級(jí)的標(biāo)注信息,可以有效地使用過去和未來的標(biāo)注來預(yù)測(cè)當(dāng)前的標(biāo)注蘸秘。

評(píng)價(jià)指標(biāo)
評(píng)估 IR 系統(tǒng)或者文本分類的任務(wù)官卡,我們通常會(huì)用到 precision,recall醋虏,F(xiàn)1 這種 set-based metrics寻咒,見信息檢索評(píng)價(jià)的 Unranked Boolean Retrieval Model 部分,但是在這里對(duì) NER 這種 sequence 類型任務(wù)的評(píng)估颈嚼,如果用這些 metrics毛秘,可能出現(xiàn) boundary error 之類的問題。因?yàn)?NER 的評(píng)估是按每個(gè) entity 而不是每個(gè) token 來計(jì)算的粘舟,我們需要看 entity 的 boundary熔脂。

以下面一句話為例

First Bank of Chicago announced earnings...

正確的 NE 應(yīng)該是 First Bank of Chicago,類別是 ORG柑肴,然而系統(tǒng)識(shí)別了 Bank of Chicago霞揉,類別 ORG,也就是說晰骑,右邊界(right boundary)是對(duì)的适秩,但是左邊界(left boundary)是錯(cuò)誤的,

這其實(shí)是一個(gè)常見的錯(cuò)誤硕舆。

正確的標(biāo)注:
ORG - (1,4)
系統(tǒng):
ORG - (2,4)

而計(jì)算 precision秽荞,recall 的時(shí)候,我們會(huì)發(fā)現(xiàn)抚官,對(duì) ORG - (1,4) 而言扬跋,系統(tǒng)產(chǎn)生了一個(gè) false negative,對(duì) ORG - (2,4) 而言凌节,系統(tǒng)產(chǎn)生了一個(gè) false positive钦听!所以系統(tǒng)有了 2 個(gè)錯(cuò)誤。F1 measure 對(duì) precision倍奢,recall 進(jìn)行加權(quán)平均朴上,結(jié)果會(huì)更好一些,所以經(jīng)常用來作為 NER 任務(wù)的評(píng)估手段卒煞。另外痪宰,專家提出了別的建議,比如說給出 partial credit畔裕,如 MUC scorer metric衣撬,然而,對(duì)哪種 case 給多少的 credit柴钻,也需要精心設(shè)計(jì)淮韭。

其它-實(shí)體鏈接

實(shí)體識(shí)別完成之后還需要進(jìn)行歸一化,比如萬達(dá)集團(tuán)贴届、大連萬達(dá)集團(tuán)靠粪、萬達(dá)集團(tuán)有限公司這些實(shí)體其實(shí)是可以融合的。

主要步驟如下:

  1. 實(shí)體識(shí)別
    命名實(shí)體識(shí)別毫蚓,詞典匹配
  2. 候選實(shí)體生成
    表層名字?jǐn)U展占键,搜索引擎,查詢實(shí)體引用表
  3. 候選實(shí)體消歧
    圖方法元潘,概率生成模型畔乙,主題模型,深度學(xué)習(xí)

補(bǔ)充一些開源系統(tǒng):

關(guān)系抽取

關(guān)系抽取需要從文本中抽取兩個(gè)或多個(gè)實(shí)體之間的語義關(guān)系翩概,主要方法有下面幾類:

  • 基于模板的方法(hand-written patterns)
    • 基于觸發(fā)詞/字符串
    • 基于依存句法
  • 監(jiān)督學(xué)習(xí)(supervised machine learning)
    • 機(jī)器學(xué)習(xí)
    • 深度學(xué)習(xí)(Pipeline vs Joint Model)
  • 半監(jiān)督/無監(jiān)督學(xué)習(xí)(semi-supervised and unsupervised)
    • Bootstrapping
    • Distant supervision
    • Unsupervised learning from the web

基于模板的方法

基于觸發(fā)詞/字符串
首先是基于字符串的 pattern牲距,舉一個(gè) IS-A 的關(guān)系

Agar is a substance prepared from a mixture of red algae, **such as** Gelidium, for laboratory or industrial use

通過 such as 可以判斷這是一種 IS-A 的關(guān)系返咱,由此可以寫的規(guī)則是:

“Y such as X ((, X)* (, and|or) X)”
“such Y as X”
“X or other Y”
“X and other Y”
“Y including X”
“Y, especially X”

另一個(gè)直覺是,更多的關(guān)系是在特定實(shí)體之間的牍鞠,所以可以用 NER 標(biāo)簽來幫助關(guān)系抽取咖摹,如

?  located-in (ORGANIZATION, LOCATION)
?  founded (PERSON, ORGANIZATION)
?  cures (DRUG, DISEASE)

也就是說我們可以把基于字符串的 pattern 和基于 NER 的 pattern 結(jié)合起來,就有了下面的例子难述。

對(duì)應(yīng)的工具有 Stanford CoreNLP 的 tokensRegex萤晴。

基于依存句法
通常可以以動(dòng)詞為起點(diǎn)構(gòu)建規(guī)則胁后,對(duì)節(jié)點(diǎn)上的詞性和邊上的依存關(guān)系進(jìn)行限定店读。流程為:

小結(jié)
手寫規(guī)則的 優(yōu)點(diǎn) 是:

  • 人工規(guī)則有高準(zhǔn)確率(high-precision)
  • 可以為特定領(lǐng)域定制(tailor)
  • 在小規(guī)模數(shù)據(jù)集上容易實(shí)現(xiàn),構(gòu)建簡單
    缺點(diǎn)
  • 低召回率(low-recall)
  • 特定領(lǐng)域的模板需要專家構(gòu)建攀芯,要考慮周全所有可能的 pattern 很難屯断,也很費(fèi)時(shí)間精力
  • 需要為每條關(guān)系來定義 pattern
  • 難以維護(hù)
  • 可移植性差

監(jiān)督學(xué)習(xí)-機(jī)器學(xué)習(xí)

研究綜述
漆桂林,高桓,吳天星.知識(shí)圖譜研究進(jìn)展[J].情報(bào)工程,2017,3(1):004-025

Zhou[13] 在 Kambhatla 的基礎(chǔ)上加入了基本詞組塊信息和 WordNet,使用 SVM 作為分類器侣诺,在實(shí)體關(guān)系識(shí)別的準(zhǔn)確率達(dá)到了 55.5%裹纳,實(shí)驗(yàn)表明實(shí)體類別信息的特征有助于提高關(guān)系抽取性能; Zelenko[14] 等人使用淺層句法分析樹上最小公共子樹來表達(dá)關(guān)系實(shí)例紧武,計(jì)算兩顆子樹之間的核函數(shù)剃氧,通過訓(xùn)練例如 SVM 模型的分類器來對(duì)實(shí)例進(jìn)行分。但基于核函數(shù)的方法的問題是召回率普遍較低阻星,這是由于相似度計(jì)算過程匹配約束比較嚴(yán)格朋鞍,因此在后續(xù)研究對(duì)基于核函數(shù)改進(jìn)中,大部分是圍繞改進(jìn)召回率妥箕。但隨著時(shí)間的推移滥酥,語料的增多、深度學(xué)習(xí)在圖像和語音領(lǐng)域獲得成功畦幢,信息抽取逐漸轉(zhuǎn)向了基于神經(jīng)模型的研究坎吻,相關(guān)的語料被提出作為測(cè)試標(biāo)準(zhǔn),如 SemEval-2010 task 8[15]宇葱∈菡妫基于神經(jīng)網(wǎng)絡(luò)方法的研究有,Hashimoto[16] 等人利用 Word Embedding 方法從標(biāo)注語料中學(xué)習(xí)特定的名詞對(duì)的上下文特征黍瞧,然后將該特征加入到神經(jīng)網(wǎng)絡(luò)分類器中诸尽,在 SemEval-2010 task 8 上取得了 F1 值 82.8% 的效果∮〔基于神經(jīng)網(wǎng)絡(luò)模型顯著的特點(diǎn)是不需要加入太多的特征您机,一般可用的特征有詞向量、位置等,因此有人提出利用基于聯(lián)合抽取模型际看,這種模型可以同時(shí)抽取實(shí)體和其之間的關(guān)系咸产。聯(lián)合抽取模型的優(yōu)點(diǎn)是可以避免流水線模型存在的錯(cuò)誤累積[17-22]。其中比較有代表性的工作是[20]仲闽,該方法通過提出全新的全局特征作為算法的軟約束锐朴,進(jìn)而同時(shí)提高關(guān)系抽取和實(shí)體抽取的準(zhǔn)確率,該方法在 ACE 語料上比傳統(tǒng)的流水線方法 F1 提高了 1.5%蔼囊,;另一項(xiàng)工作是 [22]衣迷,利用雙層的 LSTM-RNN 模型訓(xùn)練分類模型畏鼓,第一層 LSTM 輸入的是詞向量、位置特征和詞性來識(shí)別實(shí)體的類型壶谒。訓(xùn)練得到的 LSTM 中隱藏層的分布式表達(dá)和實(shí)體的分類標(biāo)簽信息作為第二層 RNN 模型的輸入云矫,第二層的輸入實(shí)體之間的依存路徑,第二層訓(xùn)練對(duì)關(guān)系的分類汗菜,通過神經(jīng)網(wǎng)絡(luò)同時(shí)優(yōu)化 LSTM 和 RNN 的模型參數(shù)让禀,實(shí)驗(yàn)與另一個(gè)采用神經(jīng)網(wǎng)絡(luò)的聯(lián)合抽取模型[21]相比在關(guān)系分類上有一定的提升。但無論是流水線方法還是聯(lián)合抽取方法陨界,都屬于有監(jiān)督學(xué)習(xí)巡揍,因此需要大量的訓(xùn)練語料,尤其是對(duì)基于神經(jīng)網(wǎng)絡(luò)的方法菌瘪,需要大量的語料進(jìn)行模型訓(xùn)練腮敌,因此這些方法都不適用于構(gòu)建大規(guī)模的 Knowledge Base。

分類器

標(biāo)準(zhǔn)流程:

- 預(yù)先定義好想提取的關(guān)系集合
- 選擇相關(guān)的命名實(shí)體集合
- 尋找并標(biāo)注數(shù)據(jù)
 選擇有代表性的語料庫
 標(biāo)記命名實(shí)體
 人工標(biāo)注實(shí)體間的關(guān)系
 分成訓(xùn)練俏扩、開發(fā)糜工、測(cè)試集
- 設(shè)計(jì)特征
- 選擇并訓(xùn)練分類器
- 評(píng)估結(jié)果

為了提高 efficiency,通常我們會(huì)訓(xùn)練兩個(gè)分類器录淡,第一個(gè)分類器是 yes/no 的二分類捌木,判斷命名實(shí)體間是否有關(guān)系,如果有關(guān)系嫉戚,再送到第二個(gè)分類器刨裆,給實(shí)體分配關(guān)系類別。這樣做的好處是通過排除大多數(shù)的實(shí)體對(duì)來加快分類器的訓(xùn)練過程彬檀,另一方面崔拥,對(duì)每個(gè)任務(wù)可以使用 task-specific feature-set。

可以采用的分類器可以是 MaxEnt凤覆、Naive Bayes链瓦、SVM 等。

特征
直接上例子:
E.g., American Airlines, a unit of AMR, immediately matched the move, spokesman Tim Wagner said

Mention 1: American Airlines
Mention 2: Tim Wagner

用到的特征可以有:
Word features

  • Headwords of M1 and M2, and combination
    • M1: Airlines, M2: Wagner, Combination: Airlines-Wagner
  • Bag of words and bigrams in M1 and M2
    • {American, Airlines, Tim, Wagner, American Airlines, Tim Wagner}
  • Words or bigrams in particular positions left and right of M1/M2
    • M2: -1 spokesman
    • M2: +1 said
  • Bag of words or bigrams between the two entities
    • {a, AMR, of, immediately, matched, move, spokesman, the, unit}

Named Entities Type and Mention Level Features

  • Named-entities types
    M1: ORG
    M2: PERSON
  • Concatenation of the two named-entities types
    ORG-PERSON
  • Entity Level of M1 and M2 (NAME, NOMINAL, PRONOUN)
    M1: NAME [it or he would be PRONOUN]
    M2: NAME [the company would be NOMINAL]

Parse Features

  • Base syntactic chunk sequence from one to the other
    NP NP PP VP NP NP
  • Constituent path through the tree from one to the other
    NP ↑ NP ↑ S ↑ S ↓ NP
  • Dependency path
    Airlines matched Wagner said

Gazetteer and trigger word features

  • Trigger list for family: kinship terms
    parent, wife, husband, grandparent, etc. [from WordNet]
  • Gazetteer:
    List of useful geo or geopolitical words
    Country name list
    Other sub-entities


或者從另一個(gè)角度考慮,可以分為

  • 輕量級(jí)
    實(shí)體的特征慈俯,包括實(shí)體前后的詞渤刃,實(shí)體類型,實(shí)體之間的距離等
  • 中等量級(jí)
    考慮 chunk贴膘,如 NP卖子,VP,PP 這類短語
  • 重量級(jí)
    考慮實(shí)體間的依存關(guān)系刑峡,實(shí)體間樹結(jié)構(gòu)的距離洋闽,及其他特定的結(jié)構(gòu)信息

監(jiān)督學(xué)習(xí)-深度學(xué)習(xí)

深度學(xué)習(xí)方法又分為兩大類,pipeline 和 joint model

  • Pipeline
    把實(shí)體識(shí)別和關(guān)系分類作為兩個(gè)完全獨(dú)立的過程突梦,不會(huì)相互影響诫舅,關(guān)系的識(shí)別依賴于實(shí)體識(shí)別的效果
  • Joint Model
    實(shí)體識(shí)別和關(guān)系分類的過程共同優(yōu)化

深度學(xué)習(xí)用到的特征通常有:

  • Position embeddings
  • Word embeddings
  • Knowledge embeddings
    模型通常有 CNN/RNN + attention,損失函數(shù) ranking loss 要優(yōu)于交叉熵宫患。

Pipeline
CR-CNN
Santos et. al Computer Science 2015


輸入層 word embedding + position embedding刊懈,用 6 個(gè)卷積核 + max pooling 生成句子向量表示,與關(guān)系(類別)向量做點(diǎn)積求相似度娃闲,作為關(guān)系分類的結(jié)果虚汛。
損失函數(shù)用的是 pairwise ranking loss function

訓(xùn)練時(shí)每個(gè)樣本有兩個(gè)標(biāo)簽,正確標(biāo)簽 y+ 和錯(cuò)誤標(biāo)簽 c-皇帮,m+ 和 m- 對(duì)應(yīng)了兩個(gè) margin卷哩,\gamma用來縮放,希望s(x)_{y+}越大越好属拾,s(x)_{c-}越小越好殉疼。

另外還有一些 tips:

  • 負(fù)樣本選擇s(x)_c最大的標(biāo)簽,便于更好地將比較類似的兩種 label 分開
  • 加了一個(gè) Artifical Class捌年,表示兩個(gè)實(shí)體沒有任何關(guān)系瓢娜,可以理解為 Other/拒識(shí),訓(xùn)練時(shí)不考慮這一類礼预,損失函數(shù)的第一項(xiàng)直接置 0眠砾,預(yù)測(cè)時(shí)如果其他 actual classes 的分?jǐn)?shù)都為負(fù),那么就分為 Other托酸,對(duì)于整體的 performance 有提升
  • position feature 是每個(gè) word 與兩個(gè) entity 的相對(duì)距離褒颈,強(qiáng)調(diào)了兩個(gè)實(shí)體的作用,認(rèn)為距離實(shí)體近的單詞更重要励堡,PE 對(duì)效果的提升明顯谷丸,但實(shí)際上只用兩個(gè)實(shí)體間的 word embedding 作為輸入代替整個(gè)句子的 word embedding+position embedding,也有相近效果应结,且輸入更少實(shí)現(xiàn)更簡單刨疼。

Att-CNN
Relation Classification via Multi-Level Attention CNNs

用了兩個(gè)層面的 Attention泉唁,一個(gè)是輸入層對(duì)兩個(gè) entity 的注意力,另一個(gè)是在卷積后的 pooling 階段揩慕,用 **attention pooling 代替 max pooling **來加強(qiáng)相關(guān)性強(qiáng)的詞的權(quán)重亭畜。

輸入特征還是 word embedding 和 position embedding,另外做了 n-gram 的操作迎卤,取每個(gè)詞前后 k/2 個(gè)詞作為上下文信息拴鸵,每個(gè)詞的 embedding size 就是(d_w+2d_p)*k。這個(gè)華東窗口的效果其實(shí)和卷積一樣蜗搔,但因?yàn)檩斎雽雍笾苯咏恿薬ttention劲藐,所以這里先做了n-gram。

第一層 input attention 用兩個(gè)對(duì)角矩陣分別對(duì)應(yīng)兩個(gè) entity樟凄,對(duì)角線各元素是輸入位置對(duì)應(yīng)詞與實(shí)體間的相關(guān)性分?jǐn)?shù) A_{i,i}^{j}=f(e_j,w_i)聘芜,通過詞向量內(nèi)積衡量相關(guān)性,然后softmax歸一化不同,每個(gè)詞對(duì)兩個(gè)實(shí)體各有一個(gè)權(quán)重\alpha_1,\alpha_2,然后進(jìn)行加權(quán)把權(quán)重與輸入z_i融合溶耘,有三種融合方法二拐,求平均、拼接凳兵、相減(類似transE操作百新,把relation看做兩個(gè)權(quán)重的差)。這一層的attention捕捉的是句中單詞與實(shí)體的詞向量距離庐扫,但其實(shí)有些線索詞如caused與實(shí)體的相似度不高但很重要饭望。

接著做正常卷積,然后第二層用 attention pooling 代替 max-pooling形庭,bilinear 方法計(jì)算相關(guān)度铅辞,然后歸一化,再做 max pooling 得到模型最后的輸出w^O萨醒。

另外斟珊,這篇 paper 還改進(jìn)了 Santos 提出的 Ranking loss,Ranking loss 里的 distance function 直接用了網(wǎng)絡(luò)的輸出富纸,而這里定義了新的 distance function 來衡量模型輸出 w^O和正確標(biāo)簽對(duì)應(yīng)的向量relation embedding W_y^L的距離囤踩。

用了 L2 正則,然后基于這一距離定義了目標(biāo)函數(shù):


兩個(gè)距離分別為網(wǎng)絡(luò)輸出與正例和與負(fù)例的距離晓褪,負(fù)例照例用了所有錯(cuò)誤類別中與輸出最接近的堵漱,margin 設(shè)置的 1。

這應(yīng)該是目前最好的方法涣仿,SemEval-2010 Task 8 上的 F1 值到了 88勤庐。

Att-BiLSTM 模型
Peng Zhou et. al ACL 2016

CNN 可以處理文本較短的輸入,但是長距離的依賴還是需要 LSTM,這一篇就是中規(guī)中矩的 BiLSTM+Attn 來做關(guān)系分類任務(wù)埃元。

評(píng)測(cè)

各方法在 SemEval-2010 Task 8 上的評(píng)測(cè):


Joint Model

Pipeline的方法會(huì)導(dǎo)致誤差的傳遞涝涤,端到端的方法直覺上會(huì)更優(yōu)

LSTM-RNNs
Miwa et. al ACL 2016

用端到端的方式進(jìn)行抽取,實(shí)體識(shí)別和關(guān)系分類的參數(shù)共享岛杀,不過判斷過程并沒有進(jìn)行交互阔拳。

三個(gè)表示層

  • Embedding layer (word embeddings layer)
    用到了詞向量v_w、詞性POS tags v_p类嗤、依存句法標(biāo)簽Dependency types v_d糊肠、實(shí)體標(biāo)簽entity labels v_e
  • Sequence layer (word sequence based LSTM-RNN layer)
    BiLSTM 對(duì)句子進(jìn)行編碼,輸入是 word embedding 和 POS embedding 的拼接遗锣,輸出是兩個(gè)方向的隱層單元輸出的拼接s_t
    然后進(jìn)行實(shí)體識(shí)別货裹,還是序列標(biāo)注任務(wù),兩層 NN 加一個(gè) softmax 輸出標(biāo)簽精偿。打標(biāo)簽的方法用 BILOU(Begin, Inside, Last, Outside, Unit)弧圆,解碼時(shí)考慮到當(dāng)前標(biāo)簽依賴于上一個(gè)標(biāo)簽的問題,輸入在 sequence layer 層的輸出上還加了上一時(shí)刻的 label embedding笔咽,用 schedule sampling 的方式來決定用 gold label 還是 predict label
  • Dependency layer(dependency subtree based LSTM-RNN layer)
    用 tree-structured BiLSTM-RNNs 來表示 relation candidate搔预,捕捉了 top-down 和 bottom-up 雙向的關(guān)系,輸入是 sequence layer 的輸出s_t叶组,dependency type embeddingv_d拯田,以及l(fā)abel embedding v_e,輸出是d_p
    關(guān)系分類主要還是利用了依存樹中兩個(gè)實(shí)體之間的最短路徑(shortest path)甩十。主要過程是找到 sequence layer 識(shí)別出的所有實(shí)體船庇,對(duì)每個(gè)實(shí)體的最后一個(gè)單詞進(jìn)行排列組合,再經(jīng)過 dependency layer 得到每個(gè)組合的d_p侣监,然后同樣用兩層NN+softmax對(duì)該組合進(jìn)行分類鸭轮,輸出這對(duì)實(shí)體的關(guān)系類別。
    d_p第一項(xiàng)是 bottom-up LSTM-RNN 的 top LSTM unit橄霉,代表實(shí)體對(duì)的最低公共父節(jié)點(diǎn)(the lowest common ancestor of the target word pair p)张弛,第二、三項(xiàng)分別是兩個(gè)實(shí)體對(duì)應(yīng)的 top-down LSTM-RNN 的 hidden state酪劫。

    不同模型在 SemEval-2010 Task 8 數(shù)據(jù)集上的效果比較:

    與我們的直覺相反吞鸭,joint model 不一定能起正作用。不過上面的比較能得到的另一個(gè)結(jié)論是:外部資源可以來優(yōu)化模型覆糟。

監(jiān)督學(xué)習(xí)-評(píng)價(jià)指標(biāo)
最常用的 Precision, Recall, F1

監(jiān)督學(xué)習(xí)-小結(jié)
如果測(cè)試集和訓(xùn)練集很相似刻剥,那么監(jiān)督學(xué)習(xí)的準(zhǔn)確率會(huì)很高,然而滩字,它對(duì)不同 genre 的泛化能力有限造虏,模型比較脆弱御吞,也很難擴(kuò)展新的關(guān)系;另一方面漓藕,獲取這么大的訓(xùn)練集代價(jià)也是昂貴的陶珠。

半監(jiān)督學(xué)習(xí)

研究綜述
漆桂林,高桓,吳天星.知識(shí)圖譜研究進(jìn)展[J].情報(bào)工程,2017,3(1):004-025

Brin[23]等人通過少量的實(shí)例學(xué)習(xí)種子模板,從網(wǎng)絡(luò)上大量非結(jié)構(gòu)化文本中抽取新的實(shí)例享钞,同時(shí)學(xué)習(xí)新的抽取模板揍诽,其主要貢獻(xiàn)是構(gòu)建了 DIPRE 系統(tǒng);Agichtein[24]在 Brin 的基礎(chǔ)上對(duì)新抽取的實(shí)例進(jìn)行可信度的評(píng)分和完善關(guān)系描述的模式栗竖,設(shè)計(jì)實(shí)現(xiàn)了 Snowball 抽取系統(tǒng)暑脆;此后的一些系統(tǒng)都沿著 Bootstrap 的方法,但會(huì)加入更合理的對(duì) pattern 描述狐肢、更加合理的限制條件和評(píng)分策略添吗,或者基于先前系統(tǒng)抽取結(jié)果上構(gòu)建大規(guī)模 pattern;如 NELL(Never-EndingLanguage Learner)系統(tǒng)[25-26]份名,NELL 初始化一個(gè)本體和種子 pattern碟联,從大規(guī)模的 Web 文本中學(xué)習(xí),通過對(duì)學(xué)習(xí)到的內(nèi)容進(jìn)行打分來提高準(zhǔn)確率僵腺,目前已經(jīng)獲得了 280 萬個(gè)事實(shí)鲤孵。

Seed-based or bootstrapping approaches
半監(jiān)督學(xué)習(xí)主要是利用少量的標(biāo)注信息進(jìn)行學(xué)習(xí),這方面的工作主要是基于 Bootstrap 的方法以及遠(yuǎn)程監(jiān)督方法(distance supervision)想邦】阄疲基于 Bootstrap 的方法 主要是利用少量實(shí)例作為初始種子(seed tuples)的集合委刘,然后利用 pattern 學(xué)習(xí)方法進(jìn)行學(xué)習(xí)丧没,通過不斷迭代從非結(jié)構(gòu)化數(shù)據(jù)中抽取實(shí)例,然后從新學(xué)到的實(shí)例中學(xué)習(xí)新的 pattern 并擴(kuò)充 pattern 集合锡移,尋找和發(fā)現(xiàn)新的潛在關(guān)系三元組呕童。遠(yuǎn)程監(jiān)督 方法主要是對(duì)知識(shí)庫與非結(jié)構(gòu)化文本對(duì)齊來自動(dòng)構(gòu)建大量訓(xùn)練數(shù)據(jù),減少模型對(duì)人工標(biāo)注數(shù)據(jù)的依賴淆珊,增強(qiáng)模型跨領(lǐng)域適應(yīng)能力夺饲。

Relation Bootstrapping
? Gather a set of seed pairs that have relation R
? Iterate:

  1. Find sentences with these pairs
  2. Look at the context between or around the pair and generalize the context to create patterns
  3. Use the patterns for grep for more pairs

看一個(gè)完整的例子

從 5 對(duì)種子開始,找到包含種子的實(shí)例施符,替換關(guān)鍵詞往声,形成 pattern,迭代匹配戳吝,就為(authoer,book) 抽取到了relation pattern, x, by y, 和x, one of y's

優(yōu)點(diǎn):

  • 構(gòu)建成本低浩销,適合大規(guī)模構(gòu)建
  • 可以發(fā)現(xiàn)新的關(guān)系(隱含的)
    缺點(diǎn):
  • 對(duì)初始給定的種子集敏感
  • 存在語義漂移問題
  • 結(jié)果準(zhǔn)確率較低
  • 缺乏對(duì)每一個(gè)結(jié)果的置信度的計(jì)算

Snowball
對(duì) Dipre 算法的改進(jìn)。Snowball 也是一種相似的迭代算法听哭,Dipre 的 X,Y 可以是任何字符串慢洋,而 Snowball 要求 X,Y 必須是命名實(shí)體,并且 Snowball 對(duì)每個(gè) pattern 計(jì)算了 confidence value

Group instances w/similar prefix, middle, suffix, extract patterns
 ?  But require that X and Y be named entites
 ?  And compute a confidence for each pattern

ORGANIZATION {'s, in, headquaters} LOCATION
LOCATION {in, based} ORGANIZATION

Distant Supervision
基本假設(shè):兩個(gè)實(shí)體如果在知識(shí)庫中存在某種關(guān)系,則包含該兩個(gè)實(shí)體的非結(jié)構(gòu)化句子均能表示出這種關(guān)系株汉。

具體步驟:

  1. 從知識(shí)庫中抽取存在關(guān)系的實(shí)體對(duì)
  2. 從非結(jié)構(gòu)化文本中抽取含有實(shí)體對(duì)的句子作為訓(xùn)練樣例面哼,然后提取特征分類器

Distant Supervision 結(jié)合了 bootstrapping 和監(jiān)督學(xué)習(xí)的長處,使用一個(gè)大的 corpus 來得到海量的 seed example太防,然后從這些 example 中創(chuàng)建特征妻顶,最后與有監(jiān)督的分類器相結(jié)合。

與監(jiān)督學(xué)習(xí)相似的是這種方法用大量特征訓(xùn)練了分類器杏头,通過已有的知識(shí)進(jìn)行監(jiān)督盈包,不需要用迭代的方法來擴(kuò)充 pattern。

與無監(jiān)督學(xué)習(xí)相似的是這種方法采用了大量沒有標(biāo)注的數(shù)據(jù)醇王,對(duì)訓(xùn)練語料庫中的 genre 并不敏感呢燥,適合泛化。

PCNN+Attention
Kang Liu et.al AI 2017

  1. PCNN
    單一池化難以刻畫不同上下文對(duì)句向量的貢獻(xiàn)寓娩,而進(jìn)行分段池化叛氨,根據(jù)兩個(gè)實(shí)體把句子分成三段然后對(duì)不同部分分別進(jìn)行池化,刻畫更為精準(zhǔn)棘伴。
    另見 Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks

  2. Sentence-level attention
    遠(yuǎn)程監(jiān)督常用的 multi-instance learning寞埠,只選取最有可能的一個(gè)句子進(jìn)行訓(xùn)練預(yù)測(cè),丟失了大部分信息焊夸,句子層面的 attention 對(duì) bag 里所有句子進(jìn)行加權(quán)作為 bag 的特征向量仁连,保留盡可能多的信息,能動(dòng)態(tài)減少噪聲句的權(quán)重阱穗,有利于解決錯(cuò)誤標(biāo)記的問題饭冬。
    另見 Neural Relation Extraction with Selective Attention over Instances
    這里對(duì)兩個(gè)實(shí)體向量作差來表示 relation 向量 v_relation,如果一個(gè)實(shí)例能表達(dá)這種關(guān)系揪阶,那么這個(gè)實(shí)例的向量表達(dá)應(yīng)該和v_relation高度相似昌抠,根據(jù)這個(gè)假設(shè)來計(jì)算句向量和關(guān)系向量的相關(guān)性,其中[b_i;v_relation]表示垂直級(jí)聯(lián)鲁僚,b_i是PCNN得到的特征輸出炊苫,softmax歸一化再進(jìn)行加權(quán),最后再過softmax進(jìn)行分類冰沙。

  3. Entity representation
    引入了實(shí)體的背景知識(shí)(Freebase 和 Wikipedia 提供的實(shí)體描述信息)侨艾,增強(qiáng)了實(shí)體表達(dá)(entity representation),D 是 (entity, description) 的集合表示拓挥,e_i 是實(shí)體表示唠梨,d_i 通過另一個(gè)傳統(tǒng) CNN 對(duì)收集到的實(shí)體的描述句抽特征得到


    希望e_id_i盡可能相似,定義兩者間的誤差:

    最后的損失函數(shù)是交叉熵和實(shí)體描述誤差的加權(quán)和:

小結(jié)

  • 優(yōu)點(diǎn):
    可以利用豐富的知識(shí)庫信息撞叽,減少一定的人工標(biāo)注
  • 缺點(diǎn):
    假設(shè)過于肯定姻成,引入大量噪聲插龄,存在語義漂移現(xiàn)象
    很難發(fā)現(xiàn)新的關(guān)系

無監(jiān)督學(xué)習(xí)

研究綜述

Bollegala[27]從搜索引擎摘要中獲取和聚合抽取模板,將模板聚類后發(fā)現(xiàn)由實(shí)體對(duì)代表的隱含語義關(guān)系; Bollegala[28]使用聯(lián)合聚類(Co-clustering)算法科展,利用關(guān)系實(shí)例和關(guān)系模板的對(duì)偶性均牢,提高了關(guān)系模板聚類效果,同時(shí)使用 L1 正則化 Logistics 回歸模型才睹,在關(guān)系模板聚類結(jié)果中篩選出代表性的抽取模板徘跪,使得關(guān)系抽取在準(zhǔn)確率和召回率上都有所提高。
無監(jiān)督學(xué)習(xí)一般利用語料中存在的大量冗余信息做聚類琅攘,在聚類結(jié)果的基礎(chǔ)上給定關(guān)系垮庐,但由于聚類方法本身就存在難以描述關(guān)系和低頻實(shí)例召回率低的問題,因此無監(jiān)督學(xué)習(xí)一般難以得很好的抽取效果坞琴。

Open IE:
Open Information Extraction 從網(wǎng)絡(luò)中抽取關(guān)系哨查,沒有訓(xùn)練數(shù)據(jù),沒有關(guān)系列表剧辐。過程如下:

1. Use parsed data to train a “trustworthy tuple” classifier
2. Single-pass extract all relations between NPs, keep if trustworthy
3. Assessor ranks relations based on text redundancy

E.g.,
(FCI, specializes in, sobware development)
(Tesla, invented, coil transformer)

半監(jiān)督/無監(jiān)督學(xué)習(xí)-評(píng)價(jià)指標(biāo)
因?yàn)槌槿〉氖切碌年P(guān)系寒亥,并不能準(zhǔn)確的計(jì)算 precision 和 recall,所以我們只能估計(jì)荧关,從結(jié)果集中隨機(jī)抽取一個(gè)關(guān)系的 sample溉奕,然后人工來檢驗(yàn)準(zhǔn)確率


也可以計(jì)算不同 recall level 上的 precision,比如說分別計(jì)算在前 1000忍啤,10,000加勤,100,000 個(gè)新的關(guān)系中的 precision,在各個(gè)情況下隨機(jī)取樣同波。
然而鳄梅,并沒有方法來計(jì)算 recall。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末参萄,一起剝皮案震驚了整個(gè)濱河市卫枝,隨后出現(xiàn)的幾起案子煎饼,更是在濱河造成了極大的恐慌讹挎,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吆玖,死亡現(xiàn)場(chǎng)離奇詭異筒溃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)沾乘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門怜奖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翅阵,你說我怎么就攤上這事歪玲∏ㄑ耄” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵滥崩,是天一觀的道長岖圈。 經(jīng)常有香客問我,道長钙皮,這世上最難降的妖魔是什么蜂科? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮短条,結(jié)果婚禮上导匣,老公的妹妹穿的比我還像新娘。我一直安慰自己茸时,他們只是感情好贡定,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著可都,像睡著了一般厕氨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汹粤,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天命斧,我揣著相機(jī)與錄音,去河邊找鬼嘱兼。 笑死国葬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芹壕。 我是一名探鬼主播汇四,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼踢涌!你這毒婦竟也來了通孽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤睁壁,失蹤者是張志新(化名)和其女友劉穎背苦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潘明,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡行剂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钳降。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厚宰。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖遂填,靈堂內(nèi)的尸體忽然破棺而出铲觉,到底是詐尸還是另有隱情澈蝙,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布撵幽,位于F島的核電站碉克,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏并齐。R本人自食惡果不足惜漏麦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望况褪。 院中可真熱鬧撕贞,春花似錦、人聲如沸测垛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽食侮。三九已至号涯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锯七,已是汗流浹背链快。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眉尸,地道東北人域蜗。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像噪猾,于是被迫代替她去往敵國和親霉祸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容