반응형
Word2Vec 모델을 이용하여 폴더와 파일간의 유사도 검사를 해볼것이다.
인자값으로 폴더의이름과 파일들의 이름을 받아
폴더와 각 파일명들을 비교할 것이다.
Word2Vec모델에 없는 단어일 경우 다음 단계로 패스시킬 것이다.
def word2vec_similarity(directory_list, file_list):
model = Word2Vec.load('모델 경로')
tmp_dict = {}
classificated_dir_index = 0
if jpype.isJVMStarted():
jpype.attachThreadToJVM()
okt = Okt() # 형태소 분석
for file_index in range(len(file_list)):
max_similarity = 0
file_morphs = okt.morphs(file_list[file_index])
for dir_index in range(len(directory_list)):
dir_morphs = okt.morphs(directory_list[dir_index])
tmp_similarity = 0
for file_element in file_morphs:
for dir_element in dir_morphs:
if check_format(file_element) == 'kor' and check_format(dir_element) == 'kor':
try:
tmp_similarity = model.similarity(file_element, dir_element)
except KeyError:
pass
if tmp_similarity > max_similarity: # 유사도 수치는 사용자가 설정
max_similarity = tmp_similarity
classificated_dir_index = dir_index
tmp_dict[file_index] = classificated_dir_index
return tmp_dict
check_format 함수는 폴더명이나 파일명들이 숫자 인지 한글인지에 가중치를 얼머나 더 둘지에 대비하여 만들었다
def check_format(input): # 한국어 , 영어 , 숫자 형태 분석
value = input[0]
if ord('가') <= ord(value) <= ord('힣'):
return 'kor'
elif value.isdigit():
return 'num'
elif value.isalpha():
return 'eng'
else:
return False
영어는 안쓰기 때문에 제외시켜도된다.
반응형