목적: 단어 표준화 같은 단어를 다른 형태로 쓰기 때문에, 이를 표준화 해주어야 한다. 이를 **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(" "))))