Python 주제 분석


수강중

12. LSA를 이용해 단어의 의미를 분석하기

데이터를 불러온다.

import joblib
svd = joblib.load('svd.pkl')
data = joblib.load('plot.pkl')
locals().update(data)

svd.components의 크기를 확인한다.

svd.components_.shape
(5, 2000)

행렬을 전치(transpose)한다.

word_emb = svd.components_.T
word_emb.shape
(2000, 5)

저장한다.

joblib.dump(word_emb, 'lsa-word.pkl')
['lsa-word.pkl']

단어 목록을 추출한다.

words = cv.get_feature_names()

family라는 단어의 번호를 확인한다.

i = words.index('family')
i
630

money의 각 주제에 대한 가중치를 확인한다.

word_emb[i]
array([ 0.08831593, -0.02631816, -0.01598046, -0.01320908, -0.02996659])

단어 money에 해당하는 인덱스를 추출합니다.

word_emb[i]
array([ 0.12737184, -0.03200231, -0.04985805, -0.12810706,  0.21551478])

단어간 코사인 유사도를 구한다.

from  sklearn.metrics.pairwise import cosine_similarity
sim = cosine_similarity(word_emb, word_emb)

family와 유사도가 높은 단어를 출력한다.

import numpy as np

rank = np.argsort(sim[i])
for j in rank[-6:-1]:
    print(words[j])
father
daughters
happiness
married
proposal