• embedding 벡터를 합치기 위해서는 np.zeros()를 통해 초기화를 진행하고
  • 초기화된 embed에 누적해서 벡터의 값을 더해주고
  • 마지막으로 합치는 벡터의 개수로 나눠준다.
def agg_embed(terms):
  embed = np.zeros(128) 
  for term in terms: 
      embed += np.array(term['embedding'])
  embed /= len(terms)
  return embed

sentence embedding을 얻었다면, 두개의 유사도를 계산하기 위해서는 cosine similarity를 이용해서 계산을 해야한다.

pandas에서 udf를 통해 계산하는 방법은 아래와 같다.
keywordcontext에는 문자열이 들어가면 된다.

ex: keyword: 안녕, context: 잘가요. 멀리 안가요


import numpy as np
from scipy import spatial

def sim(x, y): 
  embed1 = get_embed(x)  
  embed2 = get_embed(y) 
  return 1 - spatial.distance.cosine(embed1, embed2)

def sim_udf(x): 
  sim_value = sim(x['keyword'], x['context'])  
  return sim_value 


df['cosim'] = df.apply(sim_udf, axis=1)

+ Recent posts