우리FISA

우리FIS아카데미(우리FISA) 20주차 AI엔지니어링 텍스트 전처리 및 DB

히그다스 2023. 9. 9. 17:38

9/2

 

TF-IDF(Term Frequency-Inverse Document Frequency)는 단어의 빈도와 역 문서 빈도(문서의 빈도에 특정 식을 취함)를 사용하여 DTM 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법

 

https://wikidocs.net/31698

 

04-04 TF-IDF(Term Frequency-Inverse Document Frequency)

이번에는 DTM 내에 있는 각 단어에 대한 중요도를 계산할 수 있는 TF-IDF 가중치에 대해서 알아보겠습니다. TF-IDF를 사용하면, 기존의 DTM을 사용하는 것보다 보다 많…

wikidocs.net

 

 

9/4

 

이 블로그에서 기본적인 실습을 하고 다음을 진행하려 했는데 막히는 부분

 

tf = pd.DataFrame(dtm.toarray(), columns = vectorizer.get_feature_names())

 

no attribute만 보면 미칠 거 같다

하지만 미치지말고 공식문서 찾아보기

 

 

 

찾았당

 

 

적용해보니 잘 됨

오늘도 하나 배웠다 !

 

 

 

 

TF-IDF 개념 찾아보며 파이썬 코드 돌려보기

 

 

https://heytech.tistory.com/337

 

[NLP] TF-IDF 개념 및 계산 방법(+Python 코드)

본 포스팅에서는 TF-IDF 개념 및 계산 방법에 대해 알아봅니다. 📚 목차 1. TF-IDF 개념 2. TF-IDF 계산방법 2.1. TF(Term Frequency) 2.2. DF(Document Frequency) 2.3. IDF(Inverse Document Frequency) 1. TF-IDF 개념 TF-IDF(Term Freq

heytech.tistory.com

 

 

TF-IDF보고 하는데 원하는대로 결과가 잘 안나와서 선생님께 도움을 요청했다

코드 주신 거 한번 해보고 회의했다가 다시 시작

 

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
import nltk
nltk.download('punkt')

def tokenize(text):

   # normalize case and remove punctuation
   text = text.split()

   return text
   
   rom sklearn.feature_extraction.text import CountVectorizer

# initialize count vectorizer object
vect = CountVectorizer(tokenizer = tokenize)

X = vect.fit_transform(contents['content'])
len(X.toarray())

from sklearn.feature_extraction.text import TfidfTransformer

# initialize tf-idf transformer object
transformer = TfidfTransformer(smooth_idf=False)
# use counts from count vectorizer results to compute tf-idf values
tfidf = transformer.fit_transform(X)
# convert sparse matrix to numpy array to view
tfidf.toarray()

 

 

늘어나는 이런저런 실습 목차

나중에 깃헙 업로드 해야하는데 정리 언제하지....

그리고 결과가 나오긴 했는데 내가 원하는 형태는 아니어서 절망...

 

 

 

리더한테도 도움을 요청해서 블로그를 몇개 받았다

내가 보기엔 상위 몇개 단어 뽑아내는게 더 유용할 거 같다

 

https://m.blog.naver.com/ys_blog/222505693468

 

[Text Mining] Keyword Analysis (TF-IDF 이용)

이번에는 TF-IDF를 이용해 이전 포스팅에서 크롤링한 뉴스 headline에 대해 키워드 분석을 하려고 한...

blog.naver.com

 

9/5

 

 

어제 받은 상위 300개 단어 추출하는 코드 돌려봤는데 잘 돌아간다

솔직히 위에 것보다 밑에게 더 논리전개에는 도움될 거 같지 않나요

의도한건 '우리카드'가 언급되면 많이 나오는 단어

예를 들면 '혜택, 공과금' 이런 느낌으로 뽑아내는 걸 원했는데 TF-IDF로는 원하는 바를 뽑아낼 수가 없었다

 

 

 

 

여튼 기획자의 눈에 상위 100개 단어가 더 맘에 든다 해서 텍스트전처리는 이만하고 RDS로 넘어가기로 했다

 

 

 

9/6

 

오늘은 다시 DB로 넘어갔는데 카드혜택 DB를 새로 해야하기도하고

기존에 넣어놨던 설문조사 DB도 새로 만들어야 했다

 

하려면 금방하는데 팀장님이랑 면담있어서 하루종일 집중이 안됐음...

11시였다가 밀려서 4시였다가 또 밀려서 5시반에 해서...

근데 면담 받고 나니 좀 머리 속이 명쾌해져서 받기 잘했다 싶었다

 

오늘은 코테만 하고 내일부터 다시 달려야지

혜택 DB에 들어가는 건 이미 다 정해져있고 나는 컬럼명만 영어로 잘 받으면 된다 ㅋㅋㅋ 이게 어렵다...

기획하는 분이 다 해주셨다 진짜 잘해주셔서 넣기만 하면 됨

 

 

 

 

DB를 대충 짜기는 했는데 내용은 아직 안넣었다

내일 회의 전까지 다 만들기가 목표 !

 

 

 

 

매일 회의해서 회의까지 이건 끝내야해 ! 하는 마음이 생겨서 좋다

잘 안풀린 날은 부담스럽긴 한데 뭐든 일장일단이니까 ~

 

 

 

9/7

 

어제 미뤄놨던 혜택 DB 빠르게 채우기

 

 

 

이 코드는 auto increment 걸어놓은거 1로 리셋하게 해주는 쿼리

 

 

ALTER TABLE card_db.card_benefit AUTO_INCREMENT=1;

 

 

이렇게 쭉쭉 넣으면 되는 노동성 업무

auto increment 걸어놓은건 뺐는데

card_name은 FK로 걸어도 값은 넣어줘야한다

 

 

INSERT INTO card_db.card_benefit (card_corp, card_name, card_intro_line, card_benefit_1, card_benefit_2) VALUES
('우리', '카드의정석_EVERY_1', '갖고만 있어도 최대 1% 할인되는 최고의 카드', '전월 실적 없이 할인', ' '),

 

 

이렇게 테이블 생성하는 과정에서 FK를 설정했는데

제대로 됐는지 몰라서 부모테이블에서 지워봤다

안지워지면 성공한 것 !

 

 

CONSTRAINT card_info_card_name_fk 
FOREIGN KEY (card_name)
REFERENCES card_info (card_name))

 

다 넣고 회의 참여

할일을 잔뜩 받아왔다

이래서 클라우드 올리는 건 언제 하죠..?

 

 

 

 

9/8

 

어제저녁에 내가 만든 DB테이블이랑 백엔드에서 쓰는 테이블명이랑 다르다는 걸 알게 돼서 아침에 급하게 회의

내가 다시 만들어서 주면 거기에 맞추기로 했다 

다 기존에 있던 거 한 파일 안에 정리하면 돼서 문제는 없었는데 에러 발생...

 

" failed to add the foreign key constraint. missing index for constraint "

 

구글링해보니 FK는 PK, Unique key여야 하는데 내가 그걸 놓쳐서 생긴 문제였다

 

https://yusang.tistory.com/104

 

[1822] Failed to add the foreign key constraint MySQL에러

Foreign key를 설정하려고 테이블을 수정하려고 할 때 발생한 MySQL 1822 에러입니다. 이는 Foreign key 제약조건을 만족하지 않았을 때 발생하는 에러입니다. Stack overflow에 같은 문제가 있어서 기록을 해

yusang.tistory.com

 

이렇게 해결해놓고 업데이트를 안해서 나중에 팀원이 실행해보다 똑같은 에러 또 남 ㅋㅋㅋㅋㅋ

또 멘붕와서 찾다가 똑같은 블로그 또 들어가서 해결했다..

업데이트의 중요성....

업뎃 하고 다시 제대로 되는 거 확인하고 끝났다

 

 

그 다음 할 일은 빈껍데기 만들어서 RDS에 올리기

근데 이건 내가 착각을 해서 동적 SQL을 써서 가져와야 하는 줄 알고 고난을 겪다 선생님한테 물어보고 해결

난 빈껍데기만 만들면 된다

 

 

곧 프로젝트는 끝나는데 생각만큼 진도가 잘 안나가서 걱정스럽긴 하다

어찌저찌 되긴 하겠지..?