목적: 단어 표준화 같은 단어를 다른 형태로 쓰기 때문에, 이를 표준화 해주어야 한다. 이를 **normalization(정규화)**라고 일컫는다. 이미 koNLpy의 여러 메소드(Okt, kkma등)에서 형태소 바탕으로 normalization을 제공하지만, 해외 다양한 언어를 처리할 경우, 각국 문법이나 함수를 이용한 형태소 분석을 지양하고 있기에 직접 Dicitionary를 구축하고자 한다.
Replace_Texts_in_Messages 과정은 Delete_Overlapped_Messages의 산출물로 나온 메세지 텍스트 파일에서 메세지들 중 정규화되지 않은 단어들을 자체적으로 정한 기준 단어(Standard word)로 대체해주는 작업이다.
import pandas as pd
import os
try:
Lib = pd.read_csv("ProjectLibrary2.csv")
Dic = pd.read_csv("(R)Project Dictionary(표준형).csv")
except UnicodeDecodeError:
Lib = pd.read_csv("ProjectLibrary2.csv", encoding = "cp949")
Dic = pd.read_csv("(R)Project Dictionary(표준형).csv", encoding = "cp949").fillna("")
files_in_folder = list(os.listdir(str(os.getcwd())))
DOM_Message_pickle = list(filter(lambda x : "DOM.pickle" in x, files_in_folder))
with open(DOM_Message_pickle[0],"rb") as fr:
DOM_Message = pickle.load(fr) #Delete_Overlapped_Message의 산출물을 불러온다.
Dic_tag_list = list(Dic.tag)
replaced_messages_DataFrame = pd.DataFrame(columns = DOM_Message.columns)
def replace_texts_by_row(item):
replaced_message_row = " ".join(list(map(
lambda x: x if x not in Dic_tag_list else (
lambda x: list(Dic.loc[Dic["tag"]==x, "Replace_Texts"])[0] if list(Dic.loc[Dic["tag"]==x, "Replace_Texts"])[0] != "" else x )(x), item.split(" "))))