1. 程式人生 > >中文自然語言處理向量合集(字向量,拼音向量,詞向量,詞性向量,依存關係向量)

中文自然語言處理向量合集(字向量,拼音向量,詞向量,詞性向量,依存關係向量)

ChineseEmbedding

Chinese Embedding collection incling token ,postag ,pinyin,dependency,word embedding.中文自然語言處理向量合集,包括字向量,拼音向量,詞向量,詞性向量,依存關係向量.共5種類型的向量.
專案地址:https://github.com/liuhuanyong

專案簡介

目前不同於one-hot表示的稠密向量在常見的NLP任務中運用的越來越廣,而目前開源的向量資源還比較單一,只有中文和其他語言的詞向量.本專案想彌補這一缺陷.

本專案認為

1,NLP中的各種語言單元形態都可以進行向量表示.
2,稠密低維的向量較one-hot這種sparse向量更具備語義資訊.
3,中文資訊處理中可以進行詞向量表示的語言單位包括:

  1. 字元(單個漢字)
  2. 詞語(詞或片語)
  3. 漢語拼音
  4. 漢語詞性
  5. 漢語詞語之間的依存關係

本專案要完成的任務

運用詞向量建模方法,分別完成以上5種形態的詞向量訓練, 並檢驗效果.

訓練語料

本專案將使用中文維基百科(zhiwiki)作為訓練語料來源.

訓練方法

  1. 基於skigram的方法
    對字向量,拼音向量,詞向量,詞性向量採用此類方法,分別設定詞向量的維度及其他超引數
  2. 基於上下文共現與PCA降維的方法
    對依存向量採用此類方法

測試方法

本測試較為簡單,直接使用語義最近的語言單元作為檢驗

程式碼目錄

train_vector.py: 向量訓練指令碼
test_vector.py: 向量測試指令碼

結果展示

向量名稱 向量含義 詞數 維度 例子
de_vec_10 依存關係向量 13 10 SBV, ATT
pinyin_vec_300 漢語拼音向量 146242 300 ni, hao
postag_vec_30 漢語詞性向量 59 300 n,v,a,d
token_vec_300 漢語字向量 20029 300 劉,煥,勇
word_vec_300 漢語詞向量 673266 300 劉煥勇

向量測試

    ***********************字元向量************************
    token:劉
    ('李', 0.7306396961212158),('陳', 0.7201231122016907)
    ('趙', 0.6974461674690247),('楊', 0.6972213983535767)
    ('吳', 0.6851627230644226),('徐', 0.6516467332839966)
    ('郭', 0.6499480605125427),('蔡', 0.6175302267074585)
    ('鄭', 0.6092196106910706),('孫', 0.5950524210929871)
    token:醜
    ('卯', 0.6074919700622559),('酉', 0.5910211801528931)
    ('巳', 0.5581363439559937),('戌', 0.43932047486305237)
    ('戊', 0.41449615359306335),('壬', 0.40456631779670715)
    ('謤', 0.367109090089798),('緋', 0.3643313944339752),
    ('寅', 0.36351141333580017),('旽', 0.3549465537071228)

    ***********************依存向量************************
    dependency rel:ATT
    ('COO', 0.14239487051963806),('ADV', -0.16987691819667816)
    ('RAD', -0.2357601821422577),('HED', -0.2401314228773117)
    ('SBV', -0.25625932216644287),('WP', -0.27165737748146057)
    ('LAD', -0.2902592420578003),('POB', -0.2990782558917999)
    ('VOB', -0.37553706765174866),('IOB', -0.6669262647628784)
    dependency rel:POB
    ('IOB', 0.16698899865150452),('DBL', 0.16678886115550995)
    ('FOB', 0.1657436639070511),('CMP', 0.14784857630729675)
    ('VOB', 0.1461176574230194),('SBV', 0.08011472970247269)
    ('LAD', -0.022307466715574265),('WP', -0.022942926734685898)
    ('HED', -0.037264980375766754),('RAD', -0.042251598089933395)

    ***********************拼音向量************************
    pinyin:wo
    ('shei', 0.6129732131958008)('ta', 0.6081706285476685)
    ('nin', 0.5819231867790222),('!', 0.5435523986816406)
    ('……', 0.48428624868392944),('ai', 0.47832390666007996)
    ('o', 0.4761071801185608),('。』', 0.4598163366317749)
    ('...', 0.45207729935646057),('ni', 0.44975683093070984)
    pinyin:guo
    ('dang', 0.3908974528312683),('yuan', 0.378823846578598)
    ('zu', 0.35387369990348816),('hua', 0.3405681848526001)
    ('zheng', 0.3355437219142914),('yi', 0.3333034813404083)
    ('ren', 0.3194104731082916),('jun', 0.3187354505062103)
    ('hui', 0.31342023611068726),('xin', 0.3096797466278076)

    ***********************詞性向量************************
    word postag:a
    ('d', 0.7203904986381531),('c', 0.6124969720840454)
    ('v', 0.4963228106498718),('an', 0.4531499147415161)
    ('uz', 0.4459834396839142),('ud', 0.42059916257858276)
    ('r', 0.4090540111064911),('uj', 0.4061364233493805)
    ('i', 0.38707998394966125),('l', 0.3551557660102844)
    word postag:n
    ('b', 0.7030695676803589),('vn', 0.490166038274765)
    ('p', 0.4858315885066986),('v', 0.4499088227748871)
    ('nt', 0.44155171513557434),('f', 0.26609259843826294)
    ('s', 0.2639649212360382),('l', 0.24365971982479095)
    ('ns', 0.2278469204902649),('m', 0.202927365899086)
    ***********************詞向量************************
    word:愛情
    ('愛戀', 0.6931096315383911),('真愛', 0.6897798776626587)
    ('婚姻', 0.6540514826774597),('浪漫愛情', 0.6535360813140869)
    ('情感', 0.6501022577285767),('感情', 0.6403399705886841)
    ('純愛', 0.6394841074943542),('愛情故事', 0.6282097101211548)
    ('校園愛情', 0.6078493595123291),('情愛', 0.5976818799972534)
    word:創新
    ('技術創新', 0.7648976445198059),('不斷創新', 0.7172579765319824)
    ('創新型', 0.6573833227157593),('創新能力', 0.6533682942390442)
    ('創新性', 0.6160774827003479),('革新', 0.6159394383430481)
    ('人才培養', 0.6093565821647644),('開拓創新', 0.6015594601631165)
    ('探索', 0.5987343788146973),('技術革新', 0.5949685573577881)

總結

1,本專案完成了中文五種語言單位的向量訓練.
2,從以上可以看出,詞和字向量的效果看起來還不錯.
3,依存向量,依存向量中可以看出,ATT作為定中關係,在依存關係中屬於定中結構,COO(聯合),ADV(狀中)的相似度要比主謂SBV,動賓VOB的相似度要高.另外,作為介賓的POB,相似的有IOB,DBL,FOB,這些關係均與賓語成分相關.
4,拼音向量,從wo,guo的拼音相似拼音來看,我們可以看到,這種相似的拼音更像是一種搭配,很有意思.(詞性參照jieba分詞詞性對照表)
5,詞性向量,從a,n的相似詞性來看,也似乎更像是一種搭配現象,或許有更好的解釋…
4,總之,向量效能的好壞,需要在實際的NLP任務中運用檢驗,這個是後續需要進行的工作.

If any question about the project or me ,see https://liuhuanyong.github.io/