단어 벡터와 spaCy

spaCy로 배우는 자연어 처리

Azadeh Mobasher

Principal Data Scientist

단어 벡터 시각화

  • 단어 벡터는 단어가 어떻게 군집되는지 이해하게 합니다

 

예시 단어 벡터

  • 주성분분석(PCA)은 단어 벡터를 2차원 공간으로 사영합니다

 

단어 벡터 시각화

spaCy로 배우는 자연어 처리

단어 벡터 시각화

  • 필요한 라이브러리와 spaCy 모델을 불러옵니다.
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
import numpy as np

nlp = spacy.load("en_core_web_md")
  • 지정한 단어 목록의 벡터를 추출해 세로로 쌓습니다.
words = ["wonderful", "horrible", 
           "apple", "banana", "orange", "watermelon", 
           "dog", "cat"]
word_vectors = np.vstack([nlp.vocab.vectors[nlp.vocab.strings[w]] for w in words])
spaCy로 배우는 자연어 처리

단어 벡터 시각화

  • PCA로 두 개의 주성분을 추출합니다.
pca = PCA(n_components=2)
word_vectors_transformed = pca.fit_transform(word_vectors)

 

  • 변환된 벡터의 산점도를 그립니다.
plt.figure(figsize=(10, 8))
plt.scatter(word_vectors_transformed[:, 0], word_vectors_transformed[:, 1])

for word, coord in zip(words, word_vectors_transformed): x, y = coord plt.text(x, y, word, size=10) plt.show()
spaCy로 배우는 자연어 처리

유추와 벡터 연산

  • 단어 쌍의 의미적 관계.
  • 워드 임베딩은 성별, 시제 등의 유추를 생성합니다:
    • queen - woman + man = king

유추와 벡터 연산

spaCy로 배우는 자연어 처리

어휘 내 유사 단어

  • spaCy로 주어진 단어와 의미상 유사한 단어를 찾습니다
import numpy as np
import spacy
nlp = spacy.load("en_core_web_md")

word = "covid"

most_similar_words = nlp.vocab.vectors.most_similar( np.asarray([nlp.vocab.vectors[nlp.vocab.strings[word]]]), n=5) words = [nlp.vocab.strings[w] for w in most_similar_words[0][0]] print(words)
>>> ['Covi', 'CoVid', 'Covici', 'COVID-19', 'corona']
spaCy로 배우는 자연어 처리

연습해 봅시다!

spaCy로 배우는 자연어 처리

Preparing Video For Download...