konlpy에 있는 여러 형태소 분석기중 okt의 사전을 업데이트하는 코드이다
okt에서 코드를 통한 사전수정을 지원하지않아
파일의 직접적인 수정을 통한 사전업데이트만 가능한것으로 알고있다
그리고 이방식은 수작업으로 여러번하기에는 꽤나 귀찮은일이다
코드는 okt사전을 수정하는 목적의 코드이지만
적당히 수정하면 konlpy속 다른 형태소분석기 사전을 업데이트하는데도 쓸수있다고 생각한다
import zipfile, os
'''
파일경로는 환경에 맞게 수정이 필요합니다
추가적으로 운영체제 환경에맞는 파일경로작성이 중요합니다
'''
jar_filename = r'C:\Users\dodo7\miniconda3\Lib\site-packages\konlpy\java\open-korean-text-2.1.0.jar'
output_folder = r'C:\Users\dodo7\miniconda3\Lib\site-packages\konlpy\java\open-korean-text-2.1.0'
file_path = r'C:\Users\dodo7\miniconda3\Lib\site-packages\konlpy\java\open-korean-text-2.1.0\org\openkoreantext\processor\util\noun\nouns.txt'
######## 원래사전파일 압축해제 #########
# output을 저장할 폴더가 없으면 만듬
if not os.path.exists(output_folder):
os.makedirs(output_folder)
else:
pass
# output_folder에 jar파일 압축해제
with zipfile.ZipFile(jar_filename, "r") as zip_ref:
zip_ref.extractall(output_folder)
############# 사전 업데이트후 텍스트파일 저장 ############
with open(file_path, "r", encoding="utf-8") as file:
file_contents = file.readlines()
file_contents = [line.strip() for line in file_contents]
original_contents = file_contents.copy()
dic=['김한길타임어택중'] # 당신이 넣고 싶은 단어들을 리스트형태로
new_dic=dic+file_contents # 사전 업데이트
# print(file_contents)
new_dic=list(set(new_dic)) # 중복제거
new_dic=sorted(new_dic, key=lambda x: [ord(c) for c in x]) # 가나다 순서로 정렬
# 텍스트파일 만들기
with open(file_path, "w", encoding="utf-8", newline="") as f:
for item in new_dic:
f.write(str(item) + "\n")
######### 폴더 jar파일로 압축 #########
def zip_folder(folder_path, zip_file_path):
with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, _, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
zipf.write(file_path, os.path.relpath(file_path, folder_path))
zip_folder(output_folder , jar_filename)
print('done')
'기타' 카테고리의 다른 글
Q-learning 기반 틱택토 강화학습 모델 개발 (0) | 2023.12.15 |
---|---|
코랩 셀 실행 끝날때 소리로 알림받는방법 (0) | 2023.09.15 |
facenet 임베딩 모델 구조의 구현 (0) | 2023.04.28 |
FL STUDIO 첫번째 곡(기초조작법 익히기) (0) | 2023.04.16 |
넘파이에서 리스트처럼 곱하기 적용하고싶을때 (0) | 2023.02.25 |
댓글