《自然語言處理入門》12.依存句法分析--提取用戶評論

筆記轉(zhuǎn)載于GitHub項目https://github.com/NLP-LOVE/Introduction-NLP

12. 依存句法分析

語法分析(syntactic parsing )是自然語言處理中一個重要的任務(wù),其目標是分析句子的語法結(jié)構(gòu)并將其表示為容易理解的結(jié)構(gòu)(通常是樹形結(jié)構(gòu))污桦。同時,語法分析也是所有工具性NLP任務(wù)中較為高級、較為復雜的一種任務(wù)。 通過掌握語法分析的原理套像、實現(xiàn)和應(yīng)用堡纬,我們將在NLP工程師之路上跨越一道分水嶺。 本章將會介紹短語結(jié)構(gòu)樹依存句法樹兩種語法形式峦筒,并且著重介紹依存句法分析的原理和實現(xiàn)。

12.1 短語結(jié)構(gòu)樹

語言其實具備自頂而下的層級關(guān)系窗慎,固定數(shù)量的語法結(jié)構(gòu)能夠生成無數(shù)句子物喷。比如,僅僅利用下列兩個語法規(guī)律遮斥,我們就能夠生成所有名詞短語峦失。

  • 名詞短語可以由名詞和名詞短語組成。
  • 名詞短語還可以由名詞和名詞組成术吗。

例如尉辑,“上海+浦東+機場+航站樓”,所以较屿,漢語中大部分句子都可以通過這樣的語法來生成隧魄。

在語言學中卓练,這樣的語法被稱為上下文無關(guān)文法,它由如下組件構(gòu)成:

  • 終結(jié)符結(jié)合 Σ购啄,比如漢語的一個詞表襟企。
  • 非終結(jié)符集合 V,比如“名詞短語”“動詞短語”等短語結(jié)構(gòu)組成的集合狮含。V 中至少包含一個特殊的非終結(jié)符顽悼,即句子符或初始符,計作 S几迄。
  • 推到規(guī)則 R蔚龙,即推到非終結(jié)符的一系列規(guī)則: V -> V U Σ。

基于上下文無關(guān)文法理論映胁,我們可以從 S 出發(fā)木羹,逐步推導非終結(jié)符。一個非終結(jié)符至少產(chǎn)生一個下級符號解孙,如此一層一層地遞推下去汇跨,我們就得到了一棵語法樹。但在NLP中妆距,我們稱其為短語結(jié)構(gòu)樹穷遂。也就是說,計算機科學中的術(shù)語“上下文無關(guān)文法”在語言學中被稱作“短語結(jié)構(gòu)語法”娱据。

  1. 短語結(jié)構(gòu)樹

    短語結(jié)構(gòu)語法描述了如何自頂而下的生成一個句子蚪黑,反過來,句子也可以用短語結(jié)構(gòu)語法來遞歸的分解中剩。層級結(jié)構(gòu)其實是一種樹形結(jié)構(gòu)忌穿,例如這句話“上海 浦東 開發(fā) 與 法制 建設(shè) 同步”,分解成如下圖的短語結(jié)構(gòu)樹:

    image

這樣的樹形結(jié)構(gòu)稱為短語結(jié)構(gòu)樹结啼,相應(yīng)的語法稱為短語結(jié)構(gòu)語法*或上下文無關(guān)文法掠剑。至于樹中的字母下面開始介紹。

  1. 賓州樹庫和中文樹庫

    語言學家制定短語結(jié)構(gòu)語法規(guī)范郊愧,將大量句子人工分解為樹形結(jié)構(gòu)朴译,形成了一種語料庫,稱為樹庫( treebank )属铁。常見的英文樹庫有賓州樹庫眠寿,相應(yīng)地,中文領(lǐng)域有CTB焦蘑。上圖中葉子節(jié)點(詞語)的上級節(jié)點為詞性盯拱,詞性是非終結(jié)符的一種,滿足“詞性生成詞語”的推導規(guī)則。

    常見的標記如下:

    標記 釋義
    IP-HLN 單句-標題
    NP-SBJ 名詞短語-主語
    NP-PN 名詞短語-代詞
    NP 名詞短語
    VP 動詞短語

    但是由于短語結(jié)構(gòu)語法比較復雜狡逢,相應(yīng)句法分析器的準確率并不高宁舰,現(xiàn)在研究者絕大部分轉(zhuǎn)向了另一種語法形式。

12.2 依存句法樹

不同于短語結(jié)構(gòu)樹奢浑,依存句法樹并不關(guān)注如何生成句子這種宏大的命題蛮艰。依存句法樹關(guān)注的是句子中詞語之間的語法聯(lián)系,并且將其約束為樹形結(jié)構(gòu)殷费。

  1. 依存句法理論

    依存語法理論認為詞與詞之間存在主從關(guān)系印荔,這是一種二元不等價的關(guān)系低葫。在句子中详羡,如果一個詞修飾另一個詞,則稱修飾詞為從屬詞( dependent )嘿悬,被修飾的詞語稱為支配詞(head),兩者之間的語法關(guān)系稱為依存關(guān)系( dependency relation)实柠。比如句子“大夢想”中形容詞“大”與名詞“夢想"之間的依存關(guān)系如圖所示:

    image

    圖中的箭頭方向由支配詞指向從屬詞,這是可視化時的習慣善涨。將一個句子中所有詞語的依存關(guān)系以有向邊的形式表示出來窒盐,就會得到一棵樹,稱為依存句法樹( dependency parse tree)钢拧。比如句子“弱小的我也有大夢想”的依存句法樹如圖所示蟹漓。

    image

現(xiàn)代依存語法中,語言學家 Robinson 對依存句法樹提了 4 個約束性的公理源内。

  • 有且只有一個詞語(ROOT葡粒,虛擬根節(jié)點,簡稱虛根)不依存于其他詞語膜钓。
  • 除此之外所有單詞必須依存于其他單詞嗽交。
  • 每個單詞不能依存于多個單詞。
  • 如果單詞 A 依存于 B颂斜,那么位置處于 A 和 B 之間的單詞 C 只能依存于 A夫壁、B 或 AB 之間的單詞。

這 4 條公理分別約束了依存句法樹(圖的特例)的根節(jié)點唯一性沃疮、 連通盒让、無環(huán)和投射性( projective )。這些約束對語料庫的標注以及依存句法分析器的設(shè)計奠定了基礎(chǔ)司蔬。

  1. 中文依存句法樹庫

    目前最有名的開源自由的依存樹庫當屬UD ( Universal Dependencies)糯彬,它以“署名-非商業(yè)性使用-相同方式共享4.0”等類似協(xié)議免費向公眾授權(quán)。UD是個跨語種的語法標注項目葱她,一共有 200 多名貢獻者為 70 多種語言標注了 100 多個樹庫撩扒。具體到中文,存在4個不同領(lǐng)域的樹庫。本章選取其中規(guī)模最大的 UD_ Chinese GSD 作為示例搓谆。該樹庫的語種為繁體中文炒辉,將其轉(zhuǎn)換為簡體中文后,供大家下載使用泉手。

    http://file.hankcs.com/corpus/chs-gsd-ud.zip

    該樹庫的格式為 CoNLL-U黔寇,這是一種以制表符分隔的表格格式。CoNLL-U 文件有10列斩萌,每行都是一個單詞缝裤, 空白行表示句子結(jié)束。單元中的下劃線 _ 表示空白颊郎, 結(jié)合其中一句樣例憋飞,解釋如表所示。

    image

詞性標注集合依存關(guān)系標注集請參考 UD 的官方網(wǎng)站:

http://niversaldependencies.org/guidelines.html

另一份著名的語料庫依然是 CTB姆吭,只不過需要額外利用一些工具將短語結(jié)構(gòu)樹轉(zhuǎn)換為依存句法樹榛做。讀者可以直接下載轉(zhuǎn)換后的 CTB 依存句法樹庫,其格式是類似于 CoNLl-U 的 CoNLL内狸。

  1. 依存句法樹的可視化

    工具如下:

    • 南京大學湯光超開發(fā)的 Dependency Viewer检眯。導入 .conll 擴展名的樹庫文件即可。
    • brat 標注工具昆淡。

    可視化工具可以幫助我們理解句法樹的結(jié)構(gòu)锰瘸,比較句子之間的不同。

12.3 依存句法分析

依存句法分析( dependency parsing )指的是分析句子的依存語法的一種中高級 NLP任務(wù)昂灵,其輸人通常是詞語和詞性避凝,輸出則是一棵依存句法樹。 本節(jié)介紹實現(xiàn)依存句法分析的兩種宏觀方法倔既,以及依存句法分析的評價指標恕曲。

  1. 基于圖的依存句法分析

    正如樹是圖的特例一樣,依存句法樹其實是完全圖的一個子圖渤涌。如果為完全圖中的每條邊是否屬于句法樹的可能性打分佩谣,然后就可以利用 Prim 之類的算法找出最大生成樹( MST )作為依存句法樹了。這樣將整棵樹的分數(shù)分解( factorize )為每條邊上的分數(shù)之和实蓬,然后在圖上搜索最優(yōu)解的方法統(tǒng)稱為基于圖的算法茸俭。

    在傳統(tǒng)機器學習時代,基于圖的依存句法分析器往往面臨運行開銷大的問題安皱。這是由于傳統(tǒng)機器學習所依賴的特征過于稀疏调鬓,訓練算法需要在整個圖上進行全局的結(jié)構(gòu)化預測等∽靡粒考慮到這些問題腾窝,另一種基于轉(zhuǎn)移的路線在傳統(tǒng)機器學習框架下顯得更加實用。

  1. 基于轉(zhuǎn)移的依存句法分析

    我們以“人 吃 魚”這個句子為例子,手動構(gòu)建依存句法樹虹脯。

    • 從“吃”連線到“人”建立依存關(guān)系驴娃,主謂關(guān)系。
    • 從“吃”連線到“魚”建立依存關(guān)系循集,動賓關(guān)系唇敞。

    如此,我們將一棵依存句法樹的構(gòu)建過程表示為兩個動作咒彤。如果機器學習模型能夠根據(jù)句子的某些特征準確地預測這些動作疆柔,那么計算機就能夠根據(jù)這些動作拼裝出正確的依存句法樹了。這種拼裝動作稱為轉(zhuǎn)移( transition),而這類算法統(tǒng)稱為基于轉(zhuǎn)移的依存句法分析镶柱。

12.4 基于轉(zhuǎn)移的依存句法分析

  1. Arc-Eager 轉(zhuǎn)移系統(tǒng)

    一個轉(zhuǎn)移系統(tǒng) S 由 4 個部件構(gòu)成: S = (C,T,Cs,Ct)旷档,其中:

    • C 是系統(tǒng)狀態(tài)的集合
    • T 是所有可執(zhí)行的轉(zhuǎn)移動作的集合。
    • Cs 是一個初始化函數(shù)
    • Ct 為一系列終止狀態(tài)奸例,系統(tǒng)進入該狀態(tài)后即可停機輸出最終的動作序列彬犯。

    而系統(tǒng)狀態(tài)又由 3 元祖構(gòu)成: C = (σ,β,A) 其中:

    • σ 為一個存儲單詞的棧向楼。
    • β 為存儲單詞的隊列
    • A 為已確定的依存弧的集合查吊。

    Arc-Eager 轉(zhuǎn)移系統(tǒng)的轉(zhuǎn)移動作集合詳見下表:

    動作名稱 條件 解釋
    Shift 隊列 β 非空 將隊首單詞 i 壓棧
    LeftArc 棧頂單詞 i 沒有支配詞 將棧頂單詞 i 的支配詞設(shè)為隊首單詞 j,即 i 作為 j 的子節(jié)點
    RightArc 隊首單詞 j 沒有支配詞 將隊首單詞 j 的支配詞設(shè)為棧頂單詞 i湖蜕,即 j 作為 i 的子節(jié)點
    Reduce 棧頂單詞 i 已有支配詞 將棧頂單詞 i 出棧

對于上面的“人 吃 魚”案例逻卖,Arc-Eager 的執(zhí)行步驟如下:

裝填編號 σ 轉(zhuǎn)移動作 β A
0 [] 初始化 [人,吃,魚,虛根] {}
1 [人] Shift [吃,魚,虛根] {}
2 [] LeftArc(主謂) [吃,魚,虛根] \{人\xleftarrow{主謂}吃\}
3 [吃] Shift [魚,虛根] \{人\xleftarrow{主謂}吃\}
4 [吃,魚] RightArc(動賓) [虛根] \{人\xleftarrow{主謂}吃,吃\xrightarrow{動賓}魚\}
5 [吃] Reduce [虛根] \{人\xleftarrow{主謂}吃,吃\xrightarrow{動賓}魚\}
6 [] LeftArc(核心) [虛根] \{人\xleftarrow{主謂}吃,吃\xrightarrow{動賓}魚,吃\xleftarrow{核心}虛根\}

此時集合 A 中的依存弧為一顆依存句法樹。

  1. 訓練原理

    對基于轉(zhuǎn)移的依存句法分析器而言昭抒,它學習和預測的對象是一系列轉(zhuǎn)移動作评也。然而依存句法樹庫是一棵樹,并不是現(xiàn)成的轉(zhuǎn)移動作序列灭返。這時候就需要一個算法將語料庫中的依存句法樹轉(zhuǎn)移為正確地轉(zhuǎn)移動作序列盗迟。

    這里可以使用感知機進行訓練得到轉(zhuǎn)移動作序列,原理詳見:

    5. 感知機分類與序列標注

    訓練句法分析器時熙含,結(jié)構(gòu)化感知機算法迭代式的優(yōu)化線性模型罚缕,目標是使其將最高的分值賦予可抵達正確句法樹的轉(zhuǎn)移序列。

    訓練分為以下幾個步驟:

    • 讀入一個訓練樣本怎静,提取特征邮弹,創(chuàng)建 ArcEager 的初始狀態(tài) c。
    • 若 c 不是終止狀態(tài)蚓聘,反復進行轉(zhuǎn)移序列腌乡,修正參數(shù)。
    • 算法終止夜牡,返回返回模型參數(shù) w与纽。

12.5 依存句法分析 API

  1. 訓練模型

    本節(jié)使用的語料庫是 CTB8.0,運行代碼的時候會自動下載語料庫: train_parser.py

    https://github.com/NLP-LOVE/Introduction-NLP/tree/master/code/ch12/train_parser.py

    訓練時間比較長,結(jié)果如下:

    1 人 人 N NN _ 2 nsubj _ _
    2 吃 吃 V VV _ 0 ROOT _ _
    3 魚 魚 N NN _ 2 dobj _ _
    UAS=83.3% LAS=81.0%
    
  1. 標準化評測

    給定兩棵樹急迂,一棵樹為標準答案(來自測試集)硝岗,一棵樹為預測結(jié)果,評測的目標是衡量這兩棵樹的差異袋毙。如果將樹的節(jié)點編號型檀,拆解為依存弧并分別存入兩個集合 A ( 標準答案)和 B (預測結(jié)果),則可以利用分類任務(wù)的 F1 評價指標听盖。

    依存句法分析任務(wù)采用的評測指標為 UAS (unlabeled atachment score) 和 LAS (labeled attachment score )胀溺,分別對應(yīng)忽略標簽和包括標簽的 F1 值。以 LAS 為例皆看,具體計算方式如下:
    P=\frac{|A\cap B|}{|B|}\\ R=\frac{|A\cap B|}{|A|}\\ LAS=\frac{2*P*R}{P+R}
    UAS 的計算也是同理仓坞,只不過將每條依存弧上的標簽去掉后放人集合參與運算即可。相較于 LAS, UAS 僅僅衡量支配詞的預測準確率腰吟,不衡量依存關(guān)系的準確率无埃,一般分數(shù)更高。

    在上面的訓練模型中已經(jīng)做了評測

    UAS=83.3% LAS=81.0%
    

    這個分數(shù)說明毛雇,在測試集上有 83% 的支配詞被準確預測嫉称,有 81% 的依存弧被準確預測。

12.6 案例: 基于依存句法分析的意見抽取

其實許多人都有一個疑問灵疮,依存句法分析究竟可以用來干什么织阅。本節(jié)就來利用依存句法分析實現(xiàn)一個意見抽取的例子,提取下列商品評論中的屬性和買家評價震捣。

電池非常棒荔棉,機身不長,長的是待機蒿赢,但是屏幕分辨率不高润樱。

為了提取“電池”“機身”“待機”和“分辨率”所對應(yīng)的意見,樸素的處理方式是在分司和詞性標注之后編寫正則表達式羡棵,提取名詞后面的形容詞壹若。然而正則表達式無法處理“長的是待機”這樣句式靈活的例子。

這時就可以對這句話進行依存句法分析晾腔,分析代碼如下:

from pyhanlp import *

CoNLLSentence = JClass('com.hankcs.hanlp.corpus.dependency.CoNll.CoNLLSentence')
CoNLLWord = JClass('com.hankcs.hanlp.corpus.dependency.CoNll.CoNLLWord')
IDependencyParser = JClass('com.hankcs.hanlp.dependency.IDependencyParser')
KBeamArcEagerDependencyParser = JClass('com.hankcs.hanlp.dependency.perceptron.parser.KBeamArcEagerDependencyParser')

parser = KBeamArcEagerDependencyParser()
tree = parser.parse("電池非常棒舌稀,機身不長,長的是待機灼擂,但是屏幕分辨率不高壁查。")
print(tree)

運行結(jié)果如下:

1   電池  電池  N   NN  _   3   nsubj   _   _
2   非常  非常  A   AD  _   3   advmod  _   _
3   棒   棒   V   VA  _   0   ROOT    _   _
4   ,   剔应,   P   PU  _   3   punct   _   _
5   機身  機身  N   NN  _   7   nsubj   _   _
6   不   不   A   AD  _   7   neg _   _
7   長   長   V   VA  _   3   conj    _   _
8   睡腿,   语御,   P   PU  _   7   punct   _   _
9   長   長   V   VA  _   11  top _   _
10  的   的   D   DEC _   9   cpm _   _
11  是   是   V   VC  _   7   conj    _   _
12  待機  待機  N   NN  _   11  attr    _   _
13  ,   席怪,   P   PU  _   3   punct   _   _
14  但是  但是  A   AD  _   18  advmod  _   _
15  屏幕  屏幕  N   NN  _   16  nn  _   _
16  分辨率 分辨率 N   NN  _   18  nsubj   _   _
17  不   不   A   AD  _   18  neg _   _
18  高   高   V   VA  _   3   conj    _   _
19  应闯。   。   P   PU  _   3   punct   _   _

進行可視化后:

image

仔細觀察挂捻,不難發(fā)現(xiàn)“電池”與“棒”碉纺、“機身”與“長”、“分辨率”與“高”之間的依存關(guān)系都是 nsubj (名詞性主語)刻撒。

  1. 利用這一規(guī)律骨田, 不難寫出第一版遍歷算法, 也就是用個for 循環(huán)去遍歷樹中的每個節(jié)點声怔。對于算法遍歷樹中的每一個詞語态贤, 如果其詞性為名詞且作為某個形容詞的名詞性主語,則認為該名詞是屬性醋火,而形容詞是意見悠汽。運行代碼如下:

    def extactOpinion1(tree):
        for word in tree.iterator():
            if word.POSTAG == "NN" and word.DEPREL == "nsubj":
                print("%s = %s" % (word.LEMMA, word.HEAD.LEMMA))
    
    print("第一版")
    extactOpinion1(tree)
    

    結(jié)果如下:

    第一版
    電池 = 棒
    機身 = 長
    分辨率 = 高
    
  1. 雖然的確提取出了一些意見,然而后兩個都是錯誤的芥驳。這一版算法存在的問題之一是沒有考慮到“機身不長””“分辨率不高"等否定修飾關(guān)系柿冲。否定修飾關(guān)系在依存句法中的標記為 neg,于是我們只需檢查形容詞是否存在否定修飾的支配詞即可晚树。于是得出第二版算法:

    def extactOpinion2(tree):
        for word in tree.iterator():
            if word.POSTAG == "NN" and word.DEPREL == "nsubj":
                if tree.findChildren(word.HEAD, "neg").isEmpty():
                    print("%s = %s" % (word.LEMMA, word.HEAD.LEMMA))
                else:
                    print("%s = 不%s" % (word.LEMMA, word.HEAD.LEMMA))
    
    print("第二版")
    extactOpinion2(tree)
    

    結(jié)果如下:

    第二版
    電池 = 棒
    機身 = 不長
    分辨率 = 不高
    
  1. 接下來思考如何提取“待機”的意見姻采,“待機”與“長”之間的公共父節(jié)點為“是”雅采,于是我們得到第三版算法如下:

    def extactOpinion3(tree):
        for word in tree.iterator():
            if word.POSTAG == "NN":
              
                 # 檢測名詞詞語的依存弧是否是“屬性關(guān)系”爵憎,
                # 如果是,則尋找支配詞的子節(jié)點中的主題詞
                # 以該主題詞作為名詞的意見婚瓜。
                if word.DEPREL == "nsubj":  # ①屬性
    
                    if tree.findChildren(word.HEAD, "neg").isEmpty():
                        print("%s = %s" % (word.LEMMA, word.HEAD.LEMMA))
                    else:
                        print("%s = 不%s" % (word.LEMMA, word.HEAD.LEMMA))
                elif word.DEPREL == "attr":
                    top = tree.findChildren(word.HEAD, "top")  # ②主題
    
                    if not top.isEmpty():
                        print("%s = %s" % (word.LEMMA, top.get(0).LEMMA))
    
    print("第三版")
    extactOpinion3(tree)
    

    結(jié)果如下:

    第三版
    電池 = 棒
    機身 = 不長
    待機 = 長
    分辨率 = 不高
    

至此宝鼓,4 個屬性被完整正確地提取出來了,讀者可以嘗試搜集更多的句子巴刻,通過分析句法結(jié)構(gòu)總結(jié)更多的提取規(guī)則愚铡。

12.7 GitHub

HanLP何晗--《自然語言處理入門》筆記:

https://github.com/NLP-LOVE/Introduction-NLP

項目持續(xù)更新中......

目錄


章節(jié)
第 1 章:新手上路
第 2 章:詞典分詞
第 3 章:二元語法與中文分詞
第 4 章:隱馬爾可夫模型與序列標注
第 5 章:感知機分類與序列標注
第 6 章:條件隨機場與序列標注
第 7 章:詞性標注
第 8 章:命名實體識別
第 9 章:信息抽取
第 10 章:文本聚類
第 11 章:文本分類
第 12 章:依存句法分析
第 13 章:深度學習與自然語言處理
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市胡陪,隨后出現(xiàn)的幾起案子沥寥,更是在濱河造成了極大的恐慌,老刑警劉巖柠座,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邑雅,死亡現(xiàn)場離奇詭異,居然都是意外死亡妈经,警方通過查閱死者的電腦和手機淮野,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門捧书,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人骤星,你說我怎么就攤上這事经瓷。” “怎么了洞难?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵舆吮,是天一觀的道長。 經(jīng)常有香客問我队贱,道長歪泳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任露筒,我火速辦了婚禮呐伞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘慎式。我一直安慰自己伶氢,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布瘪吏。 她就那樣靜靜地躺著臂聋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪驶悟。 梳的紋絲不亂的頭發(fā)上寥闪,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音蓝丙,去河邊找鬼级遭。 笑死,一個胖子當著我的面吹牛渺尘,可吹牛的內(nèi)容都是我干的挫鸽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鸥跟,長吁一口氣:“原來是場噩夢啊……” “哼丢郊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起医咨,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤枫匾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拟淮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體干茉,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年惩歉,在試婚紗的時候發(fā)現(xiàn)自己被綠了等脂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俏蛮。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖上遥,靈堂內(nèi)的尸體忽然破棺而出搏屑,到底是詐尸還是另有隱情,我是刑警寧澤粉楚,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布辣恋,位于F島的核電站,受9級特大地震影響模软,放射性物質(zhì)發(fā)生泄漏伟骨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一燃异、第九天 我趴在偏房一處隱蔽的房頂上張望携狭。 院中可真熱鬧,春花似錦回俐、人聲如沸逛腿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽单默。三九已至,卻和暖如春忘瓦,著一層夾襖步出監(jiān)牢的瞬間搁廓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工耕皮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留境蜕,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓明场,卻偏偏與公主長得像汽摹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子苦锨,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

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