상세 컨텐츠

본문 제목

kobert를 이용한 영화리뷰 긍정,부정 분류와 대표리뷰 뽑아내기

프로그래밍/경진대회(데이콘, 캐글)

by 아싸호랑나비 2022. 7. 21. 01:58

본문

이번 프로젝트 주제는 간단하게 말해서 영화 여론조사이다

내가 원하는대로 제대로 완료가 될시

예)

영화제목: 나의 첫사랑에게

긍정/부정: 70:30

긍정리뷰를 적은사람들의 대표의견

스토리가 감동적이다

첫사랑을 잊지못하신분들에게 추천드려요

눈물이 많이났어요

 

부정리뷰를 적은사람들의 대표의견

영화내용이 예상이갑니다 지루해요

상영시간이 너무길어요

배우들의 연기가 어색합니다

 

이런식으로 나올것이다

 

미리 준비된 라벨링된 10만여개의 영화리뷰를 kobert모델을 활용하여

라벨링되지않은 자연어 영화 리뷰들을 긍정적 또는 부정적으로 분류할것이다

 

전처리로 맞춤법같은거 통일시켜주면 좋을것같기도 하다 이부분은 일단 모델을 만들고난뒤에 실험해볼 생각이다

행마다 함수를 적용시켜보았는데 중간에 알수없는 오류가나서 이부분은 패스

 

또 정확도는 그래도 0.8정도는 넘었으면 좋겠다

최종결과 0.88나왔습니다

 

그후에 내가 분석할 영화리뷰들을 크롤링하고

긍정문장군 전체, 부정 문장군 전체로 분류한후 

사용자 불용어 처리 예를들어

[영화, 은, 는, 이, 가]

핵심키워드를 언급순서대로 순위를 나열하고

탑 3정도가 적당할듯하다

각 탑3 키워드를 포함하는 영화리뷰들을 긍정리뷰 부정리뷰 각각 추출한다 완성하면

위의 예시가된다

 

키워드부분은 그냥 긍정부정에서 따로 추출시키지않고 통합본에서 뽑는걸로 하였다

 

 

1. 먼저 kobert로 영화리뷰 데이터셋을 학습시킨다

학습셋 (긍정, 부정)라벨링된 영화 리뷰데이터 (유명하다)

urllib.request.urlretrieve("https://raw.githubusercontent.com/e9t/nsmc/master/ratings_train.txt", filename="ratings_train.txt")
urllib.request.urlretrieve("https://raw.githubusercontent.com/e9t/nsmc/master/ratings_test.txt", filename="ratings_test.txt")

dataset_train = pd.read_table('ratings_train.txt')
dataset_test = pd.read_table('ratings_test.txt')

reviews_df=pd.concat([dataset_train,dataset_test])

 

2. 모델을 가지고 크롤링한 데이터를 긍,부정으로 나눔

크롤링한데이터(닥터스트레인지대혼돈의 멀티버스 평)

일부만 보긴했는데 정확도가 높지않아보임 허허

3. 긍정 부정 비율 보기

4. 키워드 추출

모든 키워드를 추출하면 영화의 키워드라고 볼수없는 키워드가 너무많은 관계로

키워드로 쓰일수있는 단어 풀을 정해두고 키워드풀안의 단어가 키워드풀안에 있으면 키워드로 추출하였다

5. 긍정, 부정 각각 탑3 대표문장 추출

탑3로 했더니 분명히 긍정부분인데 부정적 코멘트가 섞여들어가서 탑2로 변경했습니다(주작)

krwordrank이용 하였습니다 

양질의 평이 뽑힌것같습니다

 

ps. acc 0.88나왔는데 더 높으신분 어떻게했는지 알려주시면 감사하겟습니다

관련글 더보기