日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

QA问答系统中的深度学习技术实现

發(fā)布時(shí)間:2023/12/20 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QA问答系统中的深度学习技术实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
應(yīng)用場(chǎng)景 智能問答機(jī)器人火得不行,開始研究深度學(xué)習(xí)在NLP領(lǐng)域的應(yīng)用已經(jīng)有一段時(shí)間,最近在用深度學(xué)習(xí)模型直接進(jìn)行QA系統(tǒng)的問答匹配。主流的還是CNN和LSTM,在網(wǎng)上沒有找到特別合適的可用的代碼,自己先寫了一個(gè)CNN的(theano),效果還行,跟論文中的結(jié)論是吻合的。目前已經(jīng)應(yīng)用到了我們的產(chǎn)品上。 原理 參看《Applying Deep Learning To Answer Selection: A Study And An Open Task》,文中比較了好幾種網(wǎng)絡(luò)結(jié)構(gòu),選擇了效果相對(duì)較好的其中一個(gè)來(lái)實(shí)現(xiàn),網(wǎng)絡(luò)描述如下: Q&A共用一個(gè)網(wǎng)絡(luò),網(wǎng)絡(luò)中包括HL,CNN,P+T和Cosine_Similarity,HL是一個(gè)g(W*X+b)的非線性變換,CNN就不說了,P是max_pooling,T是激活函數(shù)Tanh,最后的Cosine_Similarity表示將Q&A輸出的語(yǔ)義表示向量進(jìn)行相似度計(jì)算。 詳細(xì)描述下從輸入到輸出的矩陣變換過程:
  • Qp:[batch_size, sequence_len],Qp是Q之前的一個(gè)表示(在上圖中沒有畫出)。所有句子需要截?cái)嗷騪adding到一個(gè)固定長(zhǎng)度(因?yàn)楹竺娴腃NN一般是處理固定長(zhǎng)度的矩陣),例如句子包含3個(gè)字ABC,我們選擇固定長(zhǎng)度sequence_len為100,則需要將這個(gè)句子padding成ABC<a><a>…<a>(100個(gè)字),其中的<a>就是添加的專門用于padding的無(wú)意義的符號(hào)。訓(xùn)練時(shí)都是做mini-batch的,所以這里是一個(gè)batch_size行的矩陣,每行是一個(gè)句子。
  • Q:[batch_size, sequence_len, embedding_size]。句子中的每個(gè)字都需要轉(zhuǎn)換成對(duì)應(yīng)的字向量,字向量的維度大小是embedding_size,這樣Qp就從一個(gè)2維的矩陣變成了3維的Q
  • HL層輸出:[batch_size, embedding_size, hl_size]。HL層:[embedding_size, hl_size],Q中的每個(gè)句子會(huì)通過和HL層的點(diǎn)積進(jìn)行變換,相當(dāng)于將每個(gè)字的字向量從embedding_size大小變換到hl_size大小。
  • CNN+P+T輸出:[batch_size, num_filters_total]。CNN的filter大小是[filter_size, hl_size],列大小是hl_size,這個(gè)和字向量的大小是一樣的,所以對(duì)每個(gè)句子而言,每個(gè)filter出來(lái)的結(jié)果是一個(gè)列向量(而不是矩陣),列向量再取max-pooling就變成了一個(gè)數(shù)字,每個(gè)filter輸出一個(gè)數(shù)字,num_filters_total個(gè)filter出來(lái)的結(jié)果當(dāng)然就是[num_filters_total]大小的向量,這樣就得到了一個(gè)句子的語(yǔ)義表示向量。T就是在輸出結(jié)果上加上Tanh激活函數(shù)。
  • Cosine_Similarity:[batch_size]。最后的一層并不是通常的分類或者回歸的方法,而是采用了計(jì)算兩個(gè)向量(Q&A)夾角的方法,下面是網(wǎng)絡(luò)損失函數(shù)。,m是需要設(shè)定的參數(shù)margin,VQ、VA+、VA-分別是問題、正向答案、負(fù)向答案對(duì)應(yīng)的語(yǔ)義表示向量。損失函數(shù)的意義就是:讓正向答案和問題之間的向量cosine值要大于負(fù)向答案和問題的向量cosine值,大多少,就是margin這個(gè)參數(shù)來(lái)定義的。cosine值越大,兩個(gè)向量越相近,所以通俗的說這個(gè)Loss就是要讓正向的答案和問題愈來(lái)愈相似,讓負(fù)向的答案和問題越來(lái)越不相似。
實(shí)現(xiàn) 代碼點(diǎn)擊這里,使用的數(shù)據(jù)是一份英文的insuranceQA,下面介紹代碼重點(diǎn)部分: 字向量。本文采用字向量的方法,沒有使用詞向量。使用字向量的目的主要是為了解決未登錄詞的問題,這樣在測(cè)試的時(shí)候就很少會(huì)遇到Unknown的字向量的問題了。而且字向量的效果也不一定比詞向量的效果差,還省去了分詞的各種麻煩。先用word2vec生成一份字向量,相當(dāng)于我們?cè)谧鰌re-training了(之后測(cè)試了隨機(jī)初始化字向量的方法,效果差不多) 原理中的步驟2。這里沒有做HL層的變換,實(shí)際測(cè)試中,增加HL層有非常非常小的提升,所以在這里就省去了改步驟。 CNN可以設(shè)置多種大小的filter,最后各種filter的結(jié)果會(huì)拼接起來(lái)。 原理中的步驟4。這里執(zhí)行卷積,max-pooling和Tanh激活。 生成的ouputs_1是一個(gè)python的list,使用concatenate將list的多個(gè)tensor拼接起來(lái)(list中的每個(gè)tensor表示一種大小的filter卷積的結(jié)果) 原理中的步驟5。計(jì)算問題、正向答案、負(fù)向答案的向量夾角 生成Loss損失函數(shù)和Accuracy。 核心的網(wǎng)絡(luò)構(gòu)建代碼就是這些,其他的代碼都是訓(xùn)練數(shù)據(jù)、驗(yàn)證數(shù)據(jù)的讀入,以及theano構(gòu)建訓(xùn)練時(shí)的一些常規(guī)代碼。 如果需要增加HL層,可參照如下的代碼。Whl即是HL層的網(wǎng)絡(luò),將input和Whl點(diǎn)積即可。 dropout的實(shí)現(xiàn)。 結(jié)果 使用上面的代碼,Test 1的Top-1 Accuracy可以達(dá)到61%-62%,和論文中的結(jié)論基本一致了,至于論文中提到的GESD、AESD等方法沒有再測(cè)試了,運(yùn)行較慢,其他數(shù)據(jù)集也沒有再測(cè)試了。 下面是國(guó)外友人用一個(gè)叫keras的工具(封裝的theano和tensorflow)弄的類似代碼,Test 1的Top-1準(zhǔn)確率在50%左右,比他這個(gè)要高 http://benjaminbolte.com/blog/2016/keras-language-modeling.html Test setTop-1 AccuracyMean Reciprocal Rank
Test 1 0.4933 0.6189
Test 2 0.4606 0.5968
Dev 0.4700 0.6088 另外,原始的insuranceQA需要進(jìn)行一些處理才能在這個(gè)代碼上使用,具體參看github上的說明吧。 一些技巧
  • 字向量和詞向量的效果相當(dāng)。所以優(yōu)先使用字向量,省去了分詞的麻煩,還能更好的避免未登錄詞的問題,何樂而不為。
  • 字向量不是固定的,在訓(xùn)練中會(huì)更新
  • Dropout的使用對(duì)最高的準(zhǔn)確率沒有很大的影響,但是使用了Dropout的結(jié)果更穩(wěn)定,準(zhǔn)確率的波動(dòng)會(huì)更小,所以建議還是要使用Dropout的。不過Dropout也不易過度使用,比如Dropout的keep_prob概率如果設(shè)置到0.25,則模型收斂得更慢,訓(xùn)練時(shí)間長(zhǎng)很多,效果也有可能會(huì)更差,設(shè)置會(huì)差很多。我這版代碼使用的keep_prob為0.5,同時(shí)保證準(zhǔn)確率和訓(xùn)練時(shí)間。另外,Dropout只應(yīng)用到了max-pooling的結(jié)果上,其他地方?jīng)]有再使用了,過多的使用反而不好。
  • 如何生成訓(xùn)練集。每個(gè)訓(xùn)練case需要一個(gè)問題+一個(gè)正向答案+一個(gè)負(fù)向答案,很明顯問題和正向答案都是有的,負(fù)向答案的生成方法就是隨機(jī)采樣,這樣就不需要涉及任何人工標(biāo)注工作了,可以很方便的應(yīng)用到大數(shù)據(jù)集上。
  • HL層的效果不明顯,有很微量的提升。如果HL層的大小是200,字向量是100,則HL層相當(dāng)于將字向量再放大一倍,這個(gè)感覺沒有多少信息可利用的,還不如直接將字向量設(shè)置成200,還省去了HL這一層的變換。
  • margin的值一般都設(shè)置得比較小。這里用的是0.05
  • 如果將Cosine_similarity這一層換成分類或者回歸,印象中效果是不如Cosine_similarity的(具體數(shù)據(jù)忘了)
  • num_filters越大并不是效果越好,基本到了一定程度就很難提升了,反而會(huì)降低訓(xùn)練速度。
  • 同時(shí)也寫了tensorflow版本代碼,對(duì)比theano的,效果差不多
  • Adam和SGD兩種訓(xùn)練方法比較,Adam訓(xùn)練速度貌似會(huì)更快一些,效果基本也持平吧,沒有太細(xì)節(jié)的對(duì)比。不過同樣的網(wǎng)絡(luò)+SGD,theano好像訓(xùn)練要更快一些。
  • Loss和Accuracy是比較重要的監(jiān)控參數(shù)。如果寫一個(gè)新的網(wǎng)絡(luò)的話,類似的指標(biāo)是很有必要的,可以在每個(gè)迭代中評(píng)估網(wǎng)絡(luò)是否正在收斂。因?yàn)檎{(diào)試比較麻煩,所以通過這些參數(shù)能評(píng)估你的網(wǎng)絡(luò)寫對(duì)沒,參數(shù)設(shè)置是否正確。
  • 網(wǎng)絡(luò)的參數(shù)還是比較重要的,如果一些參數(shù)設(shè)置不合理,很有可能結(jié)果千差萬(wàn)別,記得最初用tensorflow實(shí)現(xiàn)的時(shí)候,應(yīng)該是dropout設(shè)置得太小,導(dǎo)致效果很差,很久才找到原因。所以調(diào)參和微調(diào)網(wǎng)絡(luò)還是需要一定的技巧和經(jīng)驗(yàn)的,做這版代碼的時(shí)候就經(jīng)歷了一段比較痛苦的調(diào)參過程,最開始還懷疑是網(wǎng)絡(luò)設(shè)計(jì)或是代碼有問題,最后總結(jié)應(yīng)該就是參數(shù)沒設(shè)置好。
結(jié)語(yǔ) 如果關(guān)注這個(gè)東西的人多的話,后面還可以有tensorflow版本的QA CNN,以及LSTM的代碼奉上 Contact: jiangwen127@gmail.com weibo:碼壇奧沙利文
發(fā)表在 機(jī)器學(xué)習(xí), 深度學(xué)習(xí), 自然語(yǔ)言處理, 問答系統(tǒng)? ? ? ? | 留下評(píng)論

達(dá)觀數(shù)據(jù)搜索引擎的Query自動(dòng)糾錯(cuò)技術(shù)和架構(gòu)詳解發(fā)表于 2016年04月27號(hào)recommender
1 背景
如今,搜索引擎是人們的獲取信息最重要的方式之一,在搜索頁(yè)面小小的輸入框中,只需輸入幾個(gè)關(guān)鍵字,就能找到你感興趣問題的相關(guān)網(wǎng)頁(yè)。搜索巨頭Google,甚至已經(jīng)使Google這個(gè)創(chuàng)造出來(lái)的單詞成為動(dòng)詞,有問題Google一下就可以。在國(guó)內(nèi),百度也同樣成為一個(gè)動(dòng)詞。除了通用搜索需求外,很多垂直細(xì)分領(lǐng)域的搜索需求也很旺盛,比如電商網(wǎng)站的產(chǎn)品搜索,文學(xué)網(wǎng)站的小說搜索等。面對(duì)這些需求,達(dá)觀數(shù)據(jù)(www.datagrand.com)作為國(guó)內(nèi)提供中文云搜索服務(wù)的高科技公司,為合作伙伴提供高質(zhì)量的搜索技術(shù)服務(wù),并進(jìn)行搜索服務(wù)的統(tǒng)計(jì)分析等功能。(達(dá)觀數(shù)據(jù)聯(lián)合創(chuàng)始人高翔) 搜索引擎系統(tǒng)最基本最核心的功能是信息檢索,找到含有關(guān)鍵字的網(wǎng)頁(yè)或文檔,然后按照一定排序?qū)⒔Y(jié)果給出。在此基礎(chǔ)之上,搜索引擎能夠提供更多更復(fù)雜的功能來(lái)提升用戶體驗(yàn)。對(duì)于一個(gè)成熟的搜索引擎系統(tǒng),用戶看似簡(jiǎn)單的搜索過程,需要在系統(tǒng)中經(jīng)過多個(gè)環(huán)節(jié),多個(gè)模塊協(xié)同工作,才能提供一個(gè)讓人滿意的搜索結(jié)果。其中拼寫糾錯(cuò)(Error Correction,以下簡(jiǎn)稱EC)是用戶比較容易感知的一個(gè)功能,比如百度的糾錯(cuò)功能如下圖所示: 圖 1:百度糾錯(cuò)功能示例 EC其實(shí)是屬于Query Rewrite(以下簡(jiǎn)稱QR)模塊中的一個(gè)功能,QR模塊包括拼寫糾錯(cuò),同義改寫,關(guān)聯(lián)query等多個(gè)功能。QR模塊對(duì)于提升用戶體驗(yàn)有著巨大的幫助,對(duì)于搜索質(zhì)量不佳的query進(jìn)行改寫后能返回更好的搜索結(jié)果。QR模塊內(nèi)容較多,以下著重介紹EC功能。
繼續(xù)閱讀 →
發(fā)表在 自然語(yǔ)言處理? ? ? ? | 一條評(píng)論

非主流自然語(yǔ)言處理——遺忘算法系列(四):改進(jìn)TF-IDF權(quán)重公式發(fā)表于 2016年04月23號(hào)老憨

一、前言
  前文介紹了利用詞庫(kù)進(jìn)行分詞,本文介紹詞庫(kù)的另一個(gè)應(yīng)用:詞權(quán)重計(jì)算。

二、詞權(quán)重公式
  1、公式的定義

    定義如下公式,用以計(jì)算詞的權(quán)重:
    
  2、公式的由來(lái)

    在前文中,使用如下公式作為分詞的依據(jù):
    

    任給一個(gè)句子或文章,通過對(duì)最佳分詞方案所對(duì)應(yīng)的公式進(jìn)行變換,可以得到:
    

    按前面權(quán)重公式的定義,上面的公式可以理解為:一個(gè)句子出現(xiàn)的概率對(duì)數(shù)等于句子中各詞的權(quán)重之和。

    公式兩邊同時(shí)取負(fù)號(hào)使權(quán)重是個(gè)正值。



三、與TF-IDF的關(guān)系
  詞頻、逆文檔頻率(TF-IDF)在自然語(yǔ)言處理中,應(yīng)用十分廣泛,也是提取關(guān)鍵詞的常用方法,公式如下:
  

  從形式上看,該公式與我們定義的權(quán)重公式很像,而且用途也近似,那么它們之間有沒有關(guān)系呢?

  答案是肯定的。

  我們知道,IDF是按文檔為單位統(tǒng)計(jì)的,無(wú)論文檔的長(zhǎng)短,統(tǒng)一都按一篇計(jì)數(shù),感覺這個(gè)統(tǒng)計(jì)的粒度還是比較粗的,有沒有辦法將文本的長(zhǎng)短,這個(gè)明顯相關(guān)的因素也考慮進(jìn)去呢,讓這個(gè)公式更加精細(xì)些?

  答案也是肯定的。

  文章是由詞鋪排而成,長(zhǎng)短不同,所包含的詞的個(gè)數(shù)也就有多有少。

  我們可以考慮在統(tǒng)計(jì)文檔個(gè)數(shù)時(shí),為每個(gè)文檔引入包含多少個(gè)詞這樣一個(gè)權(quán)重,以區(qū)別長(zhǎng)短不同的文檔,沿著這個(gè)思路,改寫一下IDF公式:
  
  我們用所有文檔中的詞做成詞庫(kù),那么上式中:
  
  綜合上面的推導(dǎo)過程,我們知道,本文所定義的詞權(quán)重公式,本質(zhì)上是tf-idf為長(zhǎng)短文檔引入權(quán)重的加強(qiáng)版,而該公式的應(yīng)用也極為簡(jiǎn)單,只需要從詞庫(kù)中讀取該詞詞頻、詞庫(kù)總詞頻即可。

  時(shí)間復(fù)雜度最快可達(dá)O(1)級(jí),比如詞庫(kù)以Hash表存儲(chǔ)。

  關(guān)于TF-IDF更完整的介紹及主流用法,建議參看阮一峰老師的博文《TF-IDF與余弦相似性的應(yīng)用(一):自動(dòng)提取關(guān)鍵詞》。

四、公式應(yīng)用
    詞權(quán)重用途很廣,幾乎詞袋類算法中,都可以考慮使用。常見的應(yīng)用有:

     1、關(guān)鍵詞抽取、自動(dòng)標(biāo)簽生成

        作法都很簡(jiǎn)單,分詞后排除停用詞,然后按權(quán)重值排序,取排在前面的若干個(gè)詞即可。

     2、文本摘要

        完整的文本摘要功能實(shí)現(xiàn)很復(fù)雜也很困難,這里所指,僅是簡(jiǎn)單應(yīng)用:由前面推導(dǎo)過程中可知,句子的權(quán)重等于分詞結(jié)果各詞的權(quán)重之和,從而獲得句子的權(quán)重排序。

     3、相似度計(jì)算

        相似度計(jì)算,我們將在下一篇文中單獨(dú)介紹。

五、演示程序
  在演示程序顯示詞庫(kù)結(jié)果時(shí),是按本文所介紹的權(quán)重公式排序的。

  演示程序與詞庫(kù)生成的相同:

  下載地址:遺忘算法(詞庫(kù)生成、分詞、詞權(quán)重)演示程序.rar

  特別感謝:王斌老師指出,本文公式實(shí)質(zhì)上是TF-ICF。
六、聯(lián)系方式:  1、QQ:老憨 244589712
  2、郵箱:gzdmcaoyc@163.com

發(fā)表在 自然語(yǔ)言處理? ? ? ? | 標(biāo)簽為 TF-IDF, 自然語(yǔ)言處理, 遺忘算法? ? ? ? | 留下評(píng)論

非主流自然語(yǔ)言處理——遺忘算法系列(三):分詞發(fā)表于 2016年04月23號(hào)老憨

一、前言
  前面介紹了詞庫(kù)的自動(dòng)生成的方法,本文介紹如何利用前文所生成的詞庫(kù)進(jìn)行分詞。

二、分詞的原理
  分詞的原理,可以參看吳軍老師《數(shù)學(xué)之美》中的相關(guān)章節(jié),這里摘取Google黑板報(bào)版本中的部分:

  

  從上文中,可以知道分詞的任務(wù)目標(biāo):給出一個(gè)句子S,找到一種分詞方案,使下面公式中的P(S)最大:

  

  不過,聯(lián)合概率求起來(lái)很困難,這種情況我們通常作馬爾可夫假設(shè),以簡(jiǎn)化問題,即:任意一個(gè)詞wi的出現(xiàn)概率只同它前面的詞 wi-1 有關(guān)。

  關(guān)于這個(gè)問題,吳軍老師講的深入淺出,整段摘錄如下:
  

  另外,如果我們假設(shè)一個(gè)詞與其他詞都不相關(guān),即相互獨(dú)立時(shí),此時(shí)公式最簡(jiǎn),如下:
  

  這個(gè)假設(shè)分詞無(wú)關(guān)的公式,也是本文所介紹的分詞算法所使用的。

三、算法分析
  問:假設(shè)分詞結(jié)果中各詞相互無(wú)關(guān)是否可行?

  答:可行,前提是使用遺忘算法系列(二)中所述方法生成的詞庫(kù),理由如下:

  分析ICTCLAS廣受好評(píng)的分詞系統(tǒng)的免費(fèi)版源碼,可以發(fā)現(xiàn),在這套由張華平、劉群兩位博士所開發(fā)分詞系統(tǒng)的算法中假設(shè)了:分詞結(jié)果中詞只與其前面的一個(gè)詞有關(guān)。

  回憶我們?cè)~庫(kù)生成的過程可以知道,如果相鄰的兩個(gè)詞緊密相關(guān),那么這兩個(gè)詞會(huì)連為一個(gè)粗粒度的詞被加入詞庫(kù)中,如:除“清華”、“大學(xué)”會(huì)是單獨(dú)的詞外,“清華大學(xué)”也會(huì)是一個(gè)詞,分詞過程中具體選用那種,則由它們的概率來(lái)決定。

  也就是說,我們?cè)谏稍~庫(kù)的同時(shí),已經(jīng)隱含的完成了相關(guān)性訓(xùn)練。

  關(guān)于ICTCLAS源碼分析的文章,可以參看呂震宇博文:《天書般的ICTCLAS分詞系統(tǒng)代碼》。

  問:如何實(shí)現(xiàn)分詞?

  答:基于前文生成的詞庫(kù),我們可以假設(shè)分詞結(jié)果相互無(wú)關(guān),分詞過程就比較簡(jiǎn)單,使用下面的步驟可以O(shè)(N)級(jí)時(shí)間,單遍掃描完成分詞:

  逐字掃描句子,從詞庫(kù)中查出限定字長(zhǎng)內(nèi),以該字結(jié)尾的所有詞,分別計(jì)算其中的詞與該詞之前各詞的概率乘積,取結(jié)果值最大的詞,分別緩存下當(dāng)前字所在位置的最大概率積,以及對(duì)應(yīng)的分詞結(jié)果。

  重復(fù)上面的步驟,直到句子掃描完畢,最后一字位置所得到即為整句分詞結(jié)果。


  3、算法特點(diǎn)
    3.1、無(wú)監(jiān)督學(xué)習(xí);
    3.2、O(N)級(jí)時(shí)間復(fù)雜度;
    3.3、詞庫(kù)自維護(hù),程序可無(wú)需人工參與的情況下,自行發(fā)現(xiàn)并添加新詞、調(diào)整詞頻、清理錯(cuò)詞、移除生僻詞,保持詞典大小適當(dāng);
    3.4、領(lǐng)域自適應(yīng):領(lǐng)域變化時(shí),詞條、詞頻自適應(yīng)的隨之調(diào)整;
    3.5、支持多語(yǔ)種混合分詞。



四、演示程序下載
  演示程序與詞庫(kù)生成的相同:

  下載地址:遺忘算法(詞庫(kù)生成、分詞、詞權(quán)重)演示程序.rar

五、聯(lián)系方式:
  1、QQ:老憨 244589712
  2、郵箱:gzdmcaoyc@163.com

發(fā)表在 自然語(yǔ)言處理? ? ? ? | 標(biāo)簽為 無(wú)監(jiān)督分詞, 自然語(yǔ)言處理, 自適應(yīng)詞典, 跨語(yǔ)種, 遺忘算法? ? ? ? | 13 條評(píng)論

非主流自然語(yǔ)言處理——遺忘算法系列(二):大規(guī)模語(yǔ)料詞庫(kù)生成發(fā)表于 2016年04月23號(hào)老憨
一、前言
  本文介紹利用牛頓冷卻模擬遺忘降噪,從大規(guī)模文本中無(wú)監(jiān)督生成詞庫(kù)的方法。



二、詞庫(kù)生成


    算法分析,先來(lái)考慮以下幾個(gè)問題



    問:目標(biāo)是從文本中抽取詞語(yǔ),是否可以考慮使用遺忘的方法呢?

    答:可以,詞語(yǔ)具備以相對(duì)穩(wěn)定周期重復(fù)再現(xiàn)的特征,所以可以考慮使用遺忘的方法。這意味著,我們只需要找一種適當(dāng)?shù)姆椒?#xff0c;將句子劃分成若干子串,這些子串即為“候選詞”。在遺忘的作用下,如果“候選詞”會(huì)周期性重現(xiàn),那么它就會(huì)被保留在詞庫(kù)中,相反如果只是偶爾或隨機(jī)出現(xiàn),則會(huì)逐漸被遺忘掉。



    問:那用什么方法來(lái)把句子劃分成子串比較合適呢?

    答:考察句中任意相鄰的兩個(gè)字,相鄰兩字有兩種可能:要么同屬于一個(gè)共同的詞,要么是兩個(gè)詞的邊界。我們都會(huì)有這樣一種感覺,屬于同一個(gè)詞的相鄰兩字的“關(guān)系”肯定比屬于不同詞的相鄰兩字的“關(guān)系”要強(qiáng)烈一些。

    數(shù)學(xué)中并不缺少刻劃“關(guān)系”的模型,這里我們選擇公式簡(jiǎn)單并且參數(shù)容易統(tǒng)計(jì)的一種:如果兩個(gè)字共現(xiàn)的概率大于它們隨機(jī)排列在一起的概率,那么我們認(rèn)為這兩個(gè)字有關(guān),反之則無(wú)關(guān)。

    如果相鄰兩字無(wú)關(guān),就可以將兩字中間斷開。逐字掃描句子,如果相鄰兩字滿足下面的公式,則將兩字?jǐn)嚅_,如此可將句子切成若干子串,從而獲得“候選詞”集,判斷公式如下圖所示:

    

    公式中所需的參數(shù)可以通過統(tǒng)計(jì)獲得:遍歷一次語(yǔ)料,即可獲得公式中所需的“單字的頻數(shù)”、“相鄰兩字共現(xiàn)的頻數(shù)”,以及“所有單字的頻數(shù)總和”。



    問:如何計(jì)算遺忘剩余量?

    答:使用牛頓冷卻公式,各參數(shù)在遺忘算法中的含義,如下圖所示:



    牛頓冷卻公式的詳情說明,可以參考阮一峰老師的博文《基于用戶投票的排名算法(四):牛頓冷卻定律》。

    

    問:參數(shù)中時(shí)間是用現(xiàn)實(shí)時(shí)間嗎,遺忘系數(shù)取多少合適呢?

    答:a、關(guān)于時(shí)間:

      可以使用現(xiàn)實(shí)時(shí)間,遺忘的發(fā)生與現(xiàn)實(shí)同步。

      也可以考慮用處理語(yǔ)料中對(duì)象的數(shù)量來(lái)代替,這樣僅當(dāng)有數(shù)據(jù)處理時(shí),才會(huì)發(fā)生遺忘。比如按處理的字?jǐn)?shù)為計(jì)時(shí)單位,人閱讀的速度約每秒5至7個(gè)字,當(dāng)然每個(gè)人的閱讀速度并不相同,這里的參數(shù)值要求并不需要特別嚴(yán)格。



      b、遺忘系數(shù)可以參考艾賓浩斯曲線中的實(shí)驗(yàn)值,如下圖(來(lái)自互聯(lián)網(wǎng))

    

      我們?nèi)?天記憶剩余量約為25.4%這個(gè)值,按每秒閱讀7個(gè)字,將其代入牛頓冷卻公式可以求得遺忘系數(shù):

    



      注意艾賓浩斯曲線中的每組數(shù)值代入公式,所得的系數(shù)并不相同,會(huì)對(duì)詞庫(kù)的最大有效容量產(chǎn)生影響。

二、該算法生成詞庫(kù)的特點(diǎn)
    3.1、無(wú)監(jiān)督學(xué)習(xí)

    3.2、O(N)級(jí)時(shí)間復(fù)雜度

    3.3、訓(xùn)練、執(zhí)行為同一過程,可無(wú)縫處理流式數(shù)據(jù)

    3.4、未登錄詞、新詞、登錄詞沒有區(qū)別

    3.5、領(lǐng)域自適應(yīng):領(lǐng)域變化時(shí),詞條、詞頻自適應(yīng)的隨之調(diào)整

    3.6、算法中僅使用到頻數(shù)這一語(yǔ)言的共性特征,無(wú)需對(duì)任何字符做特別處理,因此原理上跨語(yǔ)種。

三、詞庫(kù)成熟度

  由于每個(gè)詞都具備一個(gè)相對(duì)穩(wěn)定的重現(xiàn)周期,不難證明,當(dāng)訓(xùn)練語(yǔ)料達(dá)到一定規(guī)模后,在遺忘的作用下,每個(gè)詞的詞頻在衰減和累加會(huì)達(dá)到平衡,也即衰減的速度與增加的速度基本一致。成熟的詞庫(kù),詞頻的波動(dòng)相對(duì)會(huì)比較小,利用這個(gè)特征,我們可以衡量詞庫(kù)的成熟程度。

四、源碼(C#)、演示程序下載

  使用內(nèi)附語(yǔ)料(在“可直接運(yùn)行的演示程序”下可以找到)生成詞庫(kù)效果如下:
  
  下載地址:遺忘算法(詞庫(kù)生成、分詞、詞權(quán)重)演示程序.rar
五、聯(lián)系方式:

  1、QQ:老憨 244589712
  2、郵箱:gzdmcaoyc@163.com


發(fā)表在 自然語(yǔ)言處理? ? ? ? | 標(biāo)簽為 未登錄詞發(fā)現(xiàn), 牛頓冷卻公式, 自然語(yǔ)言處理, 詞庫(kù)生成, 遺忘算法? ? ? ? | 4 條評(píng)論

非主流自然語(yǔ)言處理——遺忘算法系列(一):算法概述發(fā)表于 2016年04月19號(hào)老憨
一、前言
這里“遺忘”不是筆誤,這個(gè)系列要講的“遺忘算法”,是以牛頓冷卻公式模擬遺忘為基礎(chǔ)、用于自然語(yǔ)言處理(NLP)的一類方法的統(tǒng)稱,而不是大名鼎鼎的“遺傳算法”!

在“遺忘”這條非主流自然語(yǔ)言處理路上,不知不覺已經(jīng)摸索了三年有余,遺忘算法也算略成體系,雖然仍覺時(shí)機(jī)未到,還是決定先停一下,將腦中所積梳理成文,交由NLP的同好們點(diǎn)評(píng)交流。

二、遺忘算法原理
能夠從未知的事物中發(fā)現(xiàn)關(guān)聯(lián)、提煉規(guī)律才是真正智能的標(biāo)志,而遺忘正是使智能生物具備這一能力的工具,也是適應(yīng)變化的利器,“遺忘”這一頗具負(fù)能量特征的家伙是如何實(shí)現(xiàn)發(fā)現(xiàn)規(guī)律這么個(gè)神奇魔法的呢?

讓我們從巴甫洛夫的狗說起:狗聽到鈴聲就知道開飯了。

鈴聲和開飯之間并不存在必然的聯(lián)系,我們知道之所以狗會(huì)將兩者聯(lián)系在一起,是因?yàn)榘透β宸蛴幸獾膶烧咭淮未卧诠纺莾褐貜?fù)共現(xiàn)。所以,重復(fù)是建立關(guān)聯(lián)的必要條件。

我們還可以想像,狗在進(jìn)食的時(shí)候聽到的聲音可能還有鳥叫聲、風(fēng)吹樹葉的沙沙聲,為什么這些同樣具備重復(fù)特征聲音卻沒有和開飯建立關(guān)系呢?

細(xì)分辨我們不難想到:鈴聲和開飯之間不僅重復(fù)共現(xiàn),而且這種重復(fù)共現(xiàn)還具備一個(gè)相對(duì)穩(wěn)定的周期,而其他的那些聲音和開飯的共現(xiàn)則是隨機(jī)的。

那么遺忘又在其中如何起作用的呢?

1、所有事物一視同仁的按相同的規(guī)律進(jìn)行遺忘; 2、偶爾或隨機(jī)出現(xiàn)的事物因此會(huì)隨時(shí)間而逐漸淡忘; 3、而具有相對(duì)穩(wěn)定周期重復(fù)再現(xiàn)的事物,雖然也按同樣的規(guī)律遺忘,但由于周期性的得到補(bǔ)充,從而可以動(dòng)態(tài)的保留在記憶中。

在自然語(yǔ)言處理中,很多對(duì)象比如:詞、詞與詞的關(guān)聯(lián)、模板等,都具備按相對(duì)穩(wěn)定重現(xiàn)的特征,因此非常適用遺忘來(lái)處理。

三、牛頓冷卻公式
那么,我們用什么來(lái)模擬遺忘呢?

提到遺忘,很自然的會(huì)想到艾賓浩斯遺忘曲線,如果這條曲線有個(gè)函數(shù)形式,那么無(wú)疑是模擬遺忘的最佳建模選擇。遺憾的是它只是一組離散的實(shí)驗(yàn)數(shù)據(jù),但至少讓我們知道,遺忘是呈指數(shù)衰減的。

另外有一個(gè)事實(shí),有的人記性好些,有的人記性則差些,不同人之間的遺忘曲線是不同的,但這并不會(huì)從本質(zhì)上影響不同人對(duì)事物的認(rèn)知,也就是說,如果存在一個(gè)遺忘函數(shù),它首先是指數(shù)形式的,其次在實(shí)用過程中,該函數(shù)的系數(shù)并不那么重要。

這提醒我們,可以嘗試用一些指數(shù)形式的函數(shù)來(lái)代替遺忘曲線,然后用實(shí)踐去檢驗(yàn),如果能滿足工程實(shí)用就很好,這樣的函數(shù)公式并不難找,比如:退火算法、半衰期公式等。

有次在阮一峰老師的博客上看關(guān)于帖子熱度排行的算法時(shí),其中一種方法使用的是牛頓冷卻定律,遺忘與冷卻有著相似的過程、簡(jiǎn)潔優(yōu)美的函數(shù)形式、而且參數(shù)只與時(shí)間相關(guān),這些都讓我本能想到,它就是我想要的“遺忘公式”。

在實(shí)踐檢驗(yàn)中,牛頓冷卻公式,確實(shí)有效好用,當(dāng)然,不排除有其他更佳公式。

四、已經(jīng)實(shí)現(xiàn)的功能
如果把自然語(yǔ)言處理比作從礦砂中淘金子,那么業(yè)界主流算法的方向是從礦砂中將金砂挑出來(lái),而遺忘算法的方向則是將砂石篩出去,雖然殊途但同歸,所處理的任務(wù)也都是主流中所常見。

本系列文章將逐一講解遺忘算法如何以O(shè)(N)級(jí)算法性能實(shí)現(xiàn):

1、大規(guī)模語(yǔ)料詞庫(kù)生成
    1.1、跨語(yǔ)種,算法語(yǔ)種無(wú)關(guān),比如:中日韓、少數(shù)民族等語(yǔ)種均可支持
    1.2、未登錄詞發(fā)現(xiàn)(只要符合按相對(duì)穩(wěn)定周期性重現(xiàn)的詞匯都會(huì)被收錄)
    1.3、領(lǐng)域自適應(yīng),切換不同領(lǐng)域的訓(xùn)練文本時(shí),詞條、詞頻自行調(diào)整
    1.4、詞典成熟度:可以知道當(dāng)前語(yǔ)料訓(xùn)練出的詞典的成熟程度

2、分詞(基于上述詞庫(kù)技術(shù))
    2.1、成長(zhǎng)性分詞:用的越多,切的越準(zhǔn)
    2.2、詞典自維護(hù):切詞的同時(shí)動(dòng)態(tài)維護(hù)詞庫(kù)的詞條、詞頻、登錄新詞
    2.2、領(lǐng)域自適應(yīng)、跨語(yǔ)種(繼承自詞庫(kù)特性)

3、詞權(quán)值計(jì)算
    3.1、關(guān)鍵詞提取、自動(dòng)標(biāo)簽
    3.2、文章摘要
    3.3、長(zhǎng)、短文本相似度計(jì)算
    3.4、主題詞集

五、聯(lián)系方式:
1、QQ:老憨 244589712

2、郵箱:gzdmcaoyc@163.com





發(fā)表在 自然語(yǔ)言處理? ? ? ? | 標(biāo)簽為 牛頓冷卻公式, 自然語(yǔ)言處理, 遺忘算法? ? ? ? | 留下評(píng)論

達(dá)觀數(shù)據(jù)對(duì)于大規(guī)模消息數(shù)據(jù)處理的系統(tǒng)架構(gòu)發(fā)表于 2015年12月2號(hào)recommender
達(dá)觀數(shù)據(jù)是為企業(yè)提供大數(shù)據(jù)處理、個(gè)性化推薦系統(tǒng)服務(wù)的知名公司,在應(yīng)對(duì)海量數(shù)據(jù)處理時(shí),積累了大量實(shí)戰(zhàn)經(jīng)驗(yàn)。其中達(dá)觀數(shù)據(jù)在面對(duì)大量的數(shù)據(jù)交互和消息處理時(shí),使用了稱為DPIO的設(shè)計(jì)思路進(jìn)行快速、穩(wěn)定、可靠的消息數(shù)據(jù)傳遞機(jī)制,本文分享了達(dá)觀數(shù)據(jù)在應(yīng)對(duì)大規(guī)模消息數(shù)據(jù)處理時(shí)所開發(fā)的通訊中間件DPIO的設(shè)計(jì)思路和處理經(jīng)驗(yàn)(達(dá)觀數(shù)據(jù)架構(gòu)師 桂洪冠) 一、數(shù)據(jù)通訊進(jìn)程模型 在設(shè)計(jì)達(dá)觀數(shù)據(jù)的消息數(shù)據(jù)處理機(jī)制時(shí),首先充分借鑒了ZeroMQ和ProxyIO的設(shè)計(jì)思想。ZeroMQ提供了一種底層的網(wǎng)絡(luò)通訊框架,提供了基本的RoundRobin負(fù)載均衡算法,性能優(yōu)越,而ProxyIO是雅虎的網(wǎng)絡(luò)通訊中間件,承載了雅虎內(nèi)部大量計(jì)算節(jié)點(diǎn)間的實(shí)時(shí)消息處理。但是ZeroMQ沒有實(shí)現(xiàn)基于節(jié)點(diǎn)健康狀態(tài)的最快響應(yīng)算法,并且ZeroMQ和ProxyIO對(duì)節(jié)點(diǎn)的狀態(tài)管理,連接管理,負(fù)載均衡調(diào)度等也需要各應(yīng)用自己來(lái)實(shí)現(xiàn)。 達(dá)觀科技在借鑒兩種設(shè)計(jì)思路的基礎(chǔ)上,從進(jìn)程模型、服務(wù)架構(gòu)、線程模型、通訊協(xié)議、負(fù)載均衡、雪崩處理、連接管理、消息流程、狀態(tài)監(jiān)控等各方面進(jìn)行了開拓,開發(fā)了DPIO(達(dá)觀ProxyIO的簡(jiǎn)寫,下文統(tǒng)稱DPIO),確保系統(tǒng)高性能處理相關(guān)數(shù)據(jù)。 在DPIO的整個(gè)通訊框架體系中,采用集中管理、統(tǒng)一監(jiān)控策略管理節(jié)點(diǎn)提供服務(wù),節(jié)點(diǎn)間直接進(jìn)行交互,并不依賴統(tǒng)一的管理節(jié)點(diǎn)(桂洪冠)。幾種節(jié)點(diǎn)間通過http或者tcp協(xié)議進(jìn)行消息傳遞、配置更新、狀態(tài)跟蹤等通訊行為。集群將不同應(yīng)用的服務(wù)抽象成組的概念,相同應(yīng)用的服務(wù)啟動(dòng)時(shí)加入的相同的組。每個(gè)通訊組有兩種端點(diǎn)client和server。應(yīng)用啟動(dòng)時(shí)通過配置決定自己是client端點(diǎn)還是server端點(diǎn),在一個(gè)組內(nèi),每個(gè)應(yīng)用只能有一個(gè)身份;不同組沒要求。
  • 監(jiān)控節(jié)點(diǎn),顧名思義即提供系統(tǒng)監(jiān)控服務(wù)的,用來(lái)給系統(tǒng)管理員查看集群中節(jié)點(diǎn)的服務(wù)狀態(tài)及負(fù)載情況,系統(tǒng)對(duì)監(jiān)控節(jié)點(diǎn)并無(wú)實(shí)時(shí)性及穩(wěn)定性要求,在本模型中是單點(diǎn)系統(tǒng)。
  • 在上圖的架構(gòu)中把管理節(jié)點(diǎn)設(shè)計(jì)成雙master結(jié)構(gòu),參考zookeeper集群管理思路,多個(gè)master通過一定算法分別服務(wù)于集群中一部分節(jié)點(diǎn),相對(duì)于另外的服務(wù)節(jié)點(diǎn)則為備份管理節(jié)點(diǎn),他們通過內(nèi)部通訊同步數(shù)據(jù),每個(gè)管理節(jié)點(diǎn)都有一個(gè)web服務(wù)為監(jiān)控節(jié)點(diǎn)提供服務(wù)節(jié)點(diǎn)的狀態(tài)數(shù)據(jù)。
  • 服務(wù)節(jié)點(diǎn)即是下文要談的代理服務(wù),根據(jù)服務(wù)對(duì)象不同分為應(yīng)用端代理和服務(wù)端代理。集群中的服務(wù)節(jié)點(diǎn)根據(jù)提供服務(wù)的不同分為多個(gè)組,每個(gè)代理啟動(dòng)都需要注冊(cè)到相應(yīng)的組中,然后提供服務(wù)。
二、DPIO消息傳遞邏輯架構(gòu) DPIO服務(wù)節(jié)點(diǎn)內(nèi)/間的通訊及消息傳遞模型見下圖:
  • clientHost和serverHost間使用socketapi進(jìn)行tcp通訊,相同主機(jī)內(nèi)部的多個(gè)進(jìn)程間使用共享內(nèi)存?zhèn)鬟f消息內(nèi)容,client和clientproxy、server和serverproxy之間通過domain socket進(jìn)行事件通知;在socket連接的一方收到對(duì)端的事件通知后,從共享內(nèi)存中獲取消息內(nèi)容。
  • clientproxy/serverproxy啟動(dòng)時(shí)綁定到host的一個(gè)端口響應(yīng)應(yīng)用api的連接,在連接到來(lái)時(shí)將該api對(duì)應(yīng)的共享內(nèi)存初始化,將偏移地址告訴給應(yīng)用。clientproxy和serverproxy中分別維護(hù)了一個(gè)到應(yīng)用api的連接句柄隊(duì)列,并通過io復(fù)用技術(shù)監(jiān)聽這些連接上的讀寫事件。
  • serverproxy在啟動(dòng)時(shí)通過socket綁定到服務(wù)器的一個(gè)端口,并以server身份注冊(cè)到一個(gè)group監(jiān)聽該端口的連接事件,當(dāng)事件到達(dá)時(shí)回調(diào)注冊(cè)的事件處理函數(shù)響應(yīng)事件。
  • 在serverproxy內(nèi)部通過不同的thread分別管理從本地應(yīng)用建立的連接和從clientproxy建立的連接。thread的個(gè)數(shù)在啟動(dòng)proxy時(shí)由用戶指定,默認(rèn)是分別1個(gè)。每個(gè)clientproxy啟動(dòng)時(shí)會(huì)以client身份注冊(cè)到一個(gè)group,并建立到同組的所有serverproxy的連接,clientproxy內(nèi)部包含了連接的自管理能力及failover的處理(將在下面連接管理部分描述)。 DPIO實(shí)現(xiàn)了負(fù)載均衡,路由選擇和透明代理的功能。
三、線程模型 DPIO的線程模型: App epoll thread檢測(cè)從api來(lái)的請(qǐng)求信息,并將請(qǐng)求信息轉(zhuǎn)發(fā)到待處理隊(duì)列中。從已處理隊(duì)列中獲取應(yīng)答包,并將處理結(jié)果轉(zhuǎn)發(fā)給api Io epoll thread檢測(cè)從遠(yuǎn)端的proxy來(lái)的可寫事件,并將請(qǐng)求包轉(zhuǎn)發(fā)到遠(yuǎn)端的proxy。檢測(cè)從遠(yuǎn)端的proxy的可讀事件,并將應(yīng)答包放在已處理隊(duì)列中 Monitor thread檢測(cè)DPIO的工作狀態(tài)請(qǐng)求,將DPIO的工作狀態(tài)返回。并將決定Io epoll thread和app epoll thread的負(fù)載均衡(桂洪冠)。 四、通信協(xié)議
  • Api與DPIO通信協(xié)議
  • 共享內(nèi)存存儲(chǔ)消息格式
字段 含義 長(zhǎng)度
protocol len 協(xié)議包的總長(zhǎng)度 4bytes
protocol head len 協(xié)議頭的長(zhǎng)度 1byte
Version_protocol_id 協(xié)議的版本號(hào)和協(xié)議號(hào) 1byte
Flag 消息標(biāo)志,標(biāo)志路由模式,是否記錄來(lái)源地址,有二級(jí)路由,所以這個(gè)字段一定要Eg,末位表示要記錄src,倒數(shù)第二位表示按roundrobin路由,倒數(shù)第3位表示按消息頭路由,xxx 1byte
Proxy 來(lái)源/目的 proxy 2bytes
Api 來(lái)源/目的 api 2bytes
ApiTtl 協(xié)議包的發(fā)送時(shí)間 2Bytes
ClientTtl 消息存活的時(shí)間,后面添加,增加路由策略,選擇app_server 2Bytes
ClientProcessTime 客戶端處理所用時(shí)間 2Bytes
ServerTtl 消息存活的時(shí)間,后面添加,增加路由策略,選擇app_client 2Bytes
timeout 協(xié)議包的超時(shí)時(shí)間 2 byte
Sid 消息序列號(hào) 4bytes
protocol body len Body長(zhǎng)度 4bytes
protocol body 消息體 Size
  • 請(qǐng)求協(xié)議包
字段 含義 長(zhǎng)度
protocol head len 協(xié)議頭的長(zhǎng)度 1byte
Version_protocol_id 協(xié)議的版本號(hào)和協(xié)議號(hào) 1byte
Flag 消息標(biāo)志,標(biāo)志路由模式,是否記錄來(lái)源地址,有二級(jí)路由,所以這個(gè)字段一定要Eg,末位表示要記錄src,倒數(shù)第二位表示按roundrobin路由,倒數(shù)第3位表示按消息頭路由,xxx 1byte
ApiTtl 協(xié)議包的發(fā)送時(shí)間 2bytes
Timeout 協(xié)議包的超時(shí)時(shí)間 2bytes
Api 來(lái)源/目的 api 2bytes
Sid 消息序列號(hào) 4byte
Begin_offset 協(xié)議包的起始偏移 4bytes
len 協(xié)議包長(zhǎng)度 4bytes
  • 響應(yīng)協(xié)議包
字段 含義 長(zhǎng)度
protocol head len 協(xié)議頭的長(zhǎng)度 1byte
Version_protocol_id 協(xié)議的版本號(hào)和協(xié)議號(hào) 1byte
Flag 消息標(biāo)志,標(biāo)志路由模式,是否記錄來(lái)源地址,有二級(jí)路由,所以這個(gè)字段一定要Eg,末位表示要記錄src,倒數(shù)第二位表示按roundrobin路由,倒數(shù)第3位表示按消息頭路由,xxx 1byte
Result 處理結(jié)果 1byte
sid 消息序列號(hào) 4bytes
begin_offset 協(xié)議包的起始偏移 4bytes
len 協(xié)議包長(zhǎng)度 4bytes

  • Proxy與監(jiān)控中心的監(jiān)控信息
  • 請(qǐng)求協(xié)議包
字段 含義 長(zhǎng)度
protocol len 協(xié)議包的總長(zhǎng)度 4bytes
protocol head len 協(xié)議頭的長(zhǎng)度 4bytes
Version 協(xié)議的版本號(hào) 4bytes
protocol id 協(xié)議的協(xié)議號(hào) 4bytess
status_version 當(dāng)前狀態(tài)版本 4bytes
Proxy_identify_len 該proxy標(biāo)識(shí)長(zhǎng)度 4bytess
Proxy_identify 該proxy 標(biāo)識(shí) 4bytes
protocol body 消息體 Size
  • 應(yīng)答包
字段 含義 長(zhǎng)度
protocol len 協(xié)議包的總長(zhǎng)度 4bytes
protocol head len 協(xié)議頭的長(zhǎng)度 4bytes
Version 協(xié)議的版本號(hào) 4bytes
protocol id 協(xié)議的協(xié)議號(hào) 4bytess
protocol body len Body長(zhǎng)度 4bytes
protocol body 消息體 Size
五、負(fù)載均衡 DPIO的負(fù)載均衡基于最快響應(yīng)法 DPIO將所有的統(tǒng)計(jì)信息更新到監(jiān)控中心,監(jiān)控中心通過處理所有的節(jié)點(diǎn)的狀態(tài)信息,統(tǒng)一負(fù)責(zé)負(fù)載均衡。 DPIO從監(jiān)控中心獲取所有連接的負(fù)載均衡策略。每個(gè)連接知道只需知道自己的處理能力。 以上圖為例,有三個(gè)proxy server處理程序。處理能力分別為50、30、20,一次epoll過程能夠同時(shí)探測(cè)多個(gè)連接的可寫事件。 假設(shè):三個(gè)proxy server的屬于同一epoll thread,且三個(gè)proxy server假設(shè)都處理能力無(wú)限大。 限制:如果剛開始時(shí)待處理隊(duì)列的數(shù)據(jù)包個(gè)數(shù)為100個(gè),多次發(fā)送輪回后proxy server A≥proxy server B≥proxy server C, 每個(gè)發(fā)送的最多發(fā)送協(xié)議包數(shù)為待處理隊(duì)列協(xié)議包個(gè)數(shù) * 該連接所占權(quán)重 六、雪崩處理 大型在線服務(wù),特別是對(duì)于時(shí)延敏感的服務(wù),當(dāng)系統(tǒng)外部請(qǐng)求超過系統(tǒng)服務(wù)能力,而沒有適當(dāng)?shù)倪^載保護(hù)措施時(shí),當(dāng)系統(tǒng)累計(jì)的超時(shí)請(qǐng)求達(dá)到一定規(guī)模,將可能導(dǎo)致系統(tǒng)緩沖區(qū)隊(duì)列溢出,后端服務(wù)資源耗盡,最終像雪崩一樣形成惡性循環(huán)。這時(shí)系統(tǒng)處理的每個(gè)請(qǐng)求都因?yàn)槌瑫r(shí)而無(wú)效,系統(tǒng)對(duì)外呈現(xiàn)的服務(wù)能力為0,且這種情況下不能自動(dòng)恢復(fù)。 我們的解決策略是對(duì)協(xié)議包進(jìn)行生命周期管理,現(xiàn)在協(xié)議包進(jìn)出待處理隊(duì)列和已處理隊(duì)列時(shí)進(jìn)行超時(shí)檢測(cè)和超時(shí)處理(超時(shí)則丟棄)。 proxy client: 當(dāng)app epoll thread將協(xié)議包放入待處理隊(duì)列時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已經(jīng)超時(shí)。 當(dāng)app epoll thread將協(xié)議包從已處理隊(duì)列中移除時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,已經(jīng)當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已經(jīng)超時(shí)。 當(dāng)Io epoll thread將協(xié)議包從待處理隊(duì)列中移除時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,當(dāng)前時(shí)間戳,該連接的協(xié)議包的平均處理時(shí)間移除。 當(dāng)io epoll thread將協(xié)議包放入已處理隊(duì)列時(shí),會(huì)將將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,已經(jīng)當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已經(jīng)超時(shí)。 proxy server: 當(dāng)App epoll thread將協(xié)議包從待處理隊(duì)列中移除時(shí),會(huì)將該協(xié)議包在客戶端的處理時(shí)間、該協(xié)議包的超時(shí)時(shí)間、該協(xié)議包的proxy server接收時(shí)間戳、當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已超時(shí)。 當(dāng)app epoll thread將協(xié)議包放入已處理隊(duì)列時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,已經(jīng)當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已經(jīng)超時(shí)。 當(dāng)io epoll thread將協(xié)議包從已處理隊(duì)列中移除時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,已經(jīng)當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已經(jīng)超時(shí)。 當(dāng)io epoll thread將協(xié)議包放入待處理隊(duì)列時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間來(lái)判斷該協(xié)議包是否已超時(shí)。 七、連接管理 紅黑樹: 紅黑樹:保存所有連接的最近的讀/寫時(shí)間戳。 當(dāng)epoll_wait時(shí),首先從紅黑樹中獲取oldest的時(shí)間戳,并將當(dāng)前時(shí)間戳與oldest時(shí)間戳的時(shí)間差作為epoll_wait的超時(shí)時(shí)間,當(dāng)連接中有可讀/寫事件發(fā)送時(shí),首先從紅黑樹中刪除該節(jié)點(diǎn),當(dāng)可讀/寫事件處理完畢后,再將節(jié)點(diǎn)插入到紅黑樹中,當(dāng)處理完所有連接的可讀/寫事件時(shí),再?gòu)募t黑樹中依次從移除時(shí)間戳小于當(dāng)前時(shí)間戳的連接,并觸發(fā)該連接的timeout事件。 八、消息處理流程
  • apiclient通過調(diào)用api的接口,將消息傳給
  • api接受消息體,從共享內(nèi)存中申請(qǐng)內(nèi)存,填寫消息頭size(協(xié)議總長(zhǎng)度)、Offset (協(xié)議版本號(hào)和協(xié)議號(hào))、Headsize (協(xié)議頭的總長(zhǎng)度)、flag(路由策略),ApiTtl (協(xié)議包的發(fā)送時(shí)間)、timeout (協(xié)議包的超時(shí)時(shí)間)、sid(序列號(hào)),size(消息體長(zhǎng)度)字段,封裝成協(xié)議包,將協(xié)議包寫入共享內(nèi)存。
  • api通過socket發(fā)送請(qǐng)求給proxy。
  • app epoll thread通過檢測(cè)api的可讀事件,接受請(qǐng)求。通過解析請(qǐng)求內(nèi)容,獲取請(qǐng)求協(xié)議包所在的共享內(nèi)存的偏移、請(qǐng)求協(xié)議包的長(zhǎng)度和api連接index加入到處理隊(duì)列。
  • proxy client的io epoll thread通過檢測(cè)對(duì)端DPIO連接的可寫事件,從發(fā)送隊(duì)列中獲取請(qǐng)求包,將api的index加入到協(xié)議包的api index字段。
  • proxy client的io epoll thread從共享內(nèi)存中讀取協(xié)議包,釋放由請(qǐng)求包中所標(biāo)識(shí)的內(nèi)存空間。
  • proxy server的io epoll thread通過檢測(cè)對(duì)端DPIO的可讀事件,接受請(qǐng)求。
  • proxy server的io epoll thread從共享內(nèi)存中申請(qǐng)空間,將proxy的index加入到協(xié)議包的proxy index字段。將請(qǐng)求內(nèi)存寫入到申請(qǐng)的空間中。
  • proxy server的io epoll thread 將協(xié)議包在共享內(nèi)存的偏移和協(xié)議包的長(zhǎng)度加入的待處理隊(duì)列中。
  • app epoll thread從待處理隊(duì)列中獲取請(qǐng)求包,將協(xié)議包轉(zhuǎn)發(fā)給相應(yīng)的api進(jìn)行處理。
  • api通過檢測(cè)DPIO的可讀事件,解析請(qǐng)求內(nèi)容。
  • api通過解析請(qǐng)求內(nèi)容,獲取請(qǐng)求協(xié)議包在共享內(nèi)存中的偏移和請(qǐng)求協(xié)議包的長(zhǎng)度。從共享內(nèi)存中讀取請(qǐng)求內(nèi)容,并釋放相應(yīng)空間。
  • api將請(qǐng)求協(xié)議包返回給應(yīng)用層進(jìn)行處理。
  • 應(yīng)用層將應(yīng)答包傳給api。
  • Api從共享內(nèi)存中申請(qǐng)空間,將應(yīng)答包寫入到共享內(nèi)存中。
  • Api將應(yīng)答包在共享內(nèi)存中的偏移和應(yīng)答包的大小寫入到共享內(nèi)存中。
  • App epoll thread通過檢測(cè)可讀事件,將應(yīng)答包寫入到已處理隊(duì)列中。
  • proxy server的Io epoll thread通過檢測(cè)對(duì)端的DPIO的可寫事件,將已處理隊(duì)列中獲取應(yīng)答包。
  • proxy server的Io epoll thread從共享內(nèi)存中讀取應(yīng)答包。
  • Proxy client的Io epoll thread檢測(cè)可讀事件,讀取應(yīng)答包。
  • Proxy client的Io epoll thread通過解析應(yīng)答包,從共享內(nèi)存中申請(qǐng)空間,將應(yīng)答包寫入到申請(qǐng)的內(nèi)存中。
  • Proxy client的Io epoll thread將應(yīng)答包移入到已處理隊(duì)列。
  • App epoll thread通過檢測(cè)api的可寫事件,將已處理隊(duì)列中獲取應(yīng)答包。
  • App epoll thread發(fā)送應(yīng)答包。
  • Api通過檢測(cè)可讀事件,獲取應(yīng)答包,通過解析應(yīng)到包,獲取應(yīng)答包在共享內(nèi)存中的偏移和應(yīng)到的大小,從共享內(nèi)存中讀取應(yīng)到包。
  • Api將應(yīng)答包返回給應(yīng)用端。(桂洪冠 陳運(yùn)文)。
九、狀態(tài)監(jiān)控 連接池中存在:當(dāng)前可用連接個(gè)數(shù) 連接池中再分別獲取每個(gè)連接的狀態(tài) 每個(gè)可用連接分別維護(hù)以下信息: 連接處理的數(shù)據(jù)包個(gè)數(shù)、連接send失敗次數(shù)、連接協(xié)議包的平均處理時(shí)間。 連接的連接狀態(tài)(當(dāng)重連失敗達(dá)到一定次數(shù)時(shí),定義為連接失敗)。 連接的重連次數(shù)、連接的超時(shí)次數(shù)。 當(dāng)監(jiān)控線程accept到client的連接時(shí),解析請(qǐng)求內(nèi)容,然后調(diào)用連接池對(duì)象的statistics方法,連接池對(duì)象首先寫入自己的統(tǒng)計(jì)信息,然后分別調(diào)用每個(gè)連接的statistics方法,每個(gè)連接分別填寫自己的統(tǒng)計(jì)信息 本文小結(jié) 大規(guī)模消息傳遞會(huì)遇到很多可靠性、穩(wěn)定性的問題,DPIO是達(dá)觀在處理大數(shù)據(jù)通訊時(shí)的一些經(jīng)驗(yàn),和感興趣的朋友們分享,期待與大家不斷交流與合作
發(fā)表在 數(shù)據(jù)挖掘? ? ? ? | 標(biāo)簽為 數(shù)據(jù)處理, 數(shù)據(jù)通訊? ? ? ? | 留下評(píng)論

在微信公眾號(hào)里使用LaTeX數(shù)學(xué)公式發(fā)表于 2015年11月17號(hào)52nlp
因?yàn)橛型瑢W(xué)在微信后臺(tái)咨詢這個(gè)問題,所以這里簡(jiǎn)單記錄一下,其實(shí)自己之前也摸索了一些方法,不是太完美,目前所使用的這個(gè)方法算是折中后比較好的。 這段時(shí)間在鼓搗“NLPJob”這個(gè)公眾號(hào),特別是微信公眾號(hào)支持“原創(chuàng)聲明”后,就很樂意將52nlp上積攢的一些文章搬上去,但是逐漸會(huì)遇到一些數(shù)學(xué)公式的問題。目前在52nlp上用的是mathjax完美支持LaTeX數(shù)學(xué)公式展現(xiàn),但是微信公眾號(hào)的編輯器沒有這個(gè)支持,另外mathjax支持的公式形式不是圖片形式,所以不能直接將文章拷貝上去,但是如果是數(shù)學(xué)公式圖片,微信編輯器可以直接拷貝,所以最直接的想法就是將mathjax支持的LaTeX公式轉(zhuǎn)換為公式圖片保存在文章中,然后再全文拷貝到微信公眾號(hào)編輯器中。 其實(shí)在mathjax之前,網(wǎng)頁(yè)上的很多數(shù)學(xué)公式都是用這種折中的方式,包括很多wordpress數(shù)學(xué)公式插件,當(dāng)年我也因?yàn)?2nlp上的公式問題還自己動(dòng)手寫了一個(gè)小的wordpress插件,但是當(dāng)mathjax出現(xiàn)之后,之前的方案就顯得很一般了。所以就開始嘗試找一下支持img緩存的LaTeX公式插件,不過多數(shù)都不滿意或者有瑕疵,甚至自己又開始動(dòng)手修改代碼,然后blablabla….,最終發(fā)現(xiàn) quicklatex這個(gè)神器和它的wordpress插件QuickLaTeX,幾乎完美支持和兼容Mathjax所支持的LaTeX數(shù)學(xué)公式。方法很簡(jiǎn)單,只要在wordpress中安裝quicklatex,然后在文章的開頭添加一個(gè):[latexpage] ,然后文章中所有的latext公式都會(huì)轉(zhuǎn)換為圖片形式,類似昨天發(fā)出的rickjin的這篇文章:LDA數(shù)學(xué)八卦:神奇的Gamma函數(shù)(1)。當(dāng)然需要先在wordpress中完成編輯轉(zhuǎn)換,再全文拷貝到微信公眾號(hào)中,微信會(huì)自動(dòng)的將這些圖片上傳到它自己的圖片服務(wù)器上。不過依然希望微信公眾號(hào)編輯器能早日支持LaTeX公式編輯甚至Mathjax。
發(fā)表在 隨筆? ? ? ? | 標(biāo)簽為 latex公式, latex數(shù)學(xué)公式, MathJax, 微信, 微信latex, 微信公眾號(hào), 微信公眾號(hào)數(shù)學(xué)公式編輯器, 微信公式編輯器, 微信數(shù)學(xué)公式? ? ? ? | 2 條評(píng)論

斯坦福大學(xué)深度學(xué)習(xí)與自然語(yǔ)言處理第四講:詞窗口分類和神經(jīng)網(wǎng)絡(luò)發(fā)表于 2015年09月14號(hào)52nlp
斯坦福大學(xué)在三月份開設(shè)了一門“深度學(xué)習(xí)與自然語(yǔ)言處理”的課程:CS224d: Deep Learning for Natural Language Processing,授課老師是青年才俊 Richard Socher,以下為相關(guān)的課程筆記。 第四講:詞窗口分類和神經(jīng)網(wǎng)絡(luò)(Word Window Classification and Neural Networks) 推薦閱讀材料:
  • [UFLDL tutorial]
  • [Learning Representations by Backpropogating Errors]
  • 第四講Slides [slides]
  • 第四講視頻 [video]
以下是第四講的相關(guān)筆記,主要參考自課程的slides,視頻和其他相關(guān)資料。
繼續(xù)閱讀 →
發(fā)表在 機(jī)器學(xué)習(xí), 深度學(xué)習(xí), 自然語(yǔ)言處理? ? ? ? | 標(biāo)簽為 Deep Learning, Deep Learning公開課, Deep NLP, DL, NER, Richard Socher, softmax, word vectors, word2vec, wordnet, 二元邏輯回歸, 人名識(shí)別, 公開課, 分類, 分類器, 前饋網(wǎng)絡(luò)記錄, 反向傳播算法, 命名實(shí)體識(shí)別, 回歸, 地名識(shí)別, 斯坦福大學(xué), 機(jī)器學(xué)習(xí), 梯度下降, 深度學(xué)習(xí), 深度學(xué)習(xí)與自然語(yǔ)言處理, 深度學(xué)習(xí)技術(shù), 深度學(xué)習(xí)模型, 神經(jīng)元, 神經(jīng)網(wǎng)絡(luò), 窗口向量, 窗口向量分類, 自然語(yǔ)義處理, 自然語(yǔ)言處理, 詞向量, 詞嵌入, 語(yǔ)義詞典, 邏輯回歸, 隨機(jī)梯度下降? ? ? ? | 3 條評(píng)論

出門問問宣布完成由Google投資的C輪融資,累計(jì)融資7500萬(wàn)美金發(fā)表于 2015年09月2號(hào)52nlp
注:出門問問是我們的老朋友,創(chuàng)始人李志飛也是NLP和機(jī)器翻譯領(lǐng)域的大牛,今天出門問問拿到了Google的C輪融資,志飛兄第一時(shí)間和我分享了這條新聞,太牛了。 人工智能創(chuàng)業(yè)公司出門問問(Mobvoi),于近日完成了由Google投資的C輪融資,累計(jì)融資7500萬(wàn)美金。現(xiàn)有投資方包括紅杉資本、真格基金,SIG海納亞洲、圓美光電、及歌爾聲學(xué)。此輪投資Google并不控股,出門問問團(tuán)隊(duì)依舊有絕對(duì)控制權(quán)。 此次由Google投資的C輪融資,能夠保證出門問問在人工智能領(lǐng)域長(zhǎng)期持續(xù)深耕,專注核心技術(shù)上的進(jìn)一步研發(fā),在可穿戴、車載以及機(jī)器人領(lǐng)域拓展新的人機(jī)交互產(chǎn)品形態(tài),更深入地完善用戶體驗(yàn),在吸引全球頂尖技術(shù)與商務(wù)人才上更具優(yōu)勢(shì)。對(duì)于海外市場(chǎng)的擴(kuò)展,此次融資也將發(fā)揮非常重要的作用。 Google 企業(yè)發(fā)展部副總裁Don Harrison 說到選擇投資出門問問的原因:“出門問問研發(fā)了非常獨(dú)特自成體系的語(yǔ)音識(shí)別與自然語(yǔ)言處理技術(shù)。我們被他們的創(chuàng)新科技與發(fā)展?jié)摿Υ騽?dòng),所以我們很迅速地決定用投資的方式幫助他們?cè)谖磥?lái)快速成長(zhǎng)。” 紅杉資本全球執(zhí)行合伙人沈南鵬評(píng)價(jià):“出門問問一直處于高速的不斷創(chuàng)新過程中,從移動(dòng)app到硬件產(chǎn)品到語(yǔ)音搜索平臺(tái),不同形式的產(chǎn)品背后是團(tuán)隊(duì)長(zhǎng)期以來(lái)形成的強(qiáng)大技術(shù)核心,獲得Google的投資是對(duì)這種中國(guó)原創(chuàng)能力的最好肯定。我很高興Google這樣的巨頭看好出門問問,并和我們一起投入到這支高速創(chuàng)新的團(tuán)隊(duì)中。” 真格基金創(chuàng)始人徐小平說:“我第一次遇見谷歌科學(xué)家李志飛博士,是三年前。那時(shí)候,他的語(yǔ)音搜索創(chuàng)業(yè)計(jì)劃,真是一個(gè)“異想天開”的夢(mèng)。志飛相信自己的夢(mèng),相信自己的技術(shù),相信市場(chǎng)對(duì)這個(gè)技術(shù)產(chǎn)品的需求,歷經(jīng)萬(wàn)難,終于“搜索”到了屬于他自己的那片天空。志飛的創(chuàng)業(yè)歷程,是又一個(gè)中國(guó)好故事,會(huì)激勵(lì)更多人追求并實(shí)現(xiàn)自己的好夢(mèng)。” 志同道合是此次融資達(dá)成的最重要的原因。扎實(shí)做技術(shù)和產(chǎn)品,運(yùn)用科技的力量改變?nèi)藗兊娜粘I?#xff0c;是出門問問一直篤信的價(jià)值觀。 出門問問CEO 李志飛表示:“引入Google的投資,不僅意味Google對(duì)于我們技術(shù)的認(rèn)可,更是源于雙方持有共同的價(jià)值觀,通過對(duì)人工智能技術(shù)的極致追求,打造毫不妥協(xié)的用戶體驗(yàn)。” 與Google相似,出門問問也是信仰“工程師文化”的團(tuán)隊(duì),強(qiáng)大的研發(fā)團(tuán)隊(duì)由Google前科學(xué)家、人工智能專家領(lǐng)銜,團(tuán)隊(duì)成員來(lái)自哈佛、MIT、斯坦福、劍橋、清華等名校名企。 此次融資是中國(guó)人工智能創(chuàng)業(yè)公司首次獲得像Google這樣的國(guó)際技術(shù)巨頭的投資與認(rèn)可。這在某種程度上說明,在人工智能領(lǐng)域,中國(guó)的創(chuàng)業(yè)公司不容小覷。
繼續(xù)閱讀 → 應(yīng)用場(chǎng)景 智能問答機(jī)器人火得不行,開始研究深度學(xué)習(xí)在NLP領(lǐng)域的應(yīng)用已經(jīng)有一段時(shí)間,最近在用深度學(xué)習(xí)模型直接進(jìn)行QA系統(tǒng)的問答匹配。主流的還是CNN和LSTM,在網(wǎng)上沒有找到特別合適的可用的代碼,自己先寫了一個(gè)CNN的(theano),效果還行,跟論文中的結(jié)論是吻合的。目前已經(jīng)應(yīng)用到了我們的產(chǎn)品上。 原理 參看《Applying Deep Learning To Answer Selection: A Study And An Open Task》,文中比較了好幾種網(wǎng)絡(luò)結(jié)構(gòu),選擇了效果相對(duì)較好的其中一個(gè)來(lái)實(shí)現(xiàn),網(wǎng)絡(luò)描述如下: Q&A共用一個(gè)網(wǎng)絡(luò),網(wǎng)絡(luò)中包括HL,CNN,P+T和Cosine_Similarity,HL是一個(gè)g(W*X+b)的非線性變換,CNN就不說了,P是max_pooling,T是激活函數(shù)Tanh,最后的Cosine_Similarity表示將Q&A輸出的語(yǔ)義表示向量進(jìn)行相似度計(jì)算。 詳細(xì)描述下從輸入到輸出的矩陣變換過程:
  • Qp:[batch_size, sequence_len],Qp是Q之前的一個(gè)表示(在上圖中沒有畫出)。所有句子需要截?cái)嗷騪adding到一個(gè)固定長(zhǎng)度(因?yàn)楹竺娴腃NN一般是處理固定長(zhǎng)度的矩陣),例如句子包含3個(gè)字ABC,我們選擇固定長(zhǎng)度sequence_len為100,則需要將這個(gè)句子padding成ABC<a><a>…<a>(100個(gè)字),其中的<a>就是添加的專門用于padding的無(wú)意義的符號(hào)。訓(xùn)練時(shí)都是做mini-batch的,所以這里是一個(gè)batch_size行的矩陣,每行是一個(gè)句子。
  • Q:[batch_size, sequence_len, embedding_size]。句子中的每個(gè)字都需要轉(zhuǎn)換成對(duì)應(yīng)的字向量,字向量的維度大小是embedding_size,這樣Qp就從一個(gè)2維的矩陣變成了3維的Q
  • HL層輸出:[batch_size, embedding_size, hl_size]。HL層:[embedding_size, hl_size],Q中的每個(gè)句子會(huì)通過和HL層的點(diǎn)積進(jìn)行變換,相當(dāng)于將每個(gè)字的字向量從embedding_size大小變換到hl_size大小。
  • CNN+P+T輸出:[batch_size, num_filters_total]。CNN的filter大小是[filter_size, hl_size],列大小是hl_size,這個(gè)和字向量的大小是一樣的,所以對(duì)每個(gè)句子而言,每個(gè)filter出來(lái)的結(jié)果是一個(gè)列向量(而不是矩陣),列向量再取max-pooling就變成了一個(gè)數(shù)字,每個(gè)filter輸出一個(gè)數(shù)字,num_filters_total個(gè)filter出來(lái)的結(jié)果當(dāng)然就是[num_filters_total]大小的向量,這樣就得到了一個(gè)句子的語(yǔ)義表示向量。T就是在輸出結(jié)果上加上Tanh激活函數(shù)。
  • Cosine_Similarity:[batch_size]。最后的一層并不是通常的分類或者回歸的方法,而是采用了計(jì)算兩個(gè)向量(Q&A)夾角的方法,下面是網(wǎng)絡(luò)損失函數(shù)。,m是需要設(shè)定的參數(shù)margin,VQ、VA+、VA-分別是問題、正向答案、負(fù)向答案對(duì)應(yīng)的語(yǔ)義表示向量。損失函數(shù)的意義就是:讓正向答案和問題之間的向量cosine值要大于負(fù)向答案和問題的向量cosine值,大多少,就是margin這個(gè)參數(shù)來(lái)定義的。cosine值越大,兩個(gè)向量越相近,所以通俗的說這個(gè)Loss就是要讓正向的答案和問題愈來(lái)愈相似,讓負(fù)向的答案和問題越來(lái)越不相似。
實(shí)現(xiàn) 代碼點(diǎn)擊這里,使用的數(shù)據(jù)是一份英文的insuranceQA,下面介紹代碼重點(diǎn)部分: 字向量。本文采用字向量的方法,沒有使用詞向量。使用字向量的目的主要是為了解決未登錄詞的問題,這樣在測(cè)試的時(shí)候就很少會(huì)遇到Unknown的字向量的問題了。而且字向量的效果也不一定比詞向量的效果差,還省去了分詞的各種麻煩。先用word2vec生成一份字向量,相當(dāng)于我們?cè)谧鰌re-training了(之后測(cè)試了隨機(jī)初始化字向量的方法,效果差不多) 原理中的步驟2。這里沒有做HL層的變換,實(shí)際測(cè)試中,增加HL層有非常非常小的提升,所以在這里就省去了改步驟。 CNN可以設(shè)置多種大小的filter,最后各種filter的結(jié)果會(huì)拼接起來(lái)。 原理中的步驟4。這里執(zhí)行卷積,max-pooling和Tanh激活。 生成的ouputs_1是一個(gè)python的list,使用concatenate將list的多個(gè)tensor拼接起來(lái)(list中的每個(gè)tensor表示一種大小的filter卷積的結(jié)果) 原理中的步驟5。計(jì)算問題、正向答案、負(fù)向答案的向量夾角 生成Loss損失函數(shù)和Accuracy。 核心的網(wǎng)絡(luò)構(gòu)建代碼就是這些,其他的代碼都是訓(xùn)練數(shù)據(jù)、驗(yàn)證數(shù)據(jù)的讀入,以及theano構(gòu)建訓(xùn)練時(shí)的一些常規(guī)代碼。 如果需要增加HL層,可參照如下的代碼。Whl即是HL層的網(wǎng)絡(luò),將input和Whl點(diǎn)積即可。 dropout的實(shí)現(xiàn)。 結(jié)果 使用上面的代碼,Test 1的Top-1 Accuracy可以達(dá)到61%-62%,和論文中的結(jié)論基本一致了,至于論文中提到的GESD、AESD等方法沒有再測(cè)試了,運(yùn)行較慢,其他數(shù)據(jù)集也沒有再測(cè)試了。 下面是國(guó)外友人用一個(gè)叫keras的工具(封裝的theano和tensorflow)弄的類似代碼,Test 1的Top-1準(zhǔn)確率在50%左右,比他這個(gè)要高 http://benjaminbolte.com/blog/2016/keras-language-modeling.html Test setTop-1 AccuracyMean Reciprocal Rank
Test 1 0.4933 0.6189
Test 2 0.4606 0.5968
Dev 0.4700 0.6088 另外,原始的insuranceQA需要進(jìn)行一些處理才能在這個(gè)代碼上使用,具體參看github上的說明吧。 一些技巧
  • 字向量和詞向量的效果相當(dāng)。所以優(yōu)先使用字向量,省去了分詞的麻煩,還能更好的避免未登錄詞的問題,何樂而不為。
  • 字向量不是固定的,在訓(xùn)練中會(huì)更新
  • Dropout的使用對(duì)最高的準(zhǔn)確率沒有很大的影響,但是使用了Dropout的結(jié)果更穩(wěn)定,準(zhǔn)確率的波動(dòng)會(huì)更小,所以建議還是要使用Dropout的。不過Dropout也不易過度使用,比如Dropout的keep_prob概率如果設(shè)置到0.25,則模型收斂得更慢,訓(xùn)練時(shí)間長(zhǎng)很多,效果也有可能會(huì)更差,設(shè)置會(huì)差很多。我這版代碼使用的keep_prob為0.5,同時(shí)保證準(zhǔn)確率和訓(xùn)練時(shí)間。另外,Dropout只應(yīng)用到了max-pooling的結(jié)果上,其他地方?jīng)]有再使用了,過多的使用反而不好。
  • 如何生成訓(xùn)練集。每個(gè)訓(xùn)練case需要一個(gè)問題+一個(gè)正向答案+一個(gè)負(fù)向答案,很明顯問題和正向答案都是有的,負(fù)向答案的生成方法就是隨機(jī)采樣,這樣就不需要涉及任何人工標(biāo)注工作了,可以很方便的應(yīng)用到大數(shù)據(jù)集上。
  • HL層的效果不明顯,有很微量的提升。如果HL層的大小是200,字向量是100,則HL層相當(dāng)于將字向量再放大一倍,這個(gè)感覺沒有多少信息可利用的,還不如直接將字向量設(shè)置成200,還省去了HL這一層的變換。
  • margin的值一般都設(shè)置得比較小。這里用的是0.05
  • 如果將Cosine_similarity這一層換成分類或者回歸,印象中效果是不如Cosine_similarity的(具體數(shù)據(jù)忘了)
  • num_filters越大并不是效果越好,基本到了一定程度就很難提升了,反而會(huì)降低訓(xùn)練速度。
  • 同時(shí)也寫了tensorflow版本代碼,對(duì)比theano的,效果差不多
  • Adam和SGD兩種訓(xùn)練方法比較,Adam訓(xùn)練速度貌似會(huì)更快一些,效果基本也持平吧,沒有太細(xì)節(jié)的對(duì)比。不過同樣的網(wǎng)絡(luò)+SGD,theano好像訓(xùn)練要更快一些。
  • Loss和Accuracy是比較重要的監(jiān)控參數(shù)。如果寫一個(gè)新的網(wǎng)絡(luò)的話,類似的指標(biāo)是很有必要的,可以在每個(gè)迭代中評(píng)估網(wǎng)絡(luò)是否正在收斂。因?yàn)檎{(diào)試比較麻煩,所以通過這些參數(shù)能評(píng)估你的網(wǎng)絡(luò)寫對(duì)沒,參數(shù)設(shè)置是否正確。
  • 網(wǎng)絡(luò)的參數(shù)還是比較重要的,如果一些參數(shù)設(shè)置不合理,很有可能結(jié)果千差萬(wàn)別,記得最初用tensorflow實(shí)現(xiàn)的時(shí)候,應(yīng)該是dropout設(shè)置得太小,導(dǎo)致效果很差,很久才找到原因。所以調(diào)參和微調(diào)網(wǎng)絡(luò)還是需要一定的技巧和經(jīng)驗(yàn)的,做這版代碼的時(shí)候就經(jīng)歷了一段比較痛苦的調(diào)參過程,最開始還懷疑是網(wǎng)絡(luò)設(shè)計(jì)或是代碼有問題,最后總結(jié)應(yīng)該就是參數(shù)沒設(shè)置好。
結(jié)語(yǔ) 如果關(guān)注這個(gè)東西的人多的話,后面還可以有tensorflow版本的QA CNN,以及LSTM的代碼奉上 Contact: jiangwen127@gmail.com weibo:碼壇奧沙利文
發(fā)表在 機(jī)器學(xué)習(xí), 深度學(xué)習(xí), 自然語(yǔ)言處理, 問答系統(tǒng)? ? ? ? | 留下評(píng)論

達(dá)觀數(shù)據(jù)搜索引擎的Query自動(dòng)糾錯(cuò)技術(shù)和架構(gòu)詳解發(fā)表于 2016年04月27號(hào)recommender
1 背景
如今,搜索引擎是人們的獲取信息最重要的方式之一,在搜索頁(yè)面小小的輸入框中,只需輸入幾個(gè)關(guān)鍵字,就能找到你感興趣問題的相關(guān)網(wǎng)頁(yè)。搜索巨頭Google,甚至已經(jīng)使Google這個(gè)創(chuàng)造出來(lái)的單詞成為動(dòng)詞,有問題Google一下就可以。在國(guó)內(nèi),百度也同樣成為一個(gè)動(dòng)詞。除了通用搜索需求外,很多垂直細(xì)分領(lǐng)域的搜索需求也很旺盛,比如電商網(wǎng)站的產(chǎn)品搜索,文學(xué)網(wǎng)站的小說搜索等。面對(duì)這些需求,達(dá)觀數(shù)據(jù)(www.datagrand.com)作為國(guó)內(nèi)提供中文云搜索服務(wù)的高科技公司,為合作伙伴提供高質(zhì)量的搜索技術(shù)服務(wù),并進(jìn)行搜索服務(wù)的統(tǒng)計(jì)分析等功能。(達(dá)觀數(shù)據(jù)聯(lián)合創(chuàng)始人高翔) 搜索引擎系統(tǒng)最基本最核心的功能是信息檢索,找到含有關(guān)鍵字的網(wǎng)頁(yè)或文檔,然后按照一定排序?qū)⒔Y(jié)果給出。在此基礎(chǔ)之上,搜索引擎能夠提供更多更復(fù)雜的功能來(lái)提升用戶體驗(yàn)。對(duì)于一個(gè)成熟的搜索引擎系統(tǒng),用戶看似簡(jiǎn)單的搜索過程,需要在系統(tǒng)中經(jīng)過多個(gè)環(huán)節(jié),多個(gè)模塊協(xié)同工作,才能提供一個(gè)讓人滿意的搜索結(jié)果。其中拼寫糾錯(cuò)(Error Correction,以下簡(jiǎn)稱EC)是用戶比較容易感知的一個(gè)功能,比如百度的糾錯(cuò)功能如下圖所示: 圖 1:百度糾錯(cuò)功能示例 EC其實(shí)是屬于Query Rewrite(以下簡(jiǎn)稱QR)模塊中的一個(gè)功能,QR模塊包括拼寫糾錯(cuò),同義改寫,關(guān)聯(lián)query等多個(gè)功能。QR模塊對(duì)于提升用戶體驗(yàn)有著巨大的幫助,對(duì)于搜索質(zhì)量不佳的query進(jìn)行改寫后能返回更好的搜索結(jié)果。QR模塊內(nèi)容較多,以下著重介紹EC功能。
繼續(xù)閱讀 →
發(fā)表在 自然語(yǔ)言處理? ? ? ? | 一條評(píng)論

非主流自然語(yǔ)言處理——遺忘算法系列(四):改進(jìn)TF-IDF權(quán)重公式發(fā)表于 2016年04月23號(hào)老憨

一、前言
  前文介紹了利用詞庫(kù)進(jìn)行分詞,本文介紹詞庫(kù)的另一個(gè)應(yīng)用:詞權(quán)重計(jì)算。

二、詞權(quán)重公式
  1、公式的定義

    定義如下公式,用以計(jì)算詞的權(quán)重:
    
  2、公式的由來(lái)

    在前文中,使用如下公式作為分詞的依據(jù):
    

    任給一個(gè)句子或文章,通過對(duì)最佳分詞方案所對(duì)應(yīng)的公式進(jìn)行變換,可以得到:
    

    按前面權(quán)重公式的定義,上面的公式可以理解為:一個(gè)句子出現(xiàn)的概率對(duì)數(shù)等于句子中各詞的權(quán)重之和。

    公式兩邊同時(shí)取負(fù)號(hào)使權(quán)重是個(gè)正值。



三、與TF-IDF的關(guān)系
  詞頻、逆文檔頻率(TF-IDF)在自然語(yǔ)言處理中,應(yīng)用十分廣泛,也是提取關(guān)鍵詞的常用方法,公式如下:
  

  從形式上看,該公式與我們定義的權(quán)重公式很像,而且用途也近似,那么它們之間有沒有關(guān)系呢?

  答案是肯定的。

  我們知道,IDF是按文檔為單位統(tǒng)計(jì)的,無(wú)論文檔的長(zhǎng)短,統(tǒng)一都按一篇計(jì)數(shù),感覺這個(gè)統(tǒng)計(jì)的粒度還是比較粗的,有沒有辦法將文本的長(zhǎng)短,這個(gè)明顯相關(guān)的因素也考慮進(jìn)去呢,讓這個(gè)公式更加精細(xì)些?

  答案也是肯定的。

  文章是由詞鋪排而成,長(zhǎng)短不同,所包含的詞的個(gè)數(shù)也就有多有少。

  我們可以考慮在統(tǒng)計(jì)文檔個(gè)數(shù)時(shí),為每個(gè)文檔引入包含多少個(gè)詞這樣一個(gè)權(quán)重,以區(qū)別長(zhǎng)短不同的文檔,沿著這個(gè)思路,改寫一下IDF公式:
  
  我們用所有文檔中的詞做成詞庫(kù),那么上式中:
  
  綜合上面的推導(dǎo)過程,我們知道,本文所定義的詞權(quán)重公式,本質(zhì)上是tf-idf為長(zhǎng)短文檔引入權(quán)重的加強(qiáng)版,而該公式的應(yīng)用也極為簡(jiǎn)單,只需要從詞庫(kù)中讀取該詞詞頻、詞庫(kù)總詞頻即可。

  時(shí)間復(fù)雜度最快可達(dá)O(1)級(jí),比如詞庫(kù)以Hash表存儲(chǔ)。

  關(guān)于TF-IDF更完整的介紹及主流用法,建議參看阮一峰老師的博文《TF-IDF與余弦相似性的應(yīng)用(一):自動(dòng)提取關(guān)鍵詞》。

四、公式應(yīng)用
    詞權(quán)重用途很廣,幾乎詞袋類算法中,都可以考慮使用。常見的應(yīng)用有:

     1、關(guān)鍵詞抽取、自動(dòng)標(biāo)簽生成

        作法都很簡(jiǎn)單,分詞后排除停用詞,然后按權(quán)重值排序,取排在前面的若干個(gè)詞即可。

     2、文本摘要

        完整的文本摘要功能實(shí)現(xiàn)很復(fù)雜也很困難,這里所指,僅是簡(jiǎn)單應(yīng)用:由前面推導(dǎo)過程中可知,句子的權(quán)重等于分詞結(jié)果各詞的權(quán)重之和,從而獲得句子的權(quán)重排序。

     3、相似度計(jì)算

        相似度計(jì)算,我們將在下一篇文中單獨(dú)介紹。

五、演示程序
  在演示程序顯示詞庫(kù)結(jié)果時(shí),是按本文所介紹的權(quán)重公式排序的。

  演示程序與詞庫(kù)生成的相同:

  下載地址:遺忘算法(詞庫(kù)生成、分詞、詞權(quán)重)演示程序.rar

  特別感謝:王斌老師指出,本文公式實(shí)質(zhì)上是TF-ICF。
六、聯(lián)系方式:  1、QQ:老憨 244589712
  2、郵箱:gzdmcaoyc@163.com

發(fā)表在 自然語(yǔ)言處理? ? ? ? | 標(biāo)簽為 TF-IDF, 自然語(yǔ)言處理, 遺忘算法? ? ? ? | 留下評(píng)論

非主流自然語(yǔ)言處理——遺忘算法系列(三):分詞發(fā)表于 2016年04月23號(hào)老憨

一、前言
  前面介紹了詞庫(kù)的自動(dòng)生成的方法,本文介紹如何利用前文所生成的詞庫(kù)進(jìn)行分詞。

二、分詞的原理
  分詞的原理,可以參看吳軍老師《數(shù)學(xué)之美》中的相關(guān)章節(jié),這里摘取Google黑板報(bào)版本中的部分:

  

  從上文中,可以知道分詞的任務(wù)目標(biāo):給出一個(gè)句子S,找到一種分詞方案,使下面公式中的P(S)最大:

  

  不過,聯(lián)合概率求起來(lái)很困難,這種情況我們通常作馬爾可夫假設(shè),以簡(jiǎn)化問題,即:任意一個(gè)詞wi的出現(xiàn)概率只同它前面的詞 wi-1 有關(guān)。

  關(guān)于這個(gè)問題,吳軍老師講的深入淺出,整段摘錄如下:
  

  另外,如果我們假設(shè)一個(gè)詞與其他詞都不相關(guān),即相互獨(dú)立時(shí),此時(shí)公式最簡(jiǎn),如下:
  

  這個(gè)假設(shè)分詞無(wú)關(guān)的公式,也是本文所介紹的分詞算法所使用的。

三、算法分析
  問:假設(shè)分詞結(jié)果中各詞相互無(wú)關(guān)是否可行?

  答:可行,前提是使用遺忘算法系列(二)中所述方法生成的詞庫(kù),理由如下:

  分析ICTCLAS廣受好評(píng)的分詞系統(tǒng)的免費(fèi)版源碼,可以發(fā)現(xiàn),在這套由張華平、劉群兩位博士所開發(fā)分詞系統(tǒng)的算法中假設(shè)了:分詞結(jié)果中詞只與其前面的一個(gè)詞有關(guān)。

  回憶我們?cè)~庫(kù)生成的過程可以知道,如果相鄰的兩個(gè)詞緊密相關(guān),那么這兩個(gè)詞會(huì)連為一個(gè)粗粒度的詞被加入詞庫(kù)中,如:除“清華”、“大學(xué)”會(huì)是單獨(dú)的詞外,“清華大學(xué)”也會(huì)是一個(gè)詞,分詞過程中具體選用那種,則由它們的概率來(lái)決定。

  也就是說,我們?cè)谏稍~庫(kù)的同時(shí),已經(jīng)隱含的完成了相關(guān)性訓(xùn)練。

  關(guān)于ICTCLAS源碼分析的文章,可以參看呂震宇博文:《天書般的ICTCLAS分詞系統(tǒng)代碼》。

  問:如何實(shí)現(xiàn)分詞?

  答:基于前文生成的詞庫(kù),我們可以假設(shè)分詞結(jié)果相互無(wú)關(guān),分詞過程就比較簡(jiǎn)單,使用下面的步驟可以O(shè)(N)級(jí)時(shí)間,單遍掃描完成分詞:

  逐字掃描句子,從詞庫(kù)中查出限定字長(zhǎng)內(nèi),以該字結(jié)尾的所有詞,分別計(jì)算其中的詞與該詞之前各詞的概率乘積,取結(jié)果值最大的詞,分別緩存下當(dāng)前字所在位置的最大概率積,以及對(duì)應(yīng)的分詞結(jié)果。

  重復(fù)上面的步驟,直到句子掃描完畢,最后一字位置所得到即為整句分詞結(jié)果。


  3、算法特點(diǎn)
    3.1、無(wú)監(jiān)督學(xué)習(xí);
    3.2、O(N)級(jí)時(shí)間復(fù)雜度;
    3.3、詞庫(kù)自維護(hù),程序可無(wú)需人工參與的情況下,自行發(fā)現(xiàn)并添加新詞、調(diào)整詞頻、清理錯(cuò)詞、移除生僻詞,保持詞典大小適當(dāng);
    3.4、領(lǐng)域自適應(yīng):領(lǐng)域變化時(shí),詞條、詞頻自適應(yīng)的隨之調(diào)整;
    3.5、支持多語(yǔ)種混合分詞。



四、演示程序下載
  演示程序與詞庫(kù)生成的相同:

  下載地址:遺忘算法(詞庫(kù)生成、分詞、詞權(quán)重)演示程序.rar

五、聯(lián)系方式:
  1、QQ:老憨 244589712
  2、郵箱:gzdmcaoyc@163.com

發(fā)表在 自然語(yǔ)言處理? ? ? ? | 標(biāo)簽為 無(wú)監(jiān)督分詞, 自然語(yǔ)言處理, 自適應(yīng)詞典, 跨語(yǔ)種, 遺忘算法? ? ? ? | 13 條評(píng)論

非主流自然語(yǔ)言處理——遺忘算法系列(二):大規(guī)模語(yǔ)料詞庫(kù)生成發(fā)表于 2016年04月23號(hào)老憨
一、前言
  本文介紹利用牛頓冷卻模擬遺忘降噪,從大規(guī)模文本中無(wú)監(jiān)督生成詞庫(kù)的方法。



二、詞庫(kù)生成


    算法分析,先來(lái)考慮以下幾個(gè)問題



    問:目標(biāo)是從文本中抽取詞語(yǔ),是否可以考慮使用遺忘的方法呢?

    答:可以,詞語(yǔ)具備以相對(duì)穩(wěn)定周期重復(fù)再現(xiàn)的特征,所以可以考慮使用遺忘的方法。這意味著,我們只需要找一種適當(dāng)?shù)姆椒?#xff0c;將句子劃分成若干子串,這些子串即為“候選詞”。在遺忘的作用下,如果“候選詞”會(huì)周期性重現(xiàn),那么它就會(huì)被保留在詞庫(kù)中,相反如果只是偶爾或隨機(jī)出現(xiàn),則會(huì)逐漸被遺忘掉。



    問:那用什么方法來(lái)把句子劃分成子串比較合適呢?

    答:考察句中任意相鄰的兩個(gè)字,相鄰兩字有兩種可能:要么同屬于一個(gè)共同的詞,要么是兩個(gè)詞的邊界。我們都會(huì)有這樣一種感覺,屬于同一個(gè)詞的相鄰兩字的“關(guān)系”肯定比屬于不同詞的相鄰兩字的“關(guān)系”要強(qiáng)烈一些。

    數(shù)學(xué)中并不缺少刻劃“關(guān)系”的模型,這里我們選擇公式簡(jiǎn)單并且參數(shù)容易統(tǒng)計(jì)的一種:如果兩個(gè)字共現(xiàn)的概率大于它們隨機(jī)排列在一起的概率,那么我們認(rèn)為這兩個(gè)字有關(guān),反之則無(wú)關(guān)。

    如果相鄰兩字無(wú)關(guān),就可以將兩字中間斷開。逐字掃描句子,如果相鄰兩字滿足下面的公式,則將兩字?jǐn)嚅_,如此可將句子切成若干子串,從而獲得“候選詞”集,判斷公式如下圖所示:

    

    公式中所需的參數(shù)可以通過統(tǒng)計(jì)獲得:遍歷一次語(yǔ)料,即可獲得公式中所需的“單字的頻數(shù)”、“相鄰兩字共現(xiàn)的頻數(shù)”,以及“所有單字的頻數(shù)總和”。



    問:如何計(jì)算遺忘剩余量?

    答:使用牛頓冷卻公式,各參數(shù)在遺忘算法中的含義,如下圖所示:



    牛頓冷卻公式的詳情說明,可以參考阮一峰老師的博文《基于用戶投票的排名算法(四):牛頓冷卻定律》。

    

    問:參數(shù)中時(shí)間是用現(xiàn)實(shí)時(shí)間嗎,遺忘系數(shù)取多少合適呢?

    答:a、關(guān)于時(shí)間:

      可以使用現(xiàn)實(shí)時(shí)間,遺忘的發(fā)生與現(xiàn)實(shí)同步。

      也可以考慮用處理語(yǔ)料中對(duì)象的數(shù)量來(lái)代替,這樣僅當(dāng)有數(shù)據(jù)處理時(shí),才會(huì)發(fā)生遺忘。比如按處理的字?jǐn)?shù)為計(jì)時(shí)單位,人閱讀的速度約每秒5至7個(gè)字,當(dāng)然每個(gè)人的閱讀速度并不相同,這里的參數(shù)值要求并不需要特別嚴(yán)格。



      b、遺忘系數(shù)可以參考艾賓浩斯曲線中的實(shí)驗(yàn)值,如下圖(來(lái)自互聯(lián)網(wǎng))

    

      我們?nèi)?天記憶剩余量約為25.4%這個(gè)值,按每秒閱讀7個(gè)字,將其代入牛頓冷卻公式可以求得遺忘系數(shù):

    



      注意艾賓浩斯曲線中的每組數(shù)值代入公式,所得的系數(shù)并不相同,會(huì)對(duì)詞庫(kù)的最大有效容量產(chǎn)生影響。

二、該算法生成詞庫(kù)的特點(diǎn)
    3.1、無(wú)監(jiān)督學(xué)習(xí)

    3.2、O(N)級(jí)時(shí)間復(fù)雜度

    3.3、訓(xùn)練、執(zhí)行為同一過程,可無(wú)縫處理流式數(shù)據(jù)

    3.4、未登錄詞、新詞、登錄詞沒有區(qū)別

    3.5、領(lǐng)域自適應(yīng):領(lǐng)域變化時(shí),詞條、詞頻自適應(yīng)的隨之調(diào)整

    3.6、算法中僅使用到頻數(shù)這一語(yǔ)言的共性特征,無(wú)需對(duì)任何字符做特別處理,因此原理上跨語(yǔ)種。

三、詞庫(kù)成熟度

  由于每個(gè)詞都具備一個(gè)相對(duì)穩(wěn)定的重現(xiàn)周期,不難證明,當(dāng)訓(xùn)練語(yǔ)料達(dá)到一定規(guī)模后,在遺忘的作用下,每個(gè)詞的詞頻在衰減和累加會(huì)達(dá)到平衡,也即衰減的速度與增加的速度基本一致。成熟的詞庫(kù),詞頻的波動(dòng)相對(duì)會(huì)比較小,利用這個(gè)特征,我們可以衡量詞庫(kù)的成熟程度。

四、源碼(C#)、演示程序下載

  使用內(nèi)附語(yǔ)料(在“可直接運(yùn)行的演示程序”下可以找到)生成詞庫(kù)效果如下:
  
  下載地址:遺忘算法(詞庫(kù)生成、分詞、詞權(quán)重)演示程序.rar
五、聯(lián)系方式:

  1、QQ:老憨 244589712
  2、郵箱:gzdmcaoyc@163.com


發(fā)表在 自然語(yǔ)言處理? ? ? ? | 標(biāo)簽為 未登錄詞發(fā)現(xiàn), 牛頓冷卻公式, 自然語(yǔ)言處理, 詞庫(kù)生成, 遺忘算法? ? ? ? | 4 條評(píng)論

非主流自然語(yǔ)言處理——遺忘算法系列(一):算法概述發(fā)表于 2016年04月19號(hào)老憨
一、前言
這里“遺忘”不是筆誤,這個(gè)系列要講的“遺忘算法”,是以牛頓冷卻公式模擬遺忘為基礎(chǔ)、用于自然語(yǔ)言處理(NLP)的一類方法的統(tǒng)稱,而不是大名鼎鼎的“遺傳算法”!

在“遺忘”這條非主流自然語(yǔ)言處理路上,不知不覺已經(jīng)摸索了三年有余,遺忘算法也算略成體系,雖然仍覺時(shí)機(jī)未到,還是決定先停一下,將腦中所積梳理成文,交由NLP的同好們點(diǎn)評(píng)交流。

二、遺忘算法原理
能夠從未知的事物中發(fā)現(xiàn)關(guān)聯(lián)、提煉規(guī)律才是真正智能的標(biāo)志,而遺忘正是使智能生物具備這一能力的工具,也是適應(yīng)變化的利器,“遺忘”這一頗具負(fù)能量特征的家伙是如何實(shí)現(xiàn)發(fā)現(xiàn)規(guī)律這么個(gè)神奇魔法的呢?

讓我們從巴甫洛夫的狗說起:狗聽到鈴聲就知道開飯了。

鈴聲和開飯之間并不存在必然的聯(lián)系,我們知道之所以狗會(huì)將兩者聯(lián)系在一起,是因?yàn)榘透β宸蛴幸獾膶烧咭淮未卧诠纺莾褐貜?fù)共現(xiàn)。所以,重復(fù)是建立關(guān)聯(lián)的必要條件。

我們還可以想像,狗在進(jìn)食的時(shí)候聽到的聲音可能還有鳥叫聲、風(fēng)吹樹葉的沙沙聲,為什么這些同樣具備重復(fù)特征聲音卻沒有和開飯建立關(guān)系呢?

細(xì)分辨我們不難想到:鈴聲和開飯之間不僅重復(fù)共現(xiàn),而且這種重復(fù)共現(xiàn)還具備一個(gè)相對(duì)穩(wěn)定的周期,而其他的那些聲音和開飯的共現(xiàn)則是隨機(jī)的。

那么遺忘又在其中如何起作用的呢?

1、所有事物一視同仁的按相同的規(guī)律進(jìn)行遺忘; 2、偶爾或隨機(jī)出現(xiàn)的事物因此會(huì)隨時(shí)間而逐漸淡忘; 3、而具有相對(duì)穩(wěn)定周期重復(fù)再現(xiàn)的事物,雖然也按同樣的規(guī)律遺忘,但由于周期性的得到補(bǔ)充,從而可以動(dòng)態(tài)的保留在記憶中。

在自然語(yǔ)言處理中,很多對(duì)象比如:詞、詞與詞的關(guān)聯(lián)、模板等,都具備按相對(duì)穩(wěn)定重現(xiàn)的特征,因此非常適用遺忘來(lái)處理。

三、牛頓冷卻公式
那么,我們用什么來(lái)模擬遺忘呢?

提到遺忘,很自然的會(huì)想到艾賓浩斯遺忘曲線,如果這條曲線有個(gè)函數(shù)形式,那么無(wú)疑是模擬遺忘的最佳建模選擇。遺憾的是它只是一組離散的實(shí)驗(yàn)數(shù)據(jù),但至少讓我們知道,遺忘是呈指數(shù)衰減的。

另外有一個(gè)事實(shí),有的人記性好些,有的人記性則差些,不同人之間的遺忘曲線是不同的,但這并不會(huì)從本質(zhì)上影響不同人對(duì)事物的認(rèn)知,也就是說,如果存在一個(gè)遺忘函數(shù),它首先是指數(shù)形式的,其次在實(shí)用過程中,該函數(shù)的系數(shù)并不那么重要。

這提醒我們,可以嘗試用一些指數(shù)形式的函數(shù)來(lái)代替遺忘曲線,然后用實(shí)踐去檢驗(yàn),如果能滿足工程實(shí)用就很好,這樣的函數(shù)公式并不難找,比如:退火算法、半衰期公式等。

有次在阮一峰老師的博客上看關(guān)于帖子熱度排行的算法時(shí),其中一種方法使用的是牛頓冷卻定律,遺忘與冷卻有著相似的過程、簡(jiǎn)潔優(yōu)美的函數(shù)形式、而且參數(shù)只與時(shí)間相關(guān),這些都讓我本能想到,它就是我想要的“遺忘公式”。

在實(shí)踐檢驗(yàn)中,牛頓冷卻公式,確實(shí)有效好用,當(dāng)然,不排除有其他更佳公式。

四、已經(jīng)實(shí)現(xiàn)的功能
如果把自然語(yǔ)言處理比作從礦砂中淘金子,那么業(yè)界主流算法的方向是從礦砂中將金砂挑出來(lái),而遺忘算法的方向則是將砂石篩出去,雖然殊途但同歸,所處理的任務(wù)也都是主流中所常見。

本系列文章將逐一講解遺忘算法如何以O(shè)(N)級(jí)算法性能實(shí)現(xiàn):

1、大規(guī)模語(yǔ)料詞庫(kù)生成
    1.1、跨語(yǔ)種,算法語(yǔ)種無(wú)關(guān),比如:中日韓、少數(shù)民族等語(yǔ)種均可支持
    1.2、未登錄詞發(fā)現(xiàn)(只要符合按相對(duì)穩(wěn)定周期性重現(xiàn)的詞匯都會(huì)被收錄)
    1.3、領(lǐng)域自適應(yīng),切換不同領(lǐng)域的訓(xùn)練文本時(shí),詞條、詞頻自行調(diào)整
    1.4、詞典成熟度:可以知道當(dāng)前語(yǔ)料訓(xùn)練出的詞典的成熟程度

2、分詞(基于上述詞庫(kù)技術(shù))
    2.1、成長(zhǎng)性分詞:用的越多,切的越準(zhǔn)
    2.2、詞典自維護(hù):切詞的同時(shí)動(dòng)態(tài)維護(hù)詞庫(kù)的詞條、詞頻、登錄新詞
    2.2、領(lǐng)域自適應(yīng)、跨語(yǔ)種(繼承自詞庫(kù)特性)

3、詞權(quán)值計(jì)算
    3.1、關(guān)鍵詞提取、自動(dòng)標(biāo)簽
    3.2、文章摘要
    3.3、長(zhǎng)、短文本相似度計(jì)算
    3.4、主題詞集

五、聯(lián)系方式:
1、QQ:老憨 244589712

2、郵箱:gzdmcaoyc@163.com





發(fā)表在 自然語(yǔ)言處理? ? ? ? | 標(biāo)簽為 牛頓冷卻公式, 自然語(yǔ)言處理, 遺忘算法? ? ? ? | 留下評(píng)論

達(dá)觀數(shù)據(jù)對(duì)于大規(guī)模消息數(shù)據(jù)處理的系統(tǒng)架構(gòu)發(fā)表于 2015年12月2號(hào)recommender
達(dá)觀數(shù)據(jù)是為企業(yè)提供大數(shù)據(jù)處理、個(gè)性化推薦系統(tǒng)服務(wù)的知名公司,在應(yīng)對(duì)海量數(shù)據(jù)處理時(shí),積累了大量實(shí)戰(zhàn)經(jīng)驗(yàn)。其中達(dá)觀數(shù)據(jù)在面對(duì)大量的數(shù)據(jù)交互和消息處理時(shí),使用了稱為DPIO的設(shè)計(jì)思路進(jìn)行快速、穩(wěn)定、可靠的消息數(shù)據(jù)傳遞機(jī)制,本文分享了達(dá)觀數(shù)據(jù)在應(yīng)對(duì)大規(guī)模消息數(shù)據(jù)處理時(shí)所開發(fā)的通訊中間件DPIO的設(shè)計(jì)思路和處理經(jīng)驗(yàn)(達(dá)觀數(shù)據(jù)架構(gòu)師 桂洪冠) 一、數(shù)據(jù)通訊進(jìn)程模型 在設(shè)計(jì)達(dá)觀數(shù)據(jù)的消息數(shù)據(jù)處理機(jī)制時(shí),首先充分借鑒了ZeroMQ和ProxyIO的設(shè)計(jì)思想。ZeroMQ提供了一種底層的網(wǎng)絡(luò)通訊框架,提供了基本的RoundRobin負(fù)載均衡算法,性能優(yōu)越,而ProxyIO是雅虎的網(wǎng)絡(luò)通訊中間件,承載了雅虎內(nèi)部大量計(jì)算節(jié)點(diǎn)間的實(shí)時(shí)消息處理。但是ZeroMQ沒有實(shí)現(xiàn)基于節(jié)點(diǎn)健康狀態(tài)的最快響應(yīng)算法,并且ZeroMQ和ProxyIO對(duì)節(jié)點(diǎn)的狀態(tài)管理,連接管理,負(fù)載均衡調(diào)度等也需要各應(yīng)用自己來(lái)實(shí)現(xiàn)。 達(dá)觀科技在借鑒兩種設(shè)計(jì)思路的基礎(chǔ)上,從進(jìn)程模型、服務(wù)架構(gòu)、線程模型、通訊協(xié)議、負(fù)載均衡、雪崩處理、連接管理、消息流程、狀態(tài)監(jiān)控等各方面進(jìn)行了開拓,開發(fā)了DPIO(達(dá)觀ProxyIO的簡(jiǎn)寫,下文統(tǒng)稱DPIO),確保系統(tǒng)高性能處理相關(guān)數(shù)據(jù)。 在DPIO的整個(gè)通訊框架體系中,采用集中管理、統(tǒng)一監(jiān)控策略管理節(jié)點(diǎn)提供服務(wù),節(jié)點(diǎn)間直接進(jìn)行交互,并不依賴統(tǒng)一的管理節(jié)點(diǎn)(桂洪冠)。幾種節(jié)點(diǎn)間通過http或者tcp協(xié)議進(jìn)行消息傳遞、配置更新、狀態(tài)跟蹤等通訊行為。集群將不同應(yīng)用的服務(wù)抽象成組的概念,相同應(yīng)用的服務(wù)啟動(dòng)時(shí)加入的相同的組。每個(gè)通訊組有兩種端點(diǎn)client和server。應(yīng)用啟動(dòng)時(shí)通過配置決定自己是client端點(diǎn)還是server端點(diǎn),在一個(gè)組內(nèi),每個(gè)應(yīng)用只能有一個(gè)身份;不同組沒要求。
  • 監(jiān)控節(jié)點(diǎn),顧名思義即提供系統(tǒng)監(jiān)控服務(wù)的,用來(lái)給系統(tǒng)管理員查看集群中節(jié)點(diǎn)的服務(wù)狀態(tài)及負(fù)載情況,系統(tǒng)對(duì)監(jiān)控節(jié)點(diǎn)并無(wú)實(shí)時(shí)性及穩(wěn)定性要求,在本模型中是單點(diǎn)系統(tǒng)。
  • 在上圖的架構(gòu)中把管理節(jié)點(diǎn)設(shè)計(jì)成雙master結(jié)構(gòu),參考zookeeper集群管理思路,多個(gè)master通過一定算法分別服務(wù)于集群中一部分節(jié)點(diǎn),相對(duì)于另外的服務(wù)節(jié)點(diǎn)則為備份管理節(jié)點(diǎn),他們通過內(nèi)部通訊同步數(shù)據(jù),每個(gè)管理節(jié)點(diǎn)都有一個(gè)web服務(wù)為監(jiān)控節(jié)點(diǎn)提供服務(wù)節(jié)點(diǎn)的狀態(tài)數(shù)據(jù)。
  • 服務(wù)節(jié)點(diǎn)即是下文要談的代理服務(wù),根據(jù)服務(wù)對(duì)象不同分為應(yīng)用端代理和服務(wù)端代理。集群中的服務(wù)節(jié)點(diǎn)根據(jù)提供服務(wù)的不同分為多個(gè)組,每個(gè)代理啟動(dòng)都需要注冊(cè)到相應(yīng)的組中,然后提供服務(wù)。
二、DPIO消息傳遞邏輯架構(gòu) DPIO服務(wù)節(jié)點(diǎn)內(nèi)/間的通訊及消息傳遞模型見下圖:
  • clientHost和serverHost間使用socketapi進(jìn)行tcp通訊,相同主機(jī)內(nèi)部的多個(gè)進(jìn)程間使用共享內(nèi)存?zhèn)鬟f消息內(nèi)容,client和clientproxy、server和serverproxy之間通過domain socket進(jìn)行事件通知;在socket連接的一方收到對(duì)端的事件通知后,從共享內(nèi)存中獲取消息內(nèi)容。
  • clientproxy/serverproxy啟動(dòng)時(shí)綁定到host的一個(gè)端口響應(yīng)應(yīng)用api的連接,在連接到來(lái)時(shí)將該api對(duì)應(yīng)的共享內(nèi)存初始化,將偏移地址告訴給應(yīng)用。clientproxy和serverproxy中分別維護(hù)了一個(gè)到應(yīng)用api的連接句柄隊(duì)列,并通過io復(fù)用技術(shù)監(jiān)聽這些連接上的讀寫事件。
  • serverproxy在啟動(dòng)時(shí)通過socket綁定到服務(wù)器的一個(gè)端口,并以server身份注冊(cè)到一個(gè)group監(jiān)聽該端口的連接事件,當(dāng)事件到達(dá)時(shí)回調(diào)注冊(cè)的事件處理函數(shù)響應(yīng)事件。
  • 在serverproxy內(nèi)部通過不同的thread分別管理從本地應(yīng)用建立的連接和從clientproxy建立的連接。thread的個(gè)數(shù)在啟動(dòng)proxy時(shí)由用戶指定,默認(rèn)是分別1個(gè)。每個(gè)clientproxy啟動(dòng)時(shí)會(huì)以client身份注冊(cè)到一個(gè)group,并建立到同組的所有serverproxy的連接,clientproxy內(nèi)部包含了連接的自管理能力及failover的處理(將在下面連接管理部分描述)。 DPIO實(shí)現(xiàn)了負(fù)載均衡,路由選擇和透明代理的功能。
三、線程模型 DPIO的線程模型: App epoll thread檢測(cè)從api來(lái)的請(qǐng)求信息,并將請(qǐng)求信息轉(zhuǎn)發(fā)到待處理隊(duì)列中。從已處理隊(duì)列中獲取應(yīng)答包,并將處理結(jié)果轉(zhuǎn)發(fā)給api Io epoll thread檢測(cè)從遠(yuǎn)端的proxy來(lái)的可寫事件,并將請(qǐng)求包轉(zhuǎn)發(fā)到遠(yuǎn)端的proxy。檢測(cè)從遠(yuǎn)端的proxy的可讀事件,并將應(yīng)答包放在已處理隊(duì)列中 Monitor thread檢測(cè)DPIO的工作狀態(tài)請(qǐng)求,將DPIO的工作狀態(tài)返回。并將決定Io epoll thread和app epoll thread的負(fù)載均衡(桂洪冠)。 四、通信協(xié)議
  • Api與DPIO通信協(xié)議
  • 共享內(nèi)存存儲(chǔ)消息格式
字段 含義 長(zhǎng)度
protocol len 協(xié)議包的總長(zhǎng)度 4bytes
protocol head len 協(xié)議頭的長(zhǎng)度 1byte
Version_protocol_id 協(xié)議的版本號(hào)和協(xié)議號(hào) 1byte
Flag 消息標(biāo)志,標(biāo)志路由模式,是否記錄來(lái)源地址,有二級(jí)路由,所以這個(gè)字段一定要Eg,末位表示要記錄src,倒數(shù)第二位表示按roundrobin路由,倒數(shù)第3位表示按消息頭路由,xxx 1byte
Proxy 來(lái)源/目的 proxy 2bytes
Api 來(lái)源/目的 api 2bytes
ApiTtl 協(xié)議包的發(fā)送時(shí)間 2Bytes
ClientTtl 消息存活的時(shí)間,后面添加,增加路由策略,選擇app_server 2Bytes
ClientProcessTime 客戶端處理所用時(shí)間 2Bytes
ServerTtl 消息存活的時(shí)間,后面添加,增加路由策略,選擇app_client 2Bytes
timeout 協(xié)議包的超時(shí)時(shí)間 2 byte
Sid 消息序列號(hào) 4bytes
protocol body len Body長(zhǎng)度 4bytes
protocol body 消息體 Size
  • 請(qǐng)求協(xié)議包
字段 含義 長(zhǎng)度
protocol head len 協(xié)議頭的長(zhǎng)度 1byte
Version_protocol_id 協(xié)議的版本號(hào)和協(xié)議號(hào) 1byte
Flag 消息標(biāo)志,標(biāo)志路由模式,是否記錄來(lái)源地址,有二級(jí)路由,所以這個(gè)字段一定要Eg,末位表示要記錄src,倒數(shù)第二位表示按roundrobin路由,倒數(shù)第3位表示按消息頭路由,xxx 1byte
ApiTtl 協(xié)議包的發(fā)送時(shí)間 2bytes
Timeout 協(xié)議包的超時(shí)時(shí)間 2bytes
Api 來(lái)源/目的 api 2bytes
Sid 消息序列號(hào) 4byte
Begin_offset 協(xié)議包的起始偏移 4bytes
len 協(xié)議包長(zhǎng)度 4bytes
  • 響應(yīng)協(xié)議包
字段 含義 長(zhǎng)度
protocol head len 協(xié)議頭的長(zhǎng)度 1byte
Version_protocol_id 協(xié)議的版本號(hào)和協(xié)議號(hào) 1byte
Flag 消息標(biāo)志,標(biāo)志路由模式,是否記錄來(lái)源地址,有二級(jí)路由,所以這個(gè)字段一定要Eg,末位表示要記錄src,倒數(shù)第二位表示按roundrobin路由,倒數(shù)第3位表示按消息頭路由,xxx 1byte
Result 處理結(jié)果 1byte
sid 消息序列號(hào) 4bytes
begin_offset 協(xié)議包的起始偏移 4bytes
len 協(xié)議包長(zhǎng)度 4bytes

  • Proxy與監(jiān)控中心的監(jiān)控信息
  • 請(qǐng)求協(xié)議包
字段 含義 長(zhǎng)度
protocol len 協(xié)議包的總長(zhǎng)度 4bytes
protocol head len 協(xié)議頭的長(zhǎng)度 4bytes
Version 協(xié)議的版本號(hào) 4bytes
protocol id 協(xié)議的協(xié)議號(hào) 4bytess
status_version 當(dāng)前狀態(tài)版本 4bytes
Proxy_identify_len 該proxy標(biāo)識(shí)長(zhǎng)度 4bytess
Proxy_identify 該proxy 標(biāo)識(shí) 4bytes
protocol body 消息體 Size
  • 應(yīng)答包
字段 含義 長(zhǎng)度
protocol len 協(xié)議包的總長(zhǎng)度 4bytes
protocol head len 協(xié)議頭的長(zhǎng)度 4bytes
Version 協(xié)議的版本號(hào) 4bytes
protocol id 協(xié)議的協(xié)議號(hào) 4bytess
protocol body len Body長(zhǎng)度 4bytes
protocol body 消息體 Size
五、負(fù)載均衡 DPIO的負(fù)載均衡基于最快響應(yīng)法 DPIO將所有的統(tǒng)計(jì)信息更新到監(jiān)控中心,監(jiān)控中心通過處理所有的節(jié)點(diǎn)的狀態(tài)信息,統(tǒng)一負(fù)責(zé)負(fù)載均衡。 DPIO從監(jiān)控中心獲取所有連接的負(fù)載均衡策略。每個(gè)連接知道只需知道自己的處理能力。 以上圖為例,有三個(gè)proxy server處理程序。處理能力分別為50、30、20,一次epoll過程能夠同時(shí)探測(cè)多個(gè)連接的可寫事件。 假設(shè):三個(gè)proxy server的屬于同一epoll thread,且三個(gè)proxy server假設(shè)都處理能力無(wú)限大。 限制:如果剛開始時(shí)待處理隊(duì)列的數(shù)據(jù)包個(gè)數(shù)為100個(gè),多次發(fā)送輪回后proxy server A≥proxy server B≥proxy server C, 每個(gè)發(fā)送的最多發(fā)送協(xié)議包數(shù)為待處理隊(duì)列協(xié)議包個(gè)數(shù) * 該連接所占權(quán)重 六、雪崩處理 大型在線服務(wù),特別是對(duì)于時(shí)延敏感的服務(wù),當(dāng)系統(tǒng)外部請(qǐng)求超過系統(tǒng)服務(wù)能力,而沒有適當(dāng)?shù)倪^載保護(hù)措施時(shí),當(dāng)系統(tǒng)累計(jì)的超時(shí)請(qǐng)求達(dá)到一定規(guī)模,將可能導(dǎo)致系統(tǒng)緩沖區(qū)隊(duì)列溢出,后端服務(wù)資源耗盡,最終像雪崩一樣形成惡性循環(huán)。這時(shí)系統(tǒng)處理的每個(gè)請(qǐng)求都因?yàn)槌瑫r(shí)而無(wú)效,系統(tǒng)對(duì)外呈現(xiàn)的服務(wù)能力為0,且這種情況下不能自動(dòng)恢復(fù)。 我們的解決策略是對(duì)協(xié)議包進(jìn)行生命周期管理,現(xiàn)在協(xié)議包進(jìn)出待處理隊(duì)列和已處理隊(duì)列時(shí)進(jìn)行超時(shí)檢測(cè)和超時(shí)處理(超時(shí)則丟棄)。 proxy client: 當(dāng)app epoll thread將協(xié)議包放入待處理隊(duì)列時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已經(jīng)超時(shí)。 當(dāng)app epoll thread將協(xié)議包從已處理隊(duì)列中移除時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,已經(jīng)當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已經(jīng)超時(shí)。 當(dāng)Io epoll thread將協(xié)議包從待處理隊(duì)列中移除時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,當(dāng)前時(shí)間戳,該連接的協(xié)議包的平均處理時(shí)間移除。 當(dāng)io epoll thread將協(xié)議包放入已處理隊(duì)列時(shí),會(huì)將將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,已經(jīng)當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已經(jīng)超時(shí)。 proxy server: 當(dāng)App epoll thread將協(xié)議包從待處理隊(duì)列中移除時(shí),會(huì)將該協(xié)議包在客戶端的處理時(shí)間、該協(xié)議包的超時(shí)時(shí)間、該協(xié)議包的proxy server接收時(shí)間戳、當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已超時(shí)。 當(dāng)app epoll thread將協(xié)議包放入已處理隊(duì)列時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,已經(jīng)當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已經(jīng)超時(shí)。 當(dāng)io epoll thread將協(xié)議包從已處理隊(duì)列中移除時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間,已經(jīng)當(dāng)前時(shí)間戳來(lái)判斷該協(xié)議包是否已經(jīng)超時(shí)。 當(dāng)io epoll thread將協(xié)議包放入待處理隊(duì)列時(shí),會(huì)將該協(xié)議包的發(fā)送時(shí)間、該協(xié)議包的超時(shí)時(shí)間來(lái)判斷該協(xié)議包是否已超時(shí)。 七、連接管理 紅黑樹: 紅黑樹:保存所有連接的最近的讀/寫時(shí)間戳。 當(dāng)epoll_wait時(shí),首先從紅黑樹中獲取oldest的時(shí)間戳,并將當(dāng)前時(shí)間戳與oldest時(shí)間戳的時(shí)間差作為epoll_wait的超時(shí)時(shí)間,當(dāng)連接中有可讀/寫事件發(fā)送時(shí),首先從紅黑樹中刪除該節(jié)點(diǎn),當(dāng)可讀/寫事件處理完畢后,再將節(jié)點(diǎn)插入到紅黑樹中,當(dāng)處理完所有連接的可讀/寫事件時(shí),再?gòu)募t黑樹中依次從移除時(shí)間戳小于當(dāng)前時(shí)間戳的連接,并觸發(fā)該連接的timeout事件。 八、消息處理流程
  • apiclient通過調(diào)用api的接口,將消息傳給
  • api接受消息體,從共享內(nèi)存中申請(qǐng)內(nèi)存,填寫消息頭size(協(xié)議總長(zhǎng)度)、Offset (協(xié)議版本號(hào)和協(xié)議號(hào))、Headsize (協(xié)議頭的總長(zhǎng)度)、flag(路由策略),ApiTtl (協(xié)議包的發(fā)送時(shí)間)、timeout (協(xié)議包的超時(shí)時(shí)間)、sid(序列號(hào)),size(消息體長(zhǎng)度)字段,封裝成協(xié)議包,將協(xié)議包寫入共享內(nèi)存。
  • api通過socket發(fā)送請(qǐng)求給proxy。
  • app epoll thread通過檢測(cè)api的可讀事件,接受請(qǐng)求。通過解析請(qǐng)求內(nèi)容,獲取請(qǐng)求協(xié)議包所在的共享內(nèi)存的偏移、請(qǐng)求協(xié)議包的長(zhǎng)度和api連接index加入到處理隊(duì)列。
  • proxy client的io epoll thread通過檢測(cè)對(duì)端DPIO連接的可寫事件,從發(fā)送隊(duì)列中獲取請(qǐng)求包,將api的index加入到協(xié)議包的api index字段。
  • proxy client的io epoll thread從共享內(nèi)存中讀取協(xié)議包,釋放由請(qǐng)求包中所標(biāo)識(shí)的內(nèi)存空間。
  • proxy server的io epoll thread通過檢測(cè)對(duì)端DPIO的可讀事件,接受請(qǐng)求。
  • proxy server的io epoll thread從共享內(nèi)存中申請(qǐng)空間,將proxy的index加入到協(xié)議包的proxy index字段。將請(qǐng)求內(nèi)存寫入到申請(qǐng)的空間中。
  • proxy server的io epoll thread 將協(xié)議包在共享內(nèi)存的偏移和協(xié)議包的長(zhǎng)度加入的待處理隊(duì)列中。
  • app epoll thread從待處理隊(duì)列中獲取請(qǐng)求包,將協(xié)議包轉(zhuǎn)發(fā)給相應(yīng)的api進(jìn)行處理。
  • api通過檢測(cè)DPIO的可讀事件,解析請(qǐng)求內(nèi)容。
  • api通過解析請(qǐng)求內(nèi)容,獲取請(qǐng)求協(xié)議包在共享內(nèi)存中的偏移和請(qǐng)求協(xié)議包的長(zhǎng)度。從共享內(nèi)存中讀取請(qǐng)求內(nèi)容,并釋放相應(yīng)空間。
  • api將請(qǐng)求協(xié)議包返回給應(yīng)用層進(jìn)行處理。
  • 應(yīng)用層將應(yīng)答包傳給api。
  • Api從共享內(nèi)存中申請(qǐng)空間,將應(yīng)答包寫入到共享內(nèi)存中。
  • Api將應(yīng)答包在共享內(nèi)存中的偏移和應(yīng)答包的大小寫入到共享內(nèi)存中。
  • App epoll thread通過檢測(cè)可讀事件,將應(yīng)答包寫入到已處理隊(duì)列中。
  • proxy server的Io epoll thread通過檢測(cè)對(duì)端的DPIO的可寫事件,將已處理隊(duì)列中獲取應(yīng)答包。
  • proxy server的Io epoll thread從共享內(nèi)存中讀取應(yīng)答包。
  • Proxy client的Io epoll thread檢測(cè)可讀事件,讀取應(yīng)答包。
  • Proxy client的Io epoll thread通過解析應(yīng)答包,從共享內(nèi)存中申請(qǐng)空間,將應(yīng)答包寫入到申請(qǐng)的內(nèi)存中。
  • Proxy client的Io epoll thread將應(yīng)答包移入到已處理隊(duì)列。
  • App epoll thread通過檢測(cè)api的可寫事件,將已處理隊(duì)列中獲取應(yīng)答包。
  • App epoll thread發(fā)送應(yīng)答包。
  • Api通過檢測(cè)可讀事件,獲取應(yīng)答包,通過解析應(yīng)到包,獲取應(yīng)答包在共享內(nèi)存中的偏移和應(yīng)到的大小,從共享內(nèi)存中讀取應(yīng)到包。
  • Api將應(yīng)答包返回給應(yīng)用端。(桂洪冠 陳運(yùn)文)。
九、狀態(tài)監(jiān)控 連接池中存在:當(dāng)前可用連接個(gè)數(shù) 連接池中再分別獲取每個(gè)連接的狀態(tài) 每個(gè)可用連接分別維護(hù)以下信息: 連接處理的數(shù)據(jù)包個(gè)數(shù)、連接send失敗次數(shù)、連接協(xié)議包的平均處理時(shí)間。 連接的連接狀態(tài)(當(dāng)重連失敗達(dá)到一定次數(shù)時(shí),定義為連接失敗)。 連接的重連次數(shù)、連接的超時(shí)次數(shù)。 當(dāng)監(jiān)控線程accept到client的連接時(shí),解析請(qǐng)求內(nèi)容,然后調(diào)用連接池對(duì)象的statistics方法,連接池對(duì)象首先寫入自己的統(tǒng)計(jì)信息,然后分別調(diào)用每個(gè)連接的statistics方法,每個(gè)連接分別填寫自己的統(tǒng)計(jì)信息 本文小結(jié) 大規(guī)模消息傳遞會(huì)遇到很多可靠性、穩(wěn)定性的問題,DPIO是達(dá)觀在處理大數(shù)據(jù)通訊時(shí)的一些經(jīng)驗(yàn),和感興趣的朋友們分享,期待與大家不斷交流與合作
發(fā)表在 數(shù)據(jù)挖掘? ? ? ? | 標(biāo)簽為 數(shù)據(jù)處理, 數(shù)據(jù)通訊? ? ? ? | 留下評(píng)論

在微信公眾號(hào)里使用LaTeX數(shù)學(xué)公式發(fā)表于 2015年11月17號(hào)52nlp
因?yàn)橛型瑢W(xué)在微信后臺(tái)咨詢這個(gè)問題,所以這里簡(jiǎn)單記錄一下,其實(shí)自己之前也摸索了一些方法,不是太完美,目前所使用的這個(gè)方法算是折中后比較好的。 這段時(shí)間在鼓搗“NLPJob”這個(gè)公眾號(hào),特別是微信公眾號(hào)支持“原創(chuàng)聲明”后,就很樂意將52nlp上積攢的一些文章搬上去,但是逐漸會(huì)遇到一些數(shù)學(xué)公式的問題。目前在52nlp上用的是mathjax完美支持LaTeX數(shù)學(xué)公式展現(xiàn),但是微信公眾號(hào)的編輯器沒有這個(gè)支持,另外mathjax支持的公式形式不是圖片形式,所以不能直接將文章拷貝上去,但是如果是數(shù)學(xué)公式圖片,微信編輯器可以直接拷貝,所以最直接的想法就是將mathjax支持的LaTeX公式轉(zhuǎn)換為公式圖片保存在文章中,然后再全文拷貝到微信公眾號(hào)編輯器中。 其實(shí)在mathjax之前,網(wǎng)頁(yè)上的很多數(shù)學(xué)公式都是用這種折中的方式,包括很多wordpress數(shù)學(xué)公式插件,當(dāng)年我也因?yàn)?2nlp上的公式問題還自己動(dòng)手寫了一個(gè)小的wordpress插件,但是當(dāng)mathjax出現(xiàn)之后,之前的方案就顯得很一般了。所以就開始嘗試找一下支持img緩存的LaTeX公式插件,不過多數(shù)都不滿意或者有瑕疵,甚至自己又開始動(dòng)手修改代碼,然后blablabla….,最終發(fā)現(xiàn) quicklatex這個(gè)神器和它的wordpress插件QuickLaTeX,幾乎完美支持和兼容Mathjax所支持的LaTeX數(shù)學(xué)公式。方法很簡(jiǎn)單,只要在wordpress中安裝quicklatex,然后在文章的開頭添加一個(gè):[latexpage] ,然后文章中所有的latext公式都會(huì)轉(zhuǎn)換為圖片形式,類似昨天發(fā)出的rickjin的這篇文章:LDA數(shù)學(xué)八卦:神奇的Gamma函數(shù)(1)。當(dāng)然需要先在wordpress中完成編輯轉(zhuǎn)換,再全文拷貝到微信公眾號(hào)中,微信會(huì)自動(dòng)的將這些圖片上傳到它自己的圖片服務(wù)器上。不過依然希望微信公眾號(hào)編輯器能早日支持LaTeX公式編輯甚至Mathjax。
發(fā)表在 隨筆? ? ? ? | 標(biāo)簽為 latex公式, latex數(shù)學(xué)公式, MathJax, 微信, 微信latex, 微信公眾號(hào), 微信公眾號(hào)數(shù)學(xué)公式編輯器, 微信公式編輯器, 微信數(shù)學(xué)公式? ? ? ? | 2 條評(píng)論

斯坦福大學(xué)深度學(xué)習(xí)與自然語(yǔ)言處理第四講:詞窗口分類和神經(jīng)網(wǎng)絡(luò)發(fā)表于 2015年09月14號(hào)52nlp
斯坦福大學(xué)在三月份開設(shè)了一門“深度學(xué)習(xí)與自然語(yǔ)言處理”的課程:CS224d: Deep Learning for Natural Language Processing,授課老師是青年才俊 Richard Socher,以下為相關(guān)的課程筆記。 第四講:詞窗口分類和神經(jīng)網(wǎng)絡(luò)(Word Window Classification and Neural Networks) 推薦閱讀材料:
  • [UFLDL tutorial]
  • [Learning Representations by Backpropogating Errors]
  • 第四講Slides [slides]
  • 第四講視頻 [video]
以下是第四講的相關(guān)筆記,主要參考自課程的slides,視頻和其他相關(guān)資料。
繼續(xù)閱讀 →
發(fā)表在 機(jī)器學(xué)習(xí), 深度學(xué)習(xí), 自然語(yǔ)言處理? ? ? ? | 標(biāo)簽為 Deep Learning, Deep Learning公開課, Deep NLP, DL, NER, Richard Socher, softmax, word vectors, word2vec, wordnet, 二元邏輯回歸, 人名識(shí)別, 公開課, 分類, 分類器, 前饋網(wǎng)絡(luò)記錄, 反向傳播算法, 命名實(shí)體識(shí)別, 回歸, 地名識(shí)別, 斯坦福大學(xué), 機(jī)器學(xué)習(xí), 梯度下降, 深度學(xué)習(xí), 深度學(xué)習(xí)與自然語(yǔ)言處理, 深度學(xué)習(xí)技術(shù), 深度學(xué)習(xí)模型, 神經(jīng)元, 神經(jīng)網(wǎng)絡(luò), 窗口向量, 窗口向量分類, 自然語(yǔ)義處理, 自然語(yǔ)言處理, 詞向量, 詞嵌入, 語(yǔ)義詞典, 邏輯回歸, 隨機(jī)梯度下降? ? ? ? | 3 條評(píng)論

出門問問宣布完成由Google投資的C輪融資,累計(jì)融資7500萬(wàn)美金發(fā)表于 2015年09月2號(hào)52nlp
注:出門問問是我們的老朋友,創(chuàng)始人李志飛也是NLP和機(jī)器翻譯領(lǐng)域的大牛,今天出門問問拿到了Google的C輪融資,志飛兄第一時(shí)間和我分享了這條新聞,太牛了。 人工智能創(chuàng)業(yè)公司出門問問(Mobvoi),于近日完成了由Google投資的C輪融資,累計(jì)融資7500萬(wàn)美金。現(xiàn)有投資方包括紅杉資本、真格基金,SIG海納亞洲、圓美光電、及歌爾聲學(xué)。此輪投資Google并不控股,出門問問團(tuán)隊(duì)依舊有絕對(duì)控制權(quán)。 此次由Google投資的C輪融資,能夠保證出門問問在人工智能領(lǐng)域長(zhǎng)期持續(xù)深耕,專注核心技術(shù)上的進(jìn)一步研發(fā),在可穿戴、車載以及機(jī)器人領(lǐng)域拓展新的人機(jī)交互產(chǎn)品形態(tài),更深入地完善用戶體驗(yàn),在吸引全球頂尖技術(shù)與商務(wù)人才上更具優(yōu)勢(shì)。對(duì)于海外市場(chǎng)的擴(kuò)展,此次融資也將發(fā)揮非常重要的作用。 Google 企業(yè)發(fā)展部副總裁Don Harrison 說到選擇投資出門問問的原因:“出門問問研發(fā)了非常獨(dú)特自成體系的語(yǔ)音識(shí)別與自然語(yǔ)言處理技術(shù)。我們被他們的創(chuàng)新科技與發(fā)展?jié)摿Υ騽?dòng),所以我們很迅速地決定用投資的方式幫助他們?cè)谖磥?lái)快速成長(zhǎng)。” 紅杉資本全球執(zhí)行合伙人沈南鵬評(píng)價(jià):“出門問問一直處于高速的不斷創(chuàng)新過程中,從移動(dòng)app到硬件產(chǎn)品到語(yǔ)音搜索平臺(tái),不同形式的產(chǎn)品背后是團(tuán)隊(duì)長(zhǎng)期以來(lái)形成的強(qiáng)大技術(shù)核心,獲得Google的投資是對(duì)這種中國(guó)原創(chuàng)能力的最好肯定。我很高興Google這樣的巨頭看好出門問問,并和我們一起投入到這支高速創(chuàng)新的團(tuán)隊(duì)中。” 真格基金創(chuàng)始人徐小平說:“我第一次遇見谷歌科學(xué)家李志飛博士,是三年前。那時(shí)候,他的語(yǔ)音搜索創(chuàng)業(yè)計(jì)劃,真是一個(gè)“異想天開”的夢(mèng)。志飛相信自己的夢(mèng),相信自己的技術(shù),相信市場(chǎng)對(duì)這個(gè)技術(shù)產(chǎn)品的需求,歷經(jīng)萬(wàn)難,終于“搜索”到了屬于他自己的那片天空。志飛的創(chuàng)業(yè)歷程,是又一個(gè)中國(guó)好故事,會(huì)激勵(lì)更多人追求并實(shí)現(xiàn)自己的好夢(mèng)。” 志同道合是此次融資達(dá)成的最重要的原因。扎實(shí)做技術(shù)和產(chǎn)品,運(yùn)用科技的力量改變?nèi)藗兊娜粘I?#xff0c;是出門問問一直篤信的價(jià)值觀。 出門問問CEO 李志飛表示:“引入Google的投資,不僅意味Google對(duì)于我們技術(shù)的認(rèn)可,更是源于雙方持有共同的價(jià)值觀,通過對(duì)人工智能技術(shù)的極致追求,打造毫不妥協(xié)的用戶體驗(yàn)。” 與Google相似,出門問問也是信仰“工程師文化”的團(tuán)隊(duì),強(qiáng)大的研發(fā)團(tuán)隊(duì)由Google前科學(xué)家、人工智能專家領(lǐng)銜,團(tuán)隊(duì)成員來(lái)自哈佛、MIT、斯坦福、劍橋、清華等名校名企。 此次融資是中國(guó)人工智能創(chuàng)業(yè)公司首次獲得像Google這樣的國(guó)際技術(shù)巨頭的投資與認(rèn)可。這在某種程度上說明,在人工智能領(lǐng)域,中國(guó)的創(chuàng)業(yè)公司不容小覷。
繼續(xù)閱讀 →

總結(jié)

以上是生活随笔為你收集整理的QA问答系统中的深度学习技术实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

天天综合天天综合 | 亚洲精品免费在线观看 | 人人插人人看 | 涩涩色亚洲一区 | 国产精品视频线看 | 欧洲精品亚洲精品 | 狠狠做深爱婷婷综合一区 | 成人免费一区二区三区在线观看 | 嫩草av影院 | 91久久黄色 | 成人av av在线| 日韩电影中文字幕 | 国产精品成人一区二区三区吃奶 | 免费欧美 | www.99在线观看 | 91精品一区二区在线观看 | 激情视频在线观看网址 | 在线观看中文字幕亚洲 | 婷婷在线播放 | 天天操天天操天天操天天 | 日韩欧在线 | 日韩在线视频二区 | 国产精品免费久久久久久久久久中文 | 精品极品在线 | 8x成人免费视频 | 精品国产美女 | 超级碰碰碰碰 | 国产原创在线观看 | 天天做天天爱天天综合网 | 中文字幕av有码 | 最近免费中文字幕mv在线视频3 | 久久精品久久精品 | 久久综合久久综合久久综合 | 国产黄色大片免费看 | 91女神的呻吟细腰翘臀美女 | www.少妇| 久久99免费 | 久久精品123 | 999视频在线播放 | 免费a视频在线观看 | 四虎免费在线观看视频 | 日韩av三区 | 日韩电影精品一区 | 久久精品视频国产 | 丁香五月缴情综合网 | 日韩一级片观看 | 日韩高清免费在线 | 免费在线观看一区 | 日韩在线免费小视频 | 91在线看| 日本不卡久久 | 99福利影院| 日黄网站 | 亚洲人人射 | 国产综合香蕉五月婷在线 | 日韩在线观看精品 | 亚洲精品国产区 | 干av在线| 久久激情小视频 | 天堂在线一区二区 | 国产亚洲婷婷 | 国产精品一区二区久久精品爱涩 | 精品久久一二三区 | 久久99精品国产99久久6尤 | 992tv在线| 九九热国产 | www178ccom视频在线 | 99精品久久久久 | 亚洲人人射 | 在线国产一区二区三区 | 国产成人一二片 | 狠狠狠操| 久久福利在线 | 成人日批视频 | 精品国内自产拍在线观看视频 | a视频免费| 中文字幕 在线看 | 99热在线这里只有精品 | 亚洲精品中文字幕视频 | 视频二区 | 国产精品一区二区久久 | 久久国产精品99国产精 | 欧美不卡视频在线 | 免费av免费观看 | 99视频一区二区 | 国产精品观看视频 | 欧美色图视频一区 | 国产精品乱码高清在线看 | 999国内精品永久免费视频 | 国产精品资源网 | 久久精品视频在线观看 | 久久精品99国产国产 | 国产成人av在线影院 | 久久视频在线观看免费 | 日韩精品视频免费看 | 日韩一区二区久久 | 在线视频精品 | 国产一区在线免费观看视频 | 日韩免费在线观看视频 | 四虎精品成人免费网站 | 美女视频黄,久久 | 国产91综合一区在线观看 | 在线免费黄色 | 精品视频资源站 | 国产精品一区二区吃奶在线观看 | 国产免费又粗又猛又爽 | 国产91丝袜在线播放动漫 | 免费看的黄色的网站 | 麻花豆传媒一二三产区 | 国产成人福利在线 | 91福利视频久久久久 | 国产视频2021 | 欧美大荫蒂xxx | 日韩精品免费在线 | 黄色视屏在线免费观看 | 国产 一区二区三区 在线 | 欧美人zozo| 99久久国产免费免费 | 成人性生爱a∨ | 九九在线精品视频 | 黄污视频大全 | 国产一区在线视频 | www.色五月.com| 成人a级大片 | 在线91精品| 国产999精品久久久久久 | 国产一级片视频 | 国产日产精品一区二区三区四区 | 欧美一级性生活 | 久久精品中文字幕少妇 | 国产视频一区二区三区在线 | 婷婷中文字幕 | 免费看黄视频 | 日韩视频1 | se视频网址| 91视频传媒 | 婷婷激情五月综合 | 波多野结衣网址 | 在线观看福利网站 | 色婷婷av一区 | 欧美日韩天堂 | 中文字幕在线视频国产 | 欧美91视频| 亚洲欧美成人在线 | 国产一卡在线 | 久久这里只精品 | 日本在线h| 天堂av在线网 | 久久美女免费视频 | 日韩电影在线观看一区二区 | 久要激情网 | a在线免费观看视频 | 欧美性黑人 | 韩国av免费在线 | 午夜精品av | 中文字幕人成不卡一区 | 天堂在线一区二区三区 | 日韩免费一区 | 国产一区二区综合 | 日本护士三级少妇三级999 | 日韩欧美xx | 成人午夜网 | 黄色在线观看污 | 国产高清精品在线 | 99精品在线观看视频 | 午夜视频一区二区三区 | 97碰视频 | 操操色| 亚洲精品国偷自产在线99热 | 99精品影视 | 一区二区三区四区五区六区 | 视频在线国产 | 五月天网站在线 | 精品在线一区二区三区 | 亚洲干视频在线观看 | 麻豆免费视频网站 | 国产高清综合 | 成年人视频在线 | 日本夜夜草视频网站 | 日日干天天射 | 日韩一区二区三区高清在线观看 | 国产精品一区在线观看 | 国产精品一区二区三区四区在线观看 | 8x8x在线观看视频 | 中文字幕在线看视频 | 色一色在线| 夜夜爽88888免费视频4848 | 亚洲精品456在线播放乱码 | 奇米四色影狠狠爱7777 | 亚洲一区二区观看 | 免费黄色在线网站 | 午夜狠狠操 | 香蕉视频免费在线播放 | 91香蕉视频在线 | 成人日批视频 | 精品国产成人av | 日本中文字幕在线播放 | 狠狠久久伊人 | av午夜电影 | 亚洲精品视频免费在线观看 | 国产在线久草 | 午夜丁香网| 国产精品女同一区二区三区久久夜 | 欧美激情综合五月色丁香小说 | 24小时日本在线www免费的 | 天天干,夜夜爽 | 黄色亚洲在线 | 91在线免费观看国产 | 免费观看性生交大片3 | 婷婷六月天综合 | 91av观看 | 久久国产精品免费视频 | 黄污网站在线观看 | 夜夜操网| 中文字幕亚洲综合久久五月天色无吗'' | 99久久日韩精品免费热麻豆美女 | 久久一线 | 欧美成人影音 | 国产精品久久久久久久久免费 | 色婷婷88av视频一二三区 | 欧美日韩国产二区三区 | 亚洲精品动漫久久久久 | 91精品视频观看 | 麻豆精品视频在线 | 日本久久中文字幕 | 久久人人添人人爽添人人88v | 久久九九影院 | 日韩一区在线播放 | 国产色黄网站 | 欧美在线观看视频一区二区三区 | 91字幕 | 日日夜夜精品 | 久久在现 | 国产一级在线视频 | 亚洲国产欧美在线人成大黄瓜 | 国产剧在线观看片 | 久久精品国产免费 | 99免费在线观看视频 | 免费黄在线看 | 美女免费视频一区二区 | 亚洲狠狠丁香婷婷综合久久久 | 在线免费看片 | 亚洲精品在线视频 | 精品嫩模福利一区二区蜜臀 | 亚洲天堂网站 | 91在线视频观看免费 | 黄色成人av| 欧美精品乱码久久久久 | 欧美在线观看视频 | 99精品国产一区二区 | 黄p在线播放 | 国产成人精品在线播放 | 免费aa大片 | 国产aa免费视频 | 亚洲乱码精品 | av天天草| 亚洲综合在线一区二区三区 | 91av资源在线 | 天天综合久久综合 | 国产玖玖在线 | 麻豆传媒在线免费看 | 成人免费在线播放 | 日本久久中文 | 久久综合五月 | 亚洲va天堂va欧美ⅴa在线 | 色综合天 | 久草在线视频首页 | 欧美激情片在线观看 | 国产精品久久久毛片 | 日日夜夜草 | 久久九九久久精品 | 91成人天堂久久成人 | 亚洲理论电影网 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产九色在线播放九色 | 69av视频在线观看 | 夜夜躁天天躁很躁波 | 国产三级国产精品国产专区50 | 人人看看人人 | 午夜久久福利视频 | 五月婷婷网站 | 国产999视频在线观看 | av大全在线免费观看 | 亚洲激情电影在线 | 美女视频黄免费 | 色国产精品一区在线观看 | 国产高清不卡在线 | 久久毛片视频 | 韩国在线一区 | 91传媒免费在线观看 | 激情综合色播五月 | 国产精品国产三级国产aⅴ9色 | avwww在线 | 久久国色夜色精品国产 | 美女黄濒 | 亚洲精品视频在线观看网站 | 亚av在线| 黄色性av| 亚洲国产中文字幕在线观看 | 天天做天天爱天天综合网 | 天天射天天色天天干 | 亚洲国产视频直播 | 天天干天天操天天拍 | 欧美极品xxxxx | 国产黄色片免费观看 | 国内精品久久久久久久久久清纯 | 美女性爽视频国产免费app | 国产日本亚洲高清 | 欧美性久久久久久 | 国产精品123 | 久久99欧美 | 天天操天天操一操 | 国产美女精彩久久 | 亚洲人xxx | 一区二区三区四区五区六区 | 97在线观看免费高清 | 久久精品一区二区三区中文字幕 | 波多野结衣一区二区三区中文字幕 | 国产成免费视频 | 五月天激情综合网 | 超碰在线观看97 | 婷婷五月情| 欧美日韩一区二区三区在线免费观看 | 99久久久国产精品美女 | 午夜视频免费在线观看 | 粉嫩一区二区三区粉嫩91 | 欧美日性视频 | 免费a网| 成人动漫一区二区 | 国产综合片| 欧美99热 | 五月婷婷激情网 | 欧美一级专区免费大片 | 国产视频手机在线 | 欧美资源在线观看 | 成人在线播放av | 亚洲黄色三级 | 日韩精品免费一线在线观看 | 久久久精品国产免费观看一区二区 | 综合色站导航 | 一区二区影视 | 免费在线观看黄色网 | 91cn国产在线| 色www永久免费 | 欧美日韩国产在线观看 | 色婷婷影视 | 国产亚洲久一区二区 | 有没有在线观看av | 91九色视频国产 | 福利电影一区二区 | avove黑丝 | 激情av一区二区 | 在线观看资源 | 日韩欧美高清一区二区 | 超碰精品在线观看 | 久久视频在线观看免费 | 激情综合色播五月 | 亚洲国产欧美在线人成大黄瓜 | 天天想夜夜操 | 婷婷六月天丁香 | 看国产黄色大片 | 国产色啪| 色多多视频在线 | 久久福利 | 精品国产精品久久一区免费式 | 久草视频精品 | 黄色av电影一级片 | 久久综合五月婷婷 | av福利免费 | 欧美巨大荫蒂茸毛毛人妖 | 欧美成人免费在线 | 亚洲精品456在线播放 | 午夜免费在线观看 | 最近2019中文免费高清视频观看www99 | 日韩精品在线免费观看 | 久久女教师 | 国产精久久久 | 久久久久久久久久影院 | 狠狠操电影网 | 国产麻豆视频在线观看 | 四虎成人精品在永久免费 | 成片人卡1卡2卡3手机免费看 | 国产精品久久久久久久免费观看 | 久久久午夜影院 | 日免费视频 | 91精品视频一区二区三区 | 日韩国产欧美视频 | 欧美极品xxxx | 亚洲第一香蕉视频 | 在线久热| 又爽又黄又刺激的视频 | 日韩久久久久久久久 | 91少妇精拍在线播放 | 91亚洲激情 | 日韩高清久久 | 国产青春久久久国产毛片 | 18久久久久| 在线有码中文 | 久久五月婷婷丁香 | 人人玩人人添人人澡97 | 国产精品久久久久999 | 色婷婷亚洲精品 | 992tv在线成人免费观看 | 91精品啪在线观看国产 | 国产操在线 | 精品一区电影国产 | 欧美日韩精品在线免费观看 | 国产又粗又长又硬免费视频 | h视频日本| 国产九色视频在线观看 | 国产玖玖精品视频 | 国产精品久久久一区二区三区网站 | 二区三区毛片 | 欧美成人在线免费观看 | 久热av| 黄色片网站免费 | 综合中文字幕 | 欧美三人交 | 亚洲一区二区视频在线播放 | 天天插天天爽 | 亚洲国产成人在线 | 国产成人一二三 | 国产精品一区电影 | 日韩国产精品久久 | 亚洲国产精品va在线看 | 日韩免费观看一区二区三区 | 亚州精品天堂中文字幕 | 久久久 精品 | 国产色综合天天综合网 | 精品一区二区免费在线观看 | 成人午夜电影免费在线观看 | 亚洲精品网站在线 | 黄色日视频 | 999久久久久久久久久久 | 免费特级黄色片 | 欧美精品第一 | 成人精品视频久久久久 | 久久电影网站中文字幕 | 国产精品12345 | 精品国产一区二区三区男人吃奶 | 欧美色噜噜 | 国内精品久久久久影院男同志 | 69国产成人综合久久精品欧美 | 日韩一二区在线 | 久久久天天操 | 久精品视频免费观看2 | a在线免费| 天操夜夜操 | 91精选在线| 国产高清一区二区 | 999日韩| 久久久久久美女 | 国产97色在线 | 国产福利网站 | 亚洲国内在线 | 国产 欧美 日产久久 | 色五月激情五月 | 高清久久久久久 | 欧美在线观看视频免费 | 在线观看香蕉视频 | 久久精彩免费视频 | 精品视频9999| 人人草人| 久久亚洲国产精品 | 四虎天堂 | 狠狠色丁香婷婷综合最新地址 | 在线观看一区视频 | 最新中文字幕在线观看视频 | 97色se| 最新av中文字幕 | 免费看国产一级片 | 国产精品久久久久久久久久久久午夜 | 少妇做爰k8经典 | 激情五月婷婷综合 | 亚洲免费在线 | 免费精品在线观看 | 日韩大片在线免费观看 | 日韩精品久久一区二区 | 9999精品 | 亚洲性视频 | 97人人澡人人添人人爽超碰 | 国产高清无av久久 | 91精品国产91久久久久久三级 | 久久香蕉国产精品麻豆粉嫩av | 免费成人在线视频网站 | 天天操天天爽天天干 | 在线免费黄 | 高清av在线免费观看 | 国产成人久久精品77777综合 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | av中文字幕日韩 | 99中文字幕 | 国产精品免费在线播放 | 日日日天天天 | 日韩理论电影在线观看 | 久久国产精品影视 | a级免费观看 | 激情综合网五月婷婷 | 欧美一级免费高清 | 国产一区不卡在线 | 成人av免费在线观看 | 国产123av | 五月视频| 在线观看的a站 | 亚洲国产成人精品电影在线观看 | 中文在线最新版天堂 | 久久福利影视 | 香蕉在线观看视频 | 正在播放国产一区 | 国产午夜精品一区二区三区欧美 | 成人av免费在线 | 一区二区三区久久精品 | 亚洲色图美腿丝袜 | 亚洲国产一区av | 免费美女久久99 | 国产免费作爱视频 | 黄污网站在线 | 国产精品 日韩精品 | 国内精品久久久久久久影视麻豆 | 亚洲精品国偷自产在线91正片 | 玖玖玖影院 | 亚洲婷婷在线 | 亚洲污视频 | 97av在线视频免费播放 | 最近最新mv字幕免费观看 | 久草视频中文在线 | 色欧美88888久久久久久影院 | 精品一区二区在线免费观看 | 精品美女在线视频 | 国产精品毛片一区视频 | 超碰人人99 | 精品女同一区二区三区在线观看 | 超碰在线亚洲 | 高清精品久久 | 精品国产区 | 久久久www | 久久精品一区二区三区四区 | 免费日韩高清 | 久久综合精品国产一区二区三区 | 日韩中文字幕国产 | 国产精品99页 | 亚洲三级黄色 | 日韩av一区二区在线影视 | 在线天堂中文在线资源网 | 99热这里只有精品在线观看 | 欧美特一级 | 成人一区二区三区中文字幕 | 成人国产一区 | 国产精品久久久久久a | 婷婷在线网站 | 亚洲精品美女久久久久 | 在线免费精品视频 | 日日狠狠 | 最近免费中文字幕mv在线视频3 | 国产91精品看黄网站 | 99久久久国产精品美女 | 手机在线看a | 精品专区 | 日韩在线中文字幕视频 | 天天综合导航 | 欧美日韩伦理在线 | 黄色免费视频在线观看 | 午夜精品久久久久久久久久久久久久 | 天天操操 | 日韩av在线小说 | 日韩视频一区二区在线观看 | 亚洲综合视频在线 | 亚洲三区在线 | 日日干日日操 | 亚洲人成人在线 | 天天曰天天爽 | 国产一区久久久 | 国产视频999 | 一区二区三区影院 | 国产91精品久久久久久 | 国产伦理久久精品久久久久_ | 中文有码在线 | 日日添夜夜添 | 国产二区视频在线 | 91视频传媒 | 日本中文在线观看 | 欧美日韩性视频在线 | 日韩高清不卡一区二区三区 | 亚洲国内在线 | 国产黄| 成年免费在线视频 | 日本精品一区二区在线观看 | 精品久久亚洲 | 99热99re6国产在线播放 | 激情动态 | 黄色网在线播放 | 天天操婷婷 | 日韩性片| 狠狠色2019综合网 | 狠狠干网 | 91免费在线播放 | 91精品一区二区三区蜜桃 | 国产一区二区久久精品 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 在线v| 久草精品资源 | 天天玩天天干 | 欧美在线视频一区二区三区 | 色综合夜色一区 | 欧美99热| 五月天色站 | 国产美腿白丝袜足在线av | 日韩欧美视频在线观看免费 | 五月婷婷开心中文字幕 | 久久艹国产 | 97国产| 久久免费高清 | 国产综合激情 | 成人午夜性影院 | 亚洲在线黄色 | 亚洲国产午夜精品 | 国产在线精品二区 | 狠狠色伊人亚洲综合成人 | 成年人精品 | 日韩网站免费观看 | av网址aaa| 亚洲国内精品 | 日韩av一区在线观看 | 99这里只有精品99 | 中文字幕黄色av | 色视频网站在线观看一=区 a视频免费在线观看 | 久久精品99久久 | 日本久久久久久 | 天天艹天天爽 | 91精品国产福利 | 4hu视频 | 日韩a级免费视频 | 日日夜夜操av | 欧美日韩二三区 | 狠狠躁夜夜躁人人爽超碰91 | 综合网中文字幕 | 五月激情在线 | 国产乱对白刺激视频在线观看女王 | 久久久久久久久久久网站 | 色播五月激情五月 | 操操操日日日 | av中文字幕不卡 | 日韩在线视频网址 | 中文字幕有码在线 | 三日本三级少妇三级99 | 久久99这里只有精品 | 亚洲国产精品成人av | 久色伊人 | 免费在线观看成人 | 婷婷网址| 亚洲精品久久久久999中文字幕 | 亚洲在线视频免费观看 | 天天射天天干 | 国产精品一区二区久久精品爱微奶 | 激情电影影院 | 99视频一区| 欧美国产大片 | 国产精品久久久久久久久免费 | 国产色婷婷精品综合在线手机播放 | 国产精品久久99精品毛片三a | 欧美日韩首页 | 97超碰在线免费观看 | 久久精国产 | 国产大尺度视频 | 欧美少妇xxx | 免费精品国产va自在自线 | 97人人爽人人 | 天天射天天干 | 四虎影视成人精品国库在线观看 | 99久久er热在这里只有精品15 | 国产精品免费视频久久久 | 狠狠色丁香婷婷综合 | 九九热免费视频在线观看 | 国产精品免费不 | 丁香六月婷婷开心 | 欧洲av在线 | 五月婷婷视频在线观看 | 日本黄色片一区二区 | 日本成人中文字幕在线观看 | 国产成人免费观看 | 婷婷精品 | 国产亚洲精品久久久久久移动网络 | 看片黄网站| 一区二区三区视频网站 | 成人一区二区在线观看 | 在线视频app | 国产精品嫩草55av | 国产精品视频区 | av九九| 色综合久久久久网 | 日韩羞羞 | 中文字幕在线观看视频一区二区三区 | 日韩在线电影 | 亚洲综合在线观看视频 | 91色欧美| www在线免费观看 | 亚洲精品国产综合99久久夜夜嗨 | 国产精品久久久久av | 久久五月天综合 | 久久精品视频网站 | 国产高清免费在线播放 | 成年人免费在线播放 | 日本巨乳在线 | 人人射网站| 天天操天天爱天天干 | 久久久久久久久久久久久影院 | 成人免费在线观看电影 | 国产在线 一区二区三区 | 波多野结衣理论片 | 欧美日韩国产一二 | 久草在线观看视频免费 | 国产在线观看 | 久久久久久综合网天天 | 日本久久久久久久久 | 婷婷丁香在线观看 | 日韩精品一区二区在线观看视频 | 午夜影院一级片 | 婷婷综合导航 | 91精品国自产拍天天拍 | 国产精品9区 | 91麻豆免费版 | 2019中文在线观看 | 亚洲精品视频在线观看免费视频 | 91麻豆看国产在线紧急地址 | 亚洲人毛片 | 久久好看免费视频 | 国产婷婷| 日韩欧美视频免费观看 | 在线播放 日韩专区 | 欧美欧美 | 日韩在线视 | 免费在线观看亚洲视频 | 2021久久| 天天色综合久久 | 久色网| 国产亚洲免费的视频看 | 国产精品久久久久久久久婷婷 | 91精品国自产在线偷拍蜜桃 | 国产成人a亚洲精品 | 日韩网站在线免费观看 | 999久久久免费精品国产 | 国内精品久久久久久久久久 | 在线观看久久 | av在线看网站 | 丁香婷婷成人 | 成人av影视| 人人搞人人搞 | 在线综合 亚洲 欧美在线视频 | 一区二区三区在线视频111 | 精品国产区 | 日韩高清一二区 | 精品亚洲二区 | 97超碰超碰久久福利超碰 | 日韩大片在线免费观看 | 国产精品毛片一区视频播 | 免费国产在线视频 | 天天操天天谢 | 毛片区 | 精品一二三四五区 | 成人在线观看影院 | 亚洲激情网站免费观看 | 欧美一级在线看 | 免费高清在线一区 | 免费大片av| 婷婷激情五月综合 | www.888av| 日韩成人免费在线观看 | 国产无限资源在线观看 | 综合铜03| 91视频 - 88av | 在线国产91 | 久久一本综合 | 亚洲精品在线国产 | 成人动漫视频在线 | 国产视频精品久久 | 久久不射影院 | 激情综合久久 | 亚洲最大在线视频 | 免费男女羞羞的视频网站中文字幕 | 香蕉免费在线 | 中文字幕久久精品亚洲乱码 | 亚洲色图 校园春色 | 就要干b| 视频在线日韩 | 在线观看av黄色 | 人人舔人人插 | 国产麻豆视频在线观看 | 日韩电影一区二区三区在线观看 | 国产成人一区二区三区电影 | 在线看一级片 | 99在线视频网站 | 国产又粗又猛又黄 | www.色com | 97视频精品 | 亚洲三级精品 | 日韩在线播放欧美字幕 | 久久精品视频观看 | 中文字幕色网站 | 高清视频一区二区三区 | 亚洲精品2区 | 日韩在线观看网址 | 91亚洲国产 | 国产男女无遮挡猛进猛出在线观看 | 成人一区在线观看 | 黄色三级在线看 | 五月激情姐姐 | 国内综合精品午夜久久资源 | 国产精品国产三级国产不产一地 | 欧美一二区视频 | 国产福利在线免费 | 91九色蝌蚪视频 | 色橹橹欧美在线观看视频高清 | 97超碰精品| 久久久国产一区二区三区四区小说 | 国产二区av| 日韩欧美高清视频在线观看 | 97免费| 91麻豆精品国产91久久久无限制版 | 国产精品毛片一区二区 | www.色的| 天天亚洲综合 | 国产在线a视频 | 四虎免费在线观看视频 | 啪嗒啪嗒免费观看完整版 | 在线免费亚洲 | 亚洲三级在线免费观看 | 国产一级电影在线 | 98久久 | 国产精品久久久久久久久久久不卡 | 国产在线播放一区二区 | 久久激情视频 | 97人人视频| 特级毛片在线观看 | 日日夜夜天天 | 中文字幕国产视频 | 天天插狠狠干 | 国产精品99久久久久久小说 | 91桃色在线播放 | 96精品高清视频在线观看软件特色 | 中文字幕av一区二区三区四区 | 国产亚洲一区二区三区 | 日韩免费视频在线观看 | 成人91av | 在线国产一区二区三区 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 狠狠色噜噜狠狠狠狠2022 | 中文字幕乱码在线播放 | 丁香婷婷激情国产高清秒播 | 人人要人人澡人人爽人人dvd | 成人久久久久久久久久 | 我要看黄色一级片 | 韩国视频一区二区三区 | 天天色天天射天天操 | 中文字幕色婷婷在线视频 | 久久久久久久久久网站 | 中文字幕免费高 | 日韩欧美一区二区在线 | 精品国产免费人成在线观看 | 日韩免费久久 | 97看片 | 91九色最新地址 | 国产伦精品一区二区三区免费 | 成人av资源网 | 99热精品久久 | 久久一区二 | 91在线精品一区二区 | 玖玖在线免费视频 | 91福利影院在线观看 | 中文高清av | 精品国产精品一区二区夜夜嗨 | 亚洲一级片免费观看 | 天堂av影院 | 国产在线1区 | 国产综合在线观看视频 | 精品一区二区在线免费观看 | 在线激情网 | 久久国内精品99久久6app | 久久久精品免费看 | 91毛片在线观看 | 草久久久久 | 国产精品久久久 | 少妇自拍av | 亚洲精品网站 | 成年人精品 | 欧美在线观看视频一区二区 | 亚洲成人精品av | 免费三级影片 | 最近中文字幕免费观看 | 少妇av网 | 96国产精品视频 | 在线一二三区 | 人人干人人超 | 麻豆91网站| 在线观看亚洲精品 | av免费网站观看 | 美女免费视频观看网站 | 色婷婷久久 | av在线影视 | 久久精视频| 久久精品欧美 | 91大神精品视频在线观看 | 精品国产伦一区二区三区观看方式 | 免费看片网页 | 福利一区二区三区四区 | 色欧美成人精品a∨在线观看 | 久久九九精品久久 | 日韩a在线 | 亚洲狠狠婷婷 | 国产高清在线免费 | 国产网站av | 日韩av视屏在线观看 | 国产一级黄色片免费看 | 亚州av免费 | 日韩电影一区二区三区在线观看 | 亚洲香蕉视频 | 天堂av在线中文在线 | 成人黄色小视频 | 97在线观看视频 | 久久精品麻豆 | 免费看污污视频的网站 | 久草视频在线资源 | 久久久国产一区 | 最近免费观看的电影完整版 | 亚洲一区二区高潮无套美女 | 97福利视频 | 片黄色毛片黄色毛片 | 国产精品美女久久久网av | 操操操人人人 | 天天爽人人爽 | avsex| 99久久精品电影 | 久久久久久国产精品美女 | 久久精品视频在线免费观看 | 在线日韩精品视频 | 中文字幕高清有码 | 成人av一区二区兰花在线播放 | 久久99深爱久久99精品 | 国产夫妻自拍av | 能在线观看的日韩av | 日韩免费av在线 | 久久久噜噜噜久久久 | 亚洲国产成人精品在线观看 | 久久久久久久久久网站 | 久久欧美视频 | 亚洲成aⅴ人片久久青草影院 | 国产老太婆免费交性大片 | 久久精品亚洲 | 国产一区二区三区免费观看视频 | 九色porny真实丨国产18 | 国产精品麻豆欧美日韩ww | 日批视频在线 | 中文字幕欧美三区 | a视频在线观看 | 国产高清成人 | 国产精品一区二区在线看 | 在线观看一区 | 久久国产成人午夜av影院潦草 | 国内外成人在线 | 蜜臀久久99精品久久久无需会员 | 亚洲一区二区精品 | 婷婷av网| 91香蕉视频在线下载 | av一区二区在线观看中文字幕 | 中文字幕在线观看第一区 | 黄av资源 | 四虎在线免费视频 | 99在线免费观看视频 | 成人久久影院 | www.精选视频.com | 91网页版在线观看 | 香蕉视频在线看 | 久久亚洲综合国产精品99麻豆的功能介绍 | 中文字幕免费观看 | 午夜精品福利一区二区三区蜜桃 | 国产精品69久久久久 | 免费三级骚 | 久久久999精品视频 国产美女免费观看 | 亚洲电影自拍 | 麻豆国产露脸在线观看 | 色欧美成人精品a∨在线观看 | 欧洲av在线 | 99视频久| 日韩在线在线 | 久久久在线视频 | 日本精品一区二区在线观看 | 国产精品精品国产 | 蜜臀久久99精品久久久酒店新书 | 国产一级片直播 | 日韩美av在线 | 久久久www成人免费毛片麻豆 | 丁香午夜婷婷 | 人人澡人人添人人爽一区二区 | 五月婷婷视频在线观看 | 久草在线视频中文 | 西西人体4444www高清视频 | 久久精品毛片基地 | 国产精品久久久网站 | 麻豆免费在线视频 |