<jupyter_start><jupyter_text>Word Embedding텍스트를 구성하는 하나의 단어를 수치화하는 방법의 일종BOW - 단어 하나에 인덱스 정수 할당Word Embedding - 하나의 단어를 실수 벡터로 나타냄 - 각 단어 벡터를 합치거나 더하는 방식으로 전체 문서의 벡터 표현을 구할 수 있음  http://www-personal.umich.edu/~ronxin/pdf/w2vexp.pdf  Feed-Forward 신경망 언어 모형1. V개의 단어를 가지는 단어장이 있을 때, 1. 단어를 BOW 방식으로 크기 V인 벡터로 만든 다음 1. 하나의 은닉층을 가지는 신경망을 사용하여1. 특정 단어 열(sequence)이 주어졌을 때1. 다음에 나올 단어를 예측 $$h = \sigma(W x)$$1. 입력 $x$가 들어가면 가중치 행렬 $W$이 곱해져서 은닉층 벡터$h$1. $x$는 one-hot-encoding 된 값으로, $h$벡터는 입력 가중치 행렬$W$의 행 하나 $w_i$에 대응$w_i$벡터 값을 분산 표현, 벡터 표현, 또는 Word embedding 이라고 한다.<jupyter_code>from nltk.corpus import movie_reviews
sentences = [list(s) for s in movie_reviews.sents()]
sentences[0]
from gensim.models.word2vec import Word2Vec
%%time
model = Word2Vec(sentences)
model.init_sims(replace=True)
model.wv.similarity('actor', 'actress')
model.wv.similarity('he', 'she')
model.wv.similarity('actor', 'she')
model.wv.most_similar("devil")
model.wv.most_similar("civil")<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12753036437246965, 'fraction_numerical': 0.012145748987854251, 'mean_word_length': 4.683908045977011, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '664016', 'license': 'MIT', 'n_tokens_mistral': 648, 'n_tokens_neox': 756, 'n_words': 127, 'path': 'Past/DSS/NLP/5.Word_embedding_word2vec.ipynb', 'repo_name': 'Moons08/TIL', 'size': '988'}