2. CorpusExtraction.py - 크롤링 정보 가공
2023. 12. 9. 18:27ㆍ개인 프로젝트/📚 감정 인식 및 MBTI 분석 ChatBot
1. CorpusExtraction.py
# 말뭉치 분석 및 명사 추출 패키지 로드
from konlpy.tag import Kkma
# 함수 설정
kkma = Kkma()
# 기타 패키지 로드
import pandas as pd
import os
import csv
from collections import Counter
# 글 내용이 없는 경우 nan이 리턴되는데 이를 방지해주는 함수
def isNaN(string):
return string != string
# entp,
MBTI = "entp 진행이 안 됨"
InputTitle = f"./MBTI Source/{MBTI}_source_txt.csv"
OutputTitle = f"{MBTI}_weight.csv"
# 작업 디렉토리 지정
os.chdir("./")
# 데이터 입력 포맷 결정
data = pd.read_csv(InputTitle, encoding="UTF-8")
print(f"{InputTitle[14:]} 읽기 완료")
# 제목과 내용 분리
title = data.title
content = data.content
result = []
print("제목 시작")
for i in title:
check = isNaN(i)
if check == True:
continue
title_part = kkma.nouns(i) # 각 제목으로부터 명사 추출
result.extend(title_part) # 각 제목으로부터 명사 출력 결과 저장
print(".", end="")
print("\n내용 시작")
for i in content:
check = isNaN(i)
if check == True:
continue
content_part = kkma.nouns(i) # 각 내용으로부터 명사 추출
result.extend(content_part) # 각 내용으로부터 명사 저장
print(".", end="")
print("\n정렬 중")
# 명사 오름차순으로 정렬
result = sorted(result, reverse=False)
# 단어 빈도수 세기
word_count = Counter(result)
# 출력 파일 쓰기
with open(OutputTitle, "w", newline="", encoding="UTF-8") as myfile:
wr = csv.writer(myfile)
wr.writerow(["word", "count"]) # 헤더 추가
for word, count in word_count.items():
wr.writerow([word, count])
print(f"{OutputTitle} 저장 완료")
이전의 Crawling_origin.r에서 디시인사이드 MBIT 성향별 갤러리의 크롤링 데이터를 가공하는 소스코드입니다.
2. 코드 세부 설명
# entp,
MBTI = "entp 진행이 안 됨"
InputTitle = f"./MBTI Source/{MBTI}_source_txt.csv"
OutputTitle = f"{MBTI}_weight.csv"
여기의 MBTI 변수 안에 원하는 성향의 MBTI를 입력합니다. 그러면 MBTI Source 폴더 안에 있는 메타데이터에서 형태소를 분리하여 가중치를 만듭니다. 현재 entp 갤러리 크롤링 데이터에 한해서 제대로 작동하지 않습니다. 내용물에 상정하지 못한 것이 있는 듯 예상이 됩니다.
가중치 정보는 OutputTitle의 변수 내용물에 따라 만들어집니다.
실제로 enfp에 대해 구동 시 위와 같이 나옵니다. 온점이 많이 있는 이유는 실제로 가동 중인지 알기 위해서 1회의 작업마다 출력이 되도록 만들었습니다. 이 부분은 나중에 개선해야겠습니다. 그리고 enfp 가중치 파일이 나왔습니다.
위와 같이 형태소로 분리되어 저장이 됩니다.
그러나 처음 설계를 할 때와는 달라진 점이 모든 MBTI별 가중치를 구하지 못했기에 각 MBTI별로 I성향이 쓴 단어들을 모두 합친 파일을 수작업으로 만들어 MBTI_I.csv라는 파일을 만들었습니다. 나머지 성향도 같은 작업을 통해 위와 같은 가중치 파일을 만들었습니다.
'개인 프로젝트 > 📚 감정 인식 및 MBTI 분석 ChatBot' 카테고리의 다른 글
6. 구름IDE.py - 실제 서버 구동 파일 (0) | 2023.12.10 |
---|---|
5. main.py - 알고리즘 테스트 파일 (0) | 2023.12.10 |
4. NaverAPIIDPW.py - 네이버 API 정보 (0) | 2023.12.09 |
3. create_chatbot_model.py - 감정 인식 모델 만들기 (0) | 2023.12.09 |
1. Crawling_origin.r - MBTI 갤러리 크롤링 (0) | 2023.12.09 |