[WIL]을 가장한 자연어 처리 프로젝트

우주먼지·2020년 8월 28일
0

이번주의 내용은...?

이번주는 배운 내용은 별로 없으니 진행한 프로젝트에 대한 리뷰를 진행하도록 한다!

우리가 선택한 주제는 네이버 영화를 크롤링하여 영화 추천 프로그램을 만드는 것이었다.

하지만!!!

사용자의 정보를 얻을 방법을 찾지 못해 영화제목, 장르 정보를 크롤링하여 영화 제목을 입력하면 장르를 예측하는 프로그램을 만들었다.

먼저 영화 정보를 크롤링했다.
https://serieson.naver.com/movie/categoryList.nhn?categoryCode=ALL&orderType=sale&sortingType=&mobileYn=&drmFreeYn=&freeYn=&discountYn=&tagCode=
여기서 영화를 크롤링 했으며, 19금 영화를 제외한 약15000개를 크롤링했다.
이 중 너무 옛날 영화나 정보가 별로 없는 영화를 제외하고 약 11000개의 데이터를 사용했다.

movies_train, movies_test, y_train, y_test = train_test_split(movies['title'], movies['genre'], test_size=0.2, shuffle=True, random_state=23)

y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

데이터를 훈련데이터와 테스트 데이터로 나누고, 데이터의 결측치를 제거하고 장르를 원-핫 벡터로 바꿔주었다.

X_train_ = []
# print(movies_train[:10])
for stc in movies_train:
    # print(stc)
    if len(stc) == 0:
        continue
    token = []
    words = kkma.morphs(stc)
    for word in words:
        if word not in stopwords:
            token.append(word)
    X_train_.append(token)

그 후, 데이터를 토큰화하고 정수 인코딩 진행. 이때, 토큰화는 konlpy에 Kkma를 이용했다.

max_len = 15
X_train = pad_sequences(X_train, maxlen=max_len)
X_test = pad_sequences(X_test, maxlen=max_len)

정수 인코딩을 진행하고 최대 길이에 맞춰 패딩을 추가해주었다.

LSTM을 이용하여 모델을 생성하고 훈련시킨 결과 정확도가 매우 낮게 나왔다.
주말동안 파라미터를 조정하여 정확도를 향상시키도록 노력해야게따...

profile
안녕하세요 ㅎㅎ

0개의 댓글