Sentiment Analysis

주제무·2022년 6월 6일
0

Ex

목록 보기
2/3

이걸 못피했네

Sentiment Analysis

Padding

tf.keras.preprocessing.sequence.pad_sequences(inputs,
value=word_to_index['<PAD>'],
padding='post', maxlen=5) # return sequence padded

학습시키기 전에 train data, test data 모두 반드시 처리

Max length of words

표준정규분포표를 활용하자
https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80%EC%A0%95%EA%B7%9C%EB%B6%84%ED%8F%AC%ED%91%9C

데이터가 표준정규분포를 따르지 않을 것이지만, 비율을 결정할 때 수치상의 도움을 줄 수 있다.

Post, Pre

padding = 'post' or 'pre'

일반적으로 pre가 성능이 좋은 것으로 알려져있다.

가장 마지막 입력이 큰 영향을 미치는데 이 값이 의미없는 패딩값보다는 의미 있는 값으로 되어야 한다.

Embedding

# vocab_size; the number of vocabulary in a dictionary
vocab_size = len(word_to_index)

# a dimension by which words represent vector shape
# in other words, we express the words into digits
word_vector_dim = 4 

tf.keras.layers.Embedding(input_dim=vocab_size, output_dim=word_vector_dim, input_shape=(None, ), mask_zero=True)
# return embedding layer

비슷한 문맥에서 자주 등장하는 단어들은 비슷한 위치에 위치시키도록 함

outputs

outputs.shape

# Embedding Layer
outputs = embedding(inputs)
print(outputs.shape)

입력문장의 개수, 입력문장의 최대 길이, 임베딩 차원

Dataset

https://keras.io/api/datasets/imdb/

tensorflow.keras.datasets.imdb

load_data Function

tf.keras.datasets.imdb.load_data(
    path="imdb.npz",
    num_words=None,
    skip_top=0,
    maxlen=None,
    seed=113,
    start_char=1,
    oov_char=2,
    index_from=3,
    **kwargs
)

return (x_train, y_train), (x_test, y_test)

get_word_index Function

return a dictionary mapping words to index

Gensim Library

word vector를 임베딩했을 때 특정 단어와 유사한 의미를 가진(= 차원 상 가깝게 존재하는) 단어를 표시한다.

참고 : https://radimrehurek.com/gensim/models/keyedvectors.html#gensim.models.keyedvectors.KeyedVectors

  1. Save Text file
# Define word2vec_file_path
f = open(word2vec_file_path, 'w')

# Delete '<PAD>', '<SOS>', ...
vocab_size -= proper number
f.write('{} {}\n'.format(vocab_size, word_vector_dim))

vectors = model.get_weights()[0]
for i in range(4,vocab_size):
    f.write('{} {}\n'.format(index_to_word[i], ' '.join(map(str, list(vectors[i, :])))))
f.close()
  1. Load Gensim class
from gensim.models.keyedvectors import Word2VecKeyedVectors

word_vectors = Word2VecKeyedVectors.load_word2vec_format(word2vec_file_path, binary=False)

0개의 댓글