1. 程式人生 > >重磅︱R+NLP:text2vec包——New 文字分析生態系統 No.1(一,簡介)

重磅︱R+NLP:text2vec包——New 文字分析生態系統 No.1(一,簡介)

每每以為攀得眾山小,可、每每又切實來到起點,大牛們,緩緩腳步來俺筆記葩分享一下吧,please~

———————————————————————————


      詞向量的表示主流的有兩種方式,一種當然是耳熟能詳的google的word2vec,還有一類就是GloVe。那麼前面一類有三個開源的包,後面這一類我倒是看到得不多,恰好是在我關注了許久的一個包裡面有,它就是text2vec啦。該包提供了一個強大API介面,能夠很好地處理文字資訊。


       本包是由C++寫的,流處理器可以讓記憶體得到更好的利用,一些地方是用RcppParallel包進行並行化加乘,同時相容各個系統的伺服器。如果沒有並行的地方,大家也可以自己用foreach包來自己加速。



        這個生態系統也是筆者見到過的,R語言裡面最好、最全面的包了,包含了很多型別的演算法以及成熟的應用。而且包的介紹十分詳盡,很棒!!

      系列文章:


————————————————————————————————


該包的四大功能


      1、快速文字表達方式。文件可以以多種方式表達,單獨片語、n-grams、特徵hashing化的方法等。


      2、GloVe詞向量表達


      3、LDA主題模型,LDA(latent dirichlet allocation)、LSA(latent sematic analysis),那麼這個就是繼lda、topicmodels兩大包之後,第三個有主題模型功能的包啦~前面兩個包可以參考我的另外部落格:


      4、距離計算。cosine距離、jaccard距離、Relaxed word mover's distance(在最近的Kaggle比賽中很有效)、Euclidean距離。


————————————————————————————————————

      一、快速文字表達

      文件可以以多種方式表達,單獨片語、n-grams、特徵hashing化的方法等。
      一般來說文字分析的步驟有以下三個步驟:
1、第一步:把內容表達成為文件-片語矩陣(document-term矩陣,DTM)或者片語共現矩陣(term-co-occurrence矩陣,TCM),換言之第一步就是在文件之上創造一個詞條地圖。
2、第二步:找個模型在DTM上進行擬合,有LDA、文字分類等
3、第三步:在驗證集上進行驗證


————————————————————————————————

      二、GloVe詞向量表達


       在Tomas Mikolov等人開發了word2vec詞向量表達工具之後,一大批衍生方法由此崛起與發展,其中一種斯坦福大學的GloVe(Global Vectors for word representation)就是一篇非常好的文獻。
      主要是在詞語共現矩陣下因式分解。經過程式碼優化GloVe效能提高了2-3倍,是通過單精度浮點運算。

————————————————————————————————————————

      三、LDA主題模型


      LDA主題模型是基於lda包開發的(Jonathan Chang),在下次釋出的時候該主題模型的引擎就會嵌入到lda包之中,目前text2vec開發模型要比lda快2倍,比topicmodels包快10倍。LSA模型是基於irlab包。

——————————————————————————————————————

      四、距離計算

  • Cosine
  • Jaccard
  • Relaxed Word Mover's Distance
  • Euclidean


還在研究中,後續加更...

——————————————————————————————————————

參考文獻: