반응형
자모단위로 분류하는 알고리즘 구현
-정확도 낮음
jamo 모듈은 글자를 자모단위로 쪼개주는 역할을 한다
아 -> ㅇ + ㅏ
자소서 -> ㅈ + ㅏ + ㅅ + ㅗ + ㅅ + ㅓ
예를 들어 폴더명을 자소서라고 짓는다고 가정
파일이 자기소개서 일경우 당연히 자소서 폴더에 들어간다
하지만 서소자 파일인 경우에도 자모 단위로 쪼개면
ㅅ + ㅓ + ㅅ + ㅗ + ㅈ + ㅏ
ㅈ + ㅏ + ㅅ + ㅗ + ㅅ + ㅓ
자모의 개수대로 비교한다면 자소서가 들어가고
해당 위치에 매칭되는 값이 다름을 비교하고 기준치를 자모 수의 50%로 지정한다면
ㅅ + ㅗ = 위치와 글자가 동일 하므로 2개가 같음
자모의 수 6개의 50%인 3개에 미치지 못해 적용을 안시킬 수 있다
하지만 필자는 해당 자모 필터링을 최하위에 둘 예정이라 단순히 자모의 개수로 비교하는 코드를 만들었다.
자모 단위로 쪼개어 특정 개수 이상이 존재할 경우 해당 폴더로 넣어주는 작업이다
!pip3 install jamo
from jamo import h2j, j2hcj
def jumo_filiter(folder, file):
trans_file_jumo = []
trans_folder_jumo = []
equl_count = [[0 for i in range(len(file))] for i in range(len(folder))]
result = {}
for i in file:
a = j2hcj(h2j(i))
line = []
for j in a:
line.append(j2hcj(h2j(j)))
trans_file_jumo.append(line)
for i in folder:
a = j2hcj(h2j(i))
line = []
for j in a:
line.append(j2hcj(h2j(j)))
trans_folder_jumo.append(line)
for i in range(len(folder)):
for j in range(len(file)):
for k in trans_file_jumo[j]:
if k in trans_folder_jumo[i]:
equl_count[i][j] += 1
for i in range(len(folder)):
for j in range(len(file)):
if len(trans_folder_jumo[i]) <= equl_count[i][j]:
result[file[j]] = folder[i]
return result
inputfolder = ['보고서', '영업분기', '제무재표']
inputfiles =['2017상반기보고서.ppt', '2017하반기보고서.txt', 'SK이노베이션 제무제표.txt', 'SK화학 제무제표', '상반기 영업손해익', 'SK 화학 영업손익', '감성분석', '감사 보고 요령']
result = jumo_filiter(inputfolder, inputfiles)
result
정확도가 낮기 때문에 최하위 필터링에 위치할 예정이다.
반응형