da-analysis / asac_4_dataanalysis

ASAC 4기 Data Analysis Project
0 stars 1 forks source link

텍스트 리뷰 감성분석 (spark nlp) #11

Open syleeie2310 opened 3 months ago

syleeie2310 commented 3 months ago

https://www.johnsnowlabs.com/sentiment-analysis-with-spark-nlp-without-machine-learning/

syleeie2310 commented 3 months ago

모든 데이터 합쳐서 vivekn 모델로 감성 분류 해보기 https://sparknlp.org/2021/11/22/sentiment_vivekn_en.html

허깅페이스로 스타, 점수 추출해서 피쳐로 만들기 -> 작업이 오래걸리면 mulitprocessing 라이브러리 참고해서 코드 수정해서 돌려보기 (or joblib)

===> 목표 : 피쳐 만들기

syleeie2310 commented 3 months ago

허깅 페이스 512개 토큰. -> 텍스트 길이 분포 확인할 것 (512개보다 토큰 긴 리뷰가 몇개나 있는지?)

둘다 델타 테이블로 저장 부탁드리고, 저장 한 다음에 데이터 탐색 해주세요.

syleeie2310 commented 3 months ago

탐색적 데이터 분석 (긍부정 결과 vs 리뷰 평점)

JIYUN0710 commented 3 months ago

<vivekn 모델> image

<transformer 모델> image

각각 10개 저장하는데, 10초, 3분이 걸립니다! multiprocessing 찾아봤는데, 적용할 만할 것을 찾기 어려웠습니다!

image 그래서 파티션 나눠서 저장하고 있는데, 이런식으로 저장하는게 빠른게 맞을까요?! 11저장할때는 41초, 기본으로 10개 할때(10초)걸렸습니다! 불러오는 시간은 기본10개 (56초), 파티션(11) (14초)였습니다! image

image

아니면 이렇게 parquet 파일로 저장한 후에, 불러와서 저장하는게 더 빠를까요? image

syleeie2310 commented 3 months ago

limit은 파티션 갯수랑은 상관없는데.. 파티션은 executor X Core 갯수만큼 사용하는게 일반적이긴 해요

저희 싱글머신에 core 4개니깐 파티션 4정도가 적당해 보입니다.

limit 11 을 설정하면 11개 데이터만 들어가지 않아요?

JIYUN0710 commented 3 months ago

아 리밋11은 시간이 얼마나 걸리는지 확인해보려고 저장해본것입니다!

syleeie2310 commented 3 months ago

1) 만약 허깅페이스 모델 기존 레퍼런스 사용해서 돌린다고 하면 멀티프로세싱 사용해서 데이터 쪼개서 돌린다. (loop로)

2) 동일한 모델이 SparkNLP 있어서 저 방식대로 돌아가는지?

JIYUN0710 commented 3 months ago

spark 멀티프로세싱했을 때, image 이러한 에러가 발생합니다. 또한, 다른 방식으로 멀티프로세싱하려고 찾아보는데, 파티션을 더 나누라고 하거나 루프를 돌려서 하는건 효율적이지 않다는 얘기가 계속 있었습니다!

그리고 판다스로 바꿔서 잘라서 돌리려고 하니까, 모델 적용하는 함수가 스파크에 맞춰 있어서 그것도 실패중입니다. ㅠㅠ

joblib도 활용해보려는데, 계속 에러 뜨고 적용이 잘 되지 않고 있습니다...


  1. 현재 vivekn 모델 활용한 감성분석 델타 테이블 최종본은 저장해두었습니다.
  2. 허깅페이스 transformer모델을 1000개 저장할 때 37분 정도 걸렸습니다. => vivekn모델에서 나온 결과를 향후 피처로 활용하고, 허깅페이스는 10000개 정도만 돌려서 탐색분석에만 활용할 수 없을까요? => 아니면 전에 멀티프로세싱이나 joblib로 데이터셋 나눠서 모델돌렸던 참고 코드가 있을까요? ( 이틀내내 다른 코드 찾아보고 챗지피티랑 뤼튼 쓰는데도 어려움이 많네요!)
JIYUN0710 commented 3 months ago

image

여기 failed 떠있으면 시간 계속 들여도 안돌아가나요?!

syleeie2310 commented 3 months ago

fail 되었을 때의 상황과 연결되긴 하는데 스파크 작업만 생각해보면 fail 되도 retry 해서 성공하기도 하는데요. 혼자 쓰는 싱글머신에선 그럴 가능성은 더 적을거 같기도 하네요

이게 스파크 (Java 메모리 영역)이냐 순수 파이썬 영역이냐에 따라 다른건데

외부 모델을 사용하는 허깅페이스는 후자에 가깝다보니 스파크랑 크게 상관이 없어서 그 프로세스의 메모리가 부족되는 가능성이 높다고 하면

결국 fail 되는 상황의 에러나 로그 들을 봐야 좀 더 판단할 수 있지 않을까 싶어요.

syleeie2310 commented 3 months ago

vivekn 탐색 더 해보고 활용할 수 있는 영역 찾아보기