ML: Готовые векторы Embedding


Glove для английского языка

Для английского языка можно загрузить готовые векторизации слов c различными размерностями E_DIM = E, например Glove. Файл Glove это обычный текстовый файл, загрузка которого имеет вид:

vec = {}
with open('glove.6B.100d.txt', "r", encoding='utf-8') as file:
    for line in file:
        values = line.split()
        vec[ values[0] ] = np.asarray(values[1:], dtype='float32')
Этот файл содержит 400000 слов, отсортированных по частоте. Первые 100 приведены ниже (разделены чертой):
   |the|,|.|of|to|and|in|a|"|'s|for|-|that|on|is|was|said|with|he|as|it|by|at|(|)|from|his|''|
   |``|an|be|has|are|have|but|were|not|this|who|they|had|i|which|will|their|:|or|its|one|after|
   |new|been|also|we|would|two|more|'|first|about|up|when|year|there|all|--|out|she|other|
   |people|n't|her|percent|than|over|into|last|some|government|time|$|you|years|if|no|world|
   |can|three|do|;|president|only|state|million|could|us|most|_|against|u.s.|

Векторы более частых слов имеют большую длину, чем редкие слова (гистограммы по первым и последним 5000 словам):

Если рассматривать частые и редкие слова по отдельности, то расстояние np.linalg.norm(v1-v2) между векторами убывает с ростом косинуса угла между ними (ниже по 1000 словам и объединённая картинка для частых и редких слов):

В этом смысле особой разницы между этими двумя метриками нет. Ниже приведены ближайшие соседи к данному слову по косинусной метрике $1-\cos(\mathbf{v}_1,\mathbf{v}_2)$, значение которой указано в скобках:

   man:                boy               book              ball               pen             
   woman  (.17)        girl   (.08)      books    (.15)    kick   (.23)       pencil   (.39)
   boy    (.21)        man    (.21)      novel    (.18)    throw  (.26)       pens     (.40)
   one    (.22)        kid    (.22)      published(.20)    balls  (.27)       ballpoint(.40)
   person (.25)        woman  (.23)      story    (.21)    off    (.27)       pens     (.40)             
   another(.25)        boys   (.24)      author   (.21)    pitch  (.28)                     
   old    (.26)        child  (.25)      wrote    (.21)    bounced(.30)                     

   france              paris             monday             january           physics  
   belgium    (.19)    france    (.25)   tuesday  (.01)    december (.01)     chemistry   (.15)
   french     (.20)    london    (.27)   thursday (.01)    october  (.01)     mathematics (.17)
   britain    (.20)    brussels  (.30)   wednesday(.01)    february (.01)     science     (.21)
   spain      (.24)    french    (.31)   friday   (.01)    november (.01)     biology     (.21)
   paris      (.25)    rome      (.31)   saturday (.08)    september(.02)     theoretical (.27)
   germany    (.27)    amsterdam (.32)   sunday   (.08)    june     (.02)     astronomy   (.28)
   italy      (.28)    vienna    (.34)   week     (.11)    august   (.02)     sciences    (.28)
   europe     (.29)    berlin    (.34)   earlier  (.15)    july     (.02)     biochemistry(.29)
   netherlands(.29)    madrid    (.37)   afternoon(.16)    april    (.03)     mathematical(.29)
   luxembourg (.32)    strasbourg(.37)   month    (.16)    march    (.04)     astrophysics(.31)

   red                 small             hot               sweet              good 
   yellow(.14)         large  (.07)      cool (.23)        delicious(.30)     better(.11)
   blue  (.16)         larger (.17)      cold (.27)        flavor   (.32)     sure  (.17)
   green (.18)         smaller(.17)      warm (.30)        salty    (.34)     really(.17)
   black (.23)         tiny   (.18)      heat (.32)        taste    (.34)     kind  (.17)
   white (.23)         few    (.23)      soft (.34)        honey    (.35)     very  (.17)
   purple(.23)         well   (.26)      dry  (.34)        spicy    (.35)     we    (.18)

   go                  run               give              say                think   
   going (.06)         running(.20)      take   (.12)      believe(.10)       know  (.08) 
   come  (.07)         runs   (.23)      make   (.13)      why    (.13)       really(.09) 
   get   (.12)         ran    (.25)      giving (.14)      n't    (.13)       why   (.09) 
   'll   (.12)         out    (.26)      put    (.16)      want   (.14)       n't   (.09) 
   do    (.13)         go     (.27)      get    (.18)      know   (.14)       we    (.10) 
   take  (.13)         third  (.27)      enough (.18)      what   (.14)       sure  (.11) 
   you   (.14)         allowed(.28)      want   (.18)      not    (.15)       're   (.11)
   n't   (.14)         first  (.28)      to     (.19)      might  (.15)       maybe (.12)
   want  (.14)         second (.28)      need   (.19)      did    (.15)       i     (.12)
   let   (.14)         start  (.28)      gives  (.19)      think  (.16)       you   (.12)

Забавные соседи:

   apple       ~  microsoft(.26), ibm (.32),  intel(.32),      software(.32),    dell (.33)
   blackberry  ~  iphone(.28),    ipad(.30),  smartphone(.32), smartphones(.35)

Векторное пространство содержит в себе некоторые семантические направления, приводящие к следующей арифметики с векторами:

   man   - woman  + girl  ~ boy    (.11), man (.16), girl  (0.17), kid    (.22), boys  (.28)
   woman - man    + boy   ~ girl   (.09), boy (.14), woman (0.16), mother (.23), child (.25)
   uk    - london + paris ~ france (.28), uk  (.33)

fastText