2019년 3월 13일 수요일

Python: word2vec 모델을 사용해 단어 벡터화

Gensim 패키지의 word2vec 모델을 사용해 단어 벡터화 하기


* 아래 예제는 Github의 IPython notebook으로 공유되어 있습니다.

입력 데이터

kaggle에 오픈되어 있는 hotel review 데이터를 사용해 보자

데이터 포멧

테이터 형태를 살펴 보면 User_ID,  Description,  Browser, Device, Is_Response 형태로 구성되어 있다.


Imports package

import pandas , nltk
from gensim.models import Word2Vec
from nltk.tokenize import RegexpTokenizer

load Data

filename = 'data/hotel-reviews.csv'
df = pandas.read_csv(filename, sep=',')

def nltk_tokenizer(_wd):
  return RegexpTokenizer(r'\w+').tokenize(_wd.lower())

df['Token_Description'] = df['Description'].apply(nltk_tokenizer)
df.head()

Training

common_texts = df['Token_Description'].tolist()

model = Word2Vec(
    common_texts,
    size=150,
    alpha=0.025,
    window=10,
    min_count=2,
    sg=1)

model.train(common_texts, total_examples=len(common_texts), epochs=10)

파라메터 설명

size: 벡터 차원의 크기
alpha: learning rate
window: 모델 학습할때 앞뒤로 보는 단어의 수
min_count: 학습에 사용할 최소 단어 빈도 수
sg: skip-gram (default)

결과 확인


model.wv.most_similar("france")

ref

https://radimrehurek.com/gensim/models/word2vec.html
https://rare-technologies.com/word2vec-tutorial/
http://kavita-ganesan.com/gensim-word2vec-tutorial-starter-code/
https://www.kaggle.com/harmanpreet93/hotelreviews



댓글 없음:

댓글 쓰기

추천 게시물

python: SVD(Singular Value Decomposition)로 간단한 추천시스템 만들기( feat. surprise )

svd_example In [15]: # !pip install surprise In [21]: from...