重磅︱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
還在研究中,後續加更...
——————————————————————————————————————
參考文獻: