推薦系統(tǒng)基礎(chǔ)二

本篇的思維導(dǎo)圖如下:

1、用戶行為數(shù)據(jù)

用戶行為數(shù)據(jù)在網(wǎng)站上最簡單的存在形式就是日志抱怔,比如用戶在電子商務(wù)網(wǎng)站中的網(wǎng)頁瀏覽蛀柴、購買螃概、點擊、評分和評論等活動鸽疾。

用戶行為在個性化推薦系統(tǒng)中一般分兩種——顯性反饋行為(explicit feedback)和隱性反饋 行為(implicit feedback)吊洼。顯性反饋行為包括用戶明確表示對物品喜好的行為。網(wǎng)站中收集顯性反饋的主要方式就是評分和喜歡/不喜歡肮韧。隱性反饋行為指的是那些不能明確反應(yīng)用戶喜好 的行為融蹂。最具代表性的隱性反饋行為就是頁面瀏覽行為。

按照反饋的明確性分弄企,用戶行為數(shù)據(jù)可以分為顯性反饋和隱性反饋超燃,但按照反饋的方向分, 又可以分為正反饋和負反饋拘领。正反饋指用戶的行為傾向于指用戶喜歡該物品意乓,而負反饋指用戶的 行為傾向于指用戶不喜歡該物品。在顯性反饋中约素,很容易區(qū)分一個用戶行為是正反饋還是負反饋届良, 而在隱性反饋行為中,就相對比較難以確定圣猎。

2士葫、用戶行為分析

在利用用戶行為數(shù)據(jù)設(shè)計推薦算法之前,研究人員首先需要對用戶行為數(shù)據(jù)進行分析送悔,了解 數(shù)據(jù)中蘊含的一般規(guī)律慢显,這樣才能對算法的設(shè)計起到指導(dǎo)作用。

2.1 用戶活躍度和物品流行度

很多關(guān)于互聯(lián)網(wǎng)數(shù)據(jù)的研究發(fā)現(xiàn)欠啤,互聯(lián)網(wǎng)上的很多數(shù)據(jù)分布都滿足一種稱為Power Law3的分布荚藻,這個分布在互聯(lián)網(wǎng)領(lǐng)域也稱長尾分布

如果定義物品的流行度K為被K個用戶產(chǎn)生過行為洁段,而用戶的活躍度K定義為對K個物品產(chǎn)生過行為应狱,那么二者的分布大概如下圖所示(橫軸代表物品的流行度/用戶的活躍度,縱軸代表物品數(shù)/用戶數(shù)):

物品流行度長尾分布

用戶活躍度長尾分布

可以看到祠丝,不管是物品的流行度還是用戶的活躍度疾呻,都近似于長尾分布。

2.2 用戶活躍度和物品流行度的關(guān)系

一般認為纽疟,新用戶傾向于瀏覽熱門的物品罐韩,因為他 們對網(wǎng)站還不熟悉,只能點擊首頁的熱門物品污朽,而老用戶會逐漸開始瀏覽冷門的物品散吵。如果用橫坐標(biāo)表示用戶活躍度,縱坐標(biāo)表示具有某個活躍度的所有用戶評過分的物品的平均流行度。圖中曲線呈明顯下 降的趨勢矾睦,這表明用戶越活躍晦款,越傾向于瀏覽冷門的物品。

僅僅基于用戶行為數(shù)據(jù)設(shè)計的推薦算法一般稱為協(xié)同過濾算法枚冗。學(xué)術(shù)界對協(xié)同過濾算法進行了深入研究缓溅,提出了很多方法,比如基于鄰域的方法(neighborhood-based)赁温、隱語義模型 (latent factor model)坛怪、基于圖的隨機游走算法(random walk on graph)等。在這些方法中股囊, 最著名的袜匿、在業(yè)界得到最廣泛應(yīng)用的算法是基于鄰域的方法,而基于鄰域的方法主要包含下

面兩種算法稚疹。

1居灯、基于用戶的協(xié)同過濾算法:這種算法給用戶推薦和他興趣相似的其他用戶喜歡的物品。

2内狗、? 基于物品的協(xié)同過濾算法: 這種算法給用戶推薦和他之前喜歡的物品相似的物品怪嫌。

3、基于鄰域的算法

基于鄰域的算法是推薦系統(tǒng)中最基本的算法柳沙,該算法不僅在學(xué)術(shù)界得到了深入研究岩灭,而且在 業(yè)界得到了廣泛應(yīng)用÷咐穑基于鄰域的算法分為兩大類川背,一類是基于用戶的協(xié)同過濾算法,另一類是 基于物品的協(xié)同過濾算法「蛱唬現(xiàn)在我們所說的協(xié)同過濾,基本上就就是指基于用戶或者是基于物品的協(xié)同過濾算法膨更,因此妙真,我們可以說基于鄰域的算法即是我們常說的協(xié)同過濾算法。

3.1 基于用戶的協(xié)同過濾算法(UserCF)

基于用戶的協(xié)同過濾算法的基本思想是:在一個在線個性化推薦系統(tǒng)中荚守,當(dāng)一個用戶A需要個性化推薦 時珍德,可以先找到和他有相似興趣的其他用戶,然后把那些用戶喜歡的矗漾、而用戶A沒有聽說過的物品推薦給A锈候。

從上面的描述中可以看到,基于用戶的協(xié)同過濾算法主要包括兩個步驟敞贡。

(1) 找到和目標(biāo)用戶興趣相似的用戶集合泵琳。

(2) 找到這個集合中的用戶喜歡的,且目標(biāo)用戶沒有聽說過的物品推薦給目標(biāo)用戶。

這里获列,步驟1的關(guān)鍵是計算兩個用戶的興趣相似度谷市,協(xié)同過濾算法主要利用行為的相似度計算興趣的相似度。給定用戶u和用戶v击孩,令N(u)表示用戶u曾經(jīng)有過正反饋的物品集合迫悠,令N(v) 為用戶v曾經(jīng)有過正反饋的物品集合。那么我們可以通過以下兩種方法計算用戶的相似度:

基于Jaccard公式

基于余弦相似度

余弦相似度為什么是上面這種寫法呢巩梢,因為這里创泄,我們并不是用的用戶對物品的評分,而是用的0-1表示括蝠,所以對兩個集合做交集鞠抑,相當(dāng)于進行了點乘。如果我們的矩陣是用戶對物品的評分又跛,那么計算余弦相似度的時候可以利用用戶的具體評分而不是0-1值碍拆。

如果簡單的基于余弦相似度,顯得過于粗糙慨蓝,以圖書為例感混,如果兩個用戶都曾經(jīng)買過《新華字典》,這絲毫不能說明他們興趣相似礼烈, 因為絕大多數(shù)中國人小時候都買過《新華字典》弧满。但如果兩個用戶都買過《數(shù)據(jù)挖掘?qū)д摗罚强?以認為他們的興趣比較相似此熬,因為只有研究數(shù)據(jù)挖掘的人才會買這本書庭呜。換句話說,兩個用戶對冷門物品采取過同樣的行為更能說明他們興趣的相似度犀忱,因此募谎,我們可以基于物品的流行度對熱門物品進行一定的懲罰:

得到用戶之間的興趣相似度后,UserCF算法會給用戶推薦和他興趣最相似的K個用戶喜歡的 物品阴汇。如下的公式度量了UserCF算法中用戶u對物品i的感興趣程度:

其中数冬,S(u, K)包含和用戶u興趣最接近的K個用戶,N(i)是對物品i有過行為的用戶集合搀庶,wuv 是用戶u和用戶v的興趣相似度拐纱,rvi代表用戶v對物品i的興趣.

3.2 基于物品的協(xié)同過濾算法(ItemCF)

UserCF在一些網(wǎng)站(如Digg)中得到了應(yīng)用,但該算法有一些缺點哥倔。首先秸架, 隨著網(wǎng)站的用戶數(shù)目越來越大,計算用戶興趣相似度矩陣將越來越困難咆蒿,其運算時間復(fù)雜度和空間復(fù)雜度的增長和用戶數(shù)的增長近似于平方關(guān)系东抹。其次蚂子,基于用戶的協(xié)同過濾很難對推薦結(jié)果作出解釋。因此府阀,著名的電子商務(wù)公司亞馬遜提出了另一個算法——基于物品的協(xié)同過濾算法缆镣。

基于物品的協(xié)同過濾算法(簡稱ItemCF)給用戶推薦那些和他們之前喜歡的物品相似的物品。 比如试浙,該算法會因為你購買過《數(shù)據(jù)挖掘?qū)д摗范o你推薦《機器學(xué)習(xí)》董瞻。不過,ItemCF算法并不利用物品的內(nèi)容屬性計算物品之間的相似度田巴,它主要通過分析用戶的行為記錄計算物品之間的相似度钠糊。該算法認為,物品A和物品B具有很大的相似度是因為喜歡物品A的用戶大都也喜歡物品 B壹哺。

基于物品的協(xié)同過濾算法主要分為兩步抄伍。

(1) 計算物品之間的相似度。

(2) 根據(jù)物品的相似度和用戶的歷史行為給用戶生成推薦列表管宵。

ItemCF的第一步是計算物品之間的相似度截珍,在網(wǎng)站中,我們經(jīng)陈崞樱看到這么一句話:Customers Who Bought This Item Also Bought岗喉,那么從這句話的定義出發(fā),我們可以用下面的公式定義物品相似度:

這里炸庞,分母|N(i)|是喜歡物品i的用戶數(shù)钱床,而分子 N(i)?N(j) 是同時喜歡物品i和物品j的用戶 數(shù)。因此埠居,上述公式可以理解為喜歡物品i的用戶中有多少比例的用戶也喜歡物品j查牌。但是卻存在一個問題。如果物品j很熱門滥壕,很多人都喜歡纸颜,

那么Wij就會很大,接近1绎橘。因此懂衩,該公式會造成任何物品都會和熱門的物品有很大的相似度,這 對于致力于挖掘長尾信息的推薦系統(tǒng)來說顯然不是一個好的特性金踪。為了避免推薦出熱門的物品,可以用下面的公式:

這里由于還是0-1的原因牵敷,我們的余弦相似度可以寫成上面的形式胡岔。但是,是不是每個用戶的貢獻都相同呢? 假設(shè)有這么一個用戶枷餐,他是開書店的靶瘸,并且買了當(dāng)當(dāng)網(wǎng)上80%的書準(zhǔn)備用來自己賣。那么, 他的購物車里包含當(dāng)當(dāng)網(wǎng)80%的書怨咪。假設(shè)當(dāng)當(dāng)網(wǎng)有100萬本書屋剑,也就是說他買了80萬本。從前面 對ItemCF的討論可以看到诗眨,這意味著因為存在這么一個用戶唉匾,有80萬本書兩兩之間就產(chǎn)生了相似度。這個用戶雖然活躍匠楚,但是買這些書并非都是出于自身的興趣巍膘,而且這些書覆 蓋了當(dāng)當(dāng)網(wǎng)圖書的很多領(lǐng)域,所以這個用戶對于他所購買書的兩兩相似度的貢獻應(yīng)該遠遠小于一個只買了十幾本自己喜歡的書的文學(xué)青年芋簿。因此峡懈,我們要對這樣的用戶進行一定的懲罰,John S. Breese在論文1中提出了一個稱為IUF(Inverse User Frequence)与斤,即用戶活躍度對數(shù)的 倒數(shù)的參數(shù)肪康,他也認為活躍用戶對物品相似度的貢獻應(yīng)該小于不活躍的用戶,他提出應(yīng)該增加IUF參數(shù)來修正物品相似度的計算公式:

在得到物品之間的相似度后撩穿,ItemCF通過如下公式計算用戶u對一個物品j的興趣:

這里N(u)是用戶喜歡的物品的集合磷支,S(j,K)是和物品j最相似的K個物品的集合,wji是物品j和i 的相似度冗锁,rui是用戶u對物品i的興趣齐唆。

3.3 UserCF和ItemCF的比較

首先我們提出一個問題,為什么新聞網(wǎng)站一般使用UserCF冻河,而圖書箍邮、電商網(wǎng)站一般使用ItemCF呢?

首先回顧一下UserCF算法和ItemCF算法的推薦原理叨叙。UserCF給用戶推薦那些和他有共同興 趣愛好的用戶喜歡的物品锭弊,而ItemCF給用戶推薦那些和他之前喜歡的物品類似的物品。從這個算 法的原理可以看到擂错,UserCF的推薦結(jié)果著重于反映和用戶興趣相似的小群體的熱點味滞,而ItemCF 的推薦結(jié)果著重于維系用戶的歷史興趣。換句話說钮呀,UserCF的推薦更社會化剑鞍,反映了用戶所在的小型興趣群體中物品的熱門程度,而ItemCF的推薦更加個性化爽醋,反映了用戶自己的興趣傳承蚁署。

在新聞網(wǎng)站中,用戶的興趣不是特別細化蚂四,絕大多數(shù)用戶都喜歡看熱門的新聞光戈。個性化新聞推薦更加強調(diào)抓住 新聞熱點哪痰,熱門程度和時效性是個性化新聞推薦的重點,而個性化相對于這兩點略顯次要久妆。因 此晌杰,UserCF可以給用戶推薦和他有相似愛好的一群其他用戶今天都在看的新聞,這樣在抓住熱 點和時效性的同時筷弦,保證了一定程度的個性化肋演。同時,在新聞網(wǎng)站中奸笤,物品的更新速度遠遠快于新用戶的加入速度惋啃,而且 對于新用戶,完全可以給他推薦最熱門的新聞监右,因此UserCF顯然是利大于弊边灭。

但是,在圖書健盒、電子商務(wù)和電影網(wǎng)站绒瘦,比如亞馬遜、豆瓣扣癣、Netflix中惰帽,ItemCF則能極大地發(fā) 揮優(yōu)勢。首先父虑,在這些網(wǎng)站中该酗,用戶的興趣是比較固定和持久的。一個技術(shù)人員可能都是在購買 技術(shù)方面的書士嚎,而且他們對書的熱門程度并不是那么敏感呜魄,事實上越是資深的技術(shù)人員,他們看 的書就越可能不熱門莱衩。此外爵嗅,這些系統(tǒng)中的用戶大都不太需要流行度來輔助他們判斷一個物品的 好壞,而是可以通過自己熟悉領(lǐng)域的知識自己判斷物品的質(zhì)量笨蚁。因此,這些網(wǎng)站中個性化推薦的 任務(wù)是幫助用戶發(fā)現(xiàn)和他研究領(lǐng)域相關(guān)的物品括细。因此伪很,ItemCF算法成為了這些網(wǎng)站的首選算法。 此外奋单,這些網(wǎng)站的物品更新速度不會特別快锉试,一天一次更新物品相似度矩陣對它們來說不會造成 太大的損失,是可以接受的辱匿。同時键痛,從技術(shù)上考慮,UserCF需要維護一個用戶相似度的矩陣匾七,而ItemCF需要維護一個物品 相似度矩陣絮短。從存儲的角度說,如果用戶很多昨忆,那么維護用戶興趣相似度矩陣需要很大的空間丁频, 同理,如果物品很多邑贴,那么維護物品相似度矩陣代價較大席里。

下表是對二者的一個全面的比較:

4、隱語義模型

隱語義模型是最近幾年推薦系統(tǒng)領(lǐng)域最為熱門的研究話題拢驾,它的核心思想是通過隱含特征 (latent factor)聯(lián)系用戶興趣和物品奖磁。

使用隱語義模型的基本思路是:對于某個用戶,首先得到他的興趣分類繁疤,然后從分類中挑選他可能喜歡的物品咖为。那么這個方法大概需要解決三個問題:

1、? 如何給物品進行分類?

2稠腊、? 如何確定用戶對哪些類的物品感興趣躁染,以及感興趣的程度?

3、? 對于一個給定的類架忌,選擇哪些屬于這個類的物品推薦給用戶吞彤,以及如何確定這些物品在一個類中的權(quán)重?

隱含語義分析技術(shù)從誕生到今天產(chǎn)生了很多著名的模型和方法,其中和該技術(shù)相關(guān)且耳熟能 詳?shù)拿~有pLSA叹放、LDA饰恕、隱含類別模型(latent class model)、隱含主題模型(latent topic model)许昨、 矩陣分解(matrix factorization)懂盐。這些技術(shù)和方法在本質(zhì)上是相通的,其中很多方法都可以用于 個性化推薦系統(tǒng)糕档。我們將以LFM為例介紹隱含語義分析技術(shù)在推薦系統(tǒng)中的應(yīng)用莉恼。

LFM通過如下公式計算用戶u對物品i的興趣:

這個公式中 pu,k 和 qi,k 是模型的參數(shù),其中 pu,k 度量了用戶u的興趣和第k個隱類的關(guān)系速那,而 qi,k 度量了第k個隱類和物品i之間的關(guān)系俐银。那么,下面的問題就是如何計算這兩個參數(shù)端仰。

對最優(yōu)化理論或者機器學(xué)習(xí)有所了解的讀者捶惜,可能對如何計算這兩個參數(shù)都比較清楚。這兩 個參數(shù)是從數(shù)據(jù)集中計算出來的荔烧。要計算這兩個參數(shù)吱七,需要一個訓(xùn)練集汽久,對于每個用戶u,訓(xùn)練 集里都包含了用戶u喜歡的物品和不感興趣的物品踊餐,通過學(xué)習(xí)這個數(shù)據(jù)集景醇,就可以獲得上面的模型參數(shù)。我們可以通過最小化下面的損失函數(shù)來得到最合適的p和q:

上面的式子中吝岭,后面的兩項是為了防止過擬合的正則化項三痰,求解上面的式子可以使用隨機梯度下降來得到,這里就不再贅述窜管。

LFM模型在實際使用中有一個困難散劫,那就是它很難實現(xiàn)實時的推薦。經(jīng)典的LFM模型 每次訓(xùn)練時都需要掃描所有的用戶行為記錄幕帆,這樣才能計算出用戶隱類向量(pu)和物品隱類向 量(qi)获搏。而且LFM的訓(xùn)練需要在用戶行為記錄上反復(fù)迭代才能獲得比較好的性能。

5蜓肆、基于圖的模型

用戶行為很容易用二分圖表示颜凯,因此很多圖的算法都可以用到推薦系統(tǒng)中。

令G(V仗扬,E)表示用戶物品二分圖症概,其中V ?VU ?VI 由用戶頂點集合VU 和物品頂點集合VI 組成。對于數(shù)據(jù)集中每一個二元組(u, i)早芭,圖中都有一套對應(yīng)的邊 e(vu ,vi ) 彼城,其中 vu∈?VU 是用戶u 對應(yīng)的頂點∈vi ?VI 是物品i對應(yīng)的頂點。下圖是一個簡單的用戶物品二分圖模型退个,其中圓形節(jié) 3 點代表用戶募壕,方形節(jié)點代表物品,圓形節(jié)點和方形節(jié)點之間的邊代表用戶對物品的行為语盈。比如圖 中用戶節(jié)點A和物品節(jié)點a舱馅、b、d相連刀荒,說明用戶A對物品a代嗤、b、d產(chǎn)生過行為缠借。

在得到二分圖之后干毅,推薦的任務(wù)就變?yōu)槎攘坑脩繇旤c vu和與vu沒有邊直接相連的物品節(jié)點在圖上的相關(guān)性,相關(guān)性越高的物品在推薦列表中的權(quán)重就越高泼返。圖中兩個頂點的相關(guān)性主要取決于下面三個因素:

1硝逢、? 兩個頂點之間的路徑數(shù);

2、 兩個頂點之間路徑的長度;

3、? 兩個頂點之間的路徑經(jīng)過的頂點渠鸽。

而相關(guān)性高的一對頂點一般具有如下特征:

1叫乌、? 兩個頂點之間有很多路徑相連;

2、? 連接兩個頂點之間的路徑長度都比較短;

3徽缚、? 連接兩個頂點之間的路徑不會經(jīng)過出度比較大的頂點综芥。

基于上面3個主要因素,本節(jié)介紹的是一種基于隨機游走的PersonalRank算法:假設(shè)要給用戶u進行個性化推薦猎拨,可以從用戶u對應(yīng)的節(jié)點vu開始在用戶物品二分圖上進行隨 機游走。游走到任何一個節(jié)點時屠阻,首先按照概率α決定是繼續(xù)游走红省,還是停止這次游走并從vu節(jié) 點開始重新游走。如果決定繼續(xù)游走国觉,那么就從當(dāng)前節(jié)點指向的節(jié)點中按照均勻分布隨機選擇一 個節(jié)點作為游走下次經(jīng)過的節(jié)點吧恃。這樣,經(jīng)過很多次隨機游走后麻诀,每個物品節(jié)點被訪問到的概率 會收斂到一個數(shù)痕寓。最終的推薦列表中物品的權(quán)重就是物品節(jié)點的訪問概率。如果將上面的描述表示成公式蝇闭,可以得到如下公式:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呻率,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呻引,更是在濱河造成了極大的恐慌礼仗,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逻悠,死亡現(xiàn)場離奇詭異元践,居然都是意外死亡,警方通過查閱死者的電腦和手機童谒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門单旁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饥伊,你說我怎么就攤上這事象浑。” “怎么了撵渡?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵融柬,是天一觀的道長。 經(jīng)常有香客問我趋距,道長粒氧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任节腐,我火速辦了婚禮外盯,結(jié)果婚禮上摘盆,老公的妹妹穿的比我還像新娘。我一直安慰自己饱苟,他們只是感情好孩擂,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著箱熬,像睡著了一般类垦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上城须,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天蚤认,我揣著相機與錄音,去河邊找鬼糕伐。 笑死砰琢,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的良瞧。 我是一名探鬼主播陪汽,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼褥蚯!你這毒婦竟也來了挚冤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤赞庶,失蹤者是張志新(化名)和其女友劉穎你辣,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尘执,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡舍哄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了誊锭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片表悬。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖丧靡,靈堂內(nèi)的尸體忽然破棺而出蟆沫,到底是詐尸還是另有隱情,我是刑警寧澤温治,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布饭庞,位于F島的核電站,受9級特大地震影響熬荆,放射性物質(zhì)發(fā)生泄漏舟山。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望累盗。 院中可真熱鬧寒矿,春花似錦、人聲如沸若债。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蠢琳。三九已至啊终,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間傲须,已是汗流浹背孕索。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留躏碳,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓散怖,卻偏偏與公主長得像菇绵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子镇眷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

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