제주도 사투리에 어울리는 형태소 비교
안녕하세요 머킹입니다.
오늘은 드디어 코드가 다 돌아가서!
한국어 형태소 중에서 제주도 사투리를 가장 잘 토큰화 한 형태소를 비교 분석해 보겠습니다!
Kakao Khaiii, KoNLPy의 다양한 형태소 분석기, 그리고 파파고 번역 API를 비교해 보면 어떨까?라는 생각으로
저는 형태소 분석기들을 비교해보고 싶었는데요.
대신 이런 에러가 있었습니다.
- kakao나 파파고는 개인 애플리케이션 정보가 있어야 해서 어려울 것 같음 (나중에 비교 분석해보기)
- 대신 KoNLPy안에 4가지 형태소 분석기를 비교해 보기로 함
그래서 4개의 형태소 분석기를 비교해 보겠습니다.
맨 밑에 결과가 있고 위에는 제 코드들의 시행착오입니다.
결과만 말하자면 Okt가 가장 적합했습니다.
1차 코드
# 샘플 100개의 데이터로 Kkma, OKT, Hannanum, Komoran 을 비교하자
import json
from konlpy.tag import Kkma, Okt, Hannanum, Komoran
import os
# 형태소 분석기 초기화
kkma = Kkma()
okt = Okt()
hannanum = Hannanum()
komoran = Komoran()
# 데이터 디렉토리 경로
base_directory = '/content/drive/MyDrive/jeju/'
# Training 및 Validation 디렉토리
data_directories = ['Training', 'Validation']
# 형태소 분석 결과 저장 딕셔너리
results = {}
for data_dir in data_directories:
data_directory = os.path.join(base_directory, data_dir)
data_files = [file for file in os.listdir(data_directory) if file.endswith('.json')]
results[data_dir] = {}
for data_file in data_files:
with open(os.path.join(data_directory, data_file), 'r', encoding='utf-8') as file:
data = json.load(file)
for idx, utterance in enumerate(data['utterance'][:100]): # 처음 100개의 데이터만 사용
text = utterance['dialect_form']
# 형태소 분석 수행
kkma_result = kkma.morphs(text)
okt_result = okt.morphs(text)
hannanum_result = hannanum.morphs(text)
komoran_result = komoran.morphs(text)
results[data_dir][f'Utterance_{idx + 1}'] = {
'Kkma': kkma_result,
'Okt': okt_result,
'Hannanum': hannanum_result,
'Komoran': komoran_result
}
# 결과 출력
for data_dir, data_results in results.items():
print(f"{data_dir} 데이터 형태소 분석 결과:")
for utterance, morpheme_data in data_results.items():
print(f"\n{utterance}:")
for morpheme, result in morpheme_data.items():
print(f"{morpheme} 형태소 분석 결과: {result}")
이 코드의 결과는 너무 느렸습니다...
멈출 줄 모르는 저의 코드에 이건 아니다 싶었고
코드를 수정하기로 마음먹었습니다!
2차 코드
import json
from konlpy.tag import Kkma, Okt, Hannanum, Komoran
import os
from concurrent.futures import ThreadPoolExecutor
from tqdm import tqdm # tqdm 라이브러리 추가
# 형태소 분석기 초기화
kkma = Kkma()
okt = Okt()
hannanum = Hannanum()
komoran = Komoran()
# 데이터 디렉토리 경로
base_directory = '/content/drive/MyDrive/jeju/'
# Training 및 Validation 디렉토리
data_directories = ['Training', 'Validation']
# 형태소 분석 결과 저장 딕셔너리
results = {}
def analyze_text(text):
kkma_result = kkma.morphs(text)
okt_result = okt.morphs(text)
hannanum_result = hannanum.morphs(text)
komoran_result = komoran.morphs(text)
return {
'Kkma': kkma_result,
'Okt': okt_result,
'Hannanum': hannanum_result,
'Komoran': komoran_result
}
for data_dir in data_directories:
data_directory = os.path.join(base_directory, data_dir)
data_files = [file for file in os.listdir(data_directory) if file.endswith('.json')]
results[data_dir] = {}
with ThreadPoolExecutor() as executor:
for data_file in tqdm(data_files, desc=f"{data_dir} 데이터 처리중"): # tqdm으로 진행률 표시
with open(os.path.join(data_directory, data_file), 'r', encoding='utf-8') as file:
data = json.load(file)
futures = []
for idx, utterance in enumerate(data['utterance'][:100]): # 처음 100개의 데이터만 사용
text = utterance['dialect_form']
futures.append(executor.submit(analyze_text, text))
for idx, future in enumerate(tqdm(futures, desc=f"Utterance 처리중")): # tqdm으로 진행률 표시
result = future.result()
results[data_dir][f'Utterance_{idx + 1}'] = result
# 결과 출력
for data_dir, data_results in results.items():
print(f"{data_dir} 데이터 형태소 분석 결과:")
for utterance, morpheme_data in data_results.items():
print(f"\n{utterance}:")
for morpheme, result in morpheme_data.items():
print(f"{morpheme} 형태소 분석 결과: {result}")
2차 코드에서는 병렬준비와 코드 최적화 실행 + tqdm 실행했습니다.
그런데 계속 결과에 7600개의 데이터를 전처리하고 있었습니다..
그래서 또 수정했습니다ㅎㅎ
3차 코드
import json
from konlpy.tag import Kkma, Okt, Hannanum, Komoran
import os
from concurrent.futures import ThreadPoolExecutor
from tqdm import tqdm # tqdm 라이브러리 추가
# 형태소 분석기 초기화
kkma = Kkma()
okt = Okt()
hannanum = Hannanum()
komoran = Komoran()
# 데이터 디렉토리 경로
base_directory = '/content/drive/MyDrive/jeju/'
# Training 및 Validation 디렉토리
data_directories = ['Training', 'Validation']
# 형태소 분석 결과 저장 딕셔너리
results = {}
def analyze_text(text):
kkma_result = kkma.morphs(text)
okt_result = okt.morphs(text)
hannanum_result = hannanum.morphs(text)
komoran_result = komoran.morphs(text)
return {
'Kkma': kkma_result,
'Okt': okt_result,
'Hannanum': hannanum_result,
'Komoran': komoran_result
}
for data_dir in data_directories:
data_directory = os.path.join(base_directory, data_dir)
data_files = [file for file in os.listdir(data_directory) if file.endswith('.json')]
results[data_dir] = {}
with ThreadPoolExecutor() as executor:
for data_file in tqdm(data_files, desc=f"{data_dir} 데이터 처리중"): # tqdm으로 진행률 표시
with open(os.path.join(data_directory, data_file), 'r', encoding='utf-8') as file:
data = json.load(file)
futures = []
for idx, utterance in enumerate(data['utterance'][:100]): # 처음 100개의 데이터만 사용
text = utterance['dialect_form']
futures.append(executor.submit(analyze_text, text))
for idx, future in enumerate(tqdm(futures, desc=f"Utterance 처리중")): # tqdm으로 진행률 표시
result = future.result()
results[data_dir][f'Utterance_{idx + 1}'] = result
# 결과 출력
for data_dir, data_results in results.items():
print(f"{data_dir} 데이터 형태소 분석 결과:")
for utterance, morpheme_data in data_results.items():
print(f"\n{utterance}:")
for morpheme, result in morpheme_data.items():
print(f"{morpheme} 형태소 분석 결과: {result}")
이것도 돌리자마자 또 10만 개의 데이터를 전처리 하고 있었습니다.
training 데이터 처리 부분에서 모든 데이터 파일에 대해 처리하고 있었던 게 문제였습니다.
또또 수정합니다.
4차 코드
import json
from konlpy.tag import Kkma, Okt, Hannanum, Komoran
import os
from concurrent.futures import ThreadPoolExecutor
from tqdm import tqdm # tqdm 라이브러리 추가
# 형태소 분석기 초기화
kkma = Kkma()
okt = Okt()
hannanum = Hannanum()
komoran = Komoran()
# 데이터 디렉토리 경로
base_directory = '/content/drive/MyDrive/jeju/'
# Training 및 Validation 디렉토리
data_directories = ['Training', 'Validation']
# 형태소 분석 결과 저장 딕셔너리
results = {}
def analyze_text(text):
kkma_result = kkma.morphs(text)
okt_result = okt.morphs(text)
hannanum_result = hannanum.morphs(text)
komoran_result = komoran.morphs(text)
return {
'Kkma': kkma_result,
'Okt': okt_result,
'Hannanum': hannanum_result,
'Komoran': komoran_result
}
total_data = [] # 모든 데이터를 저장할 리스트
# 모든 데이터 수집
for data_dir in data_directories:
data_directory = os.path.join(base_directory, data_dir)
data_files = [file for file in os.listdir(data_directory) if file.endswith('.json')]
for data_file in data_files:
with open(os.path.join(data_directory, data_file), 'r', encoding='utf-8') as file:
data = json.load(file)
total_data.extend(data['utterance'][:100]) # 처음 100개의 데이터를 모두 저장
results['Total'] = {}
# 형태소 분석
with ThreadPoolExecutor() as executor:
for idx, utterance in enumerate(tqdm(total_data, desc="전체 데이터 처리중")):
text = utterance['dialect_form']
result = executor.submit(analyze_text, text).result()
results['Total'][f'Utterance_{idx + 1}'] = result
# 결과 출력
for data_dir, data_results in results.items():
print(f"{data_dir} 데이터 형태소 분석 결과:")
for utterance, morpheme_data in data_results.items():
print(f"\n{utterance}:")
for morpheme, result in morpheme_data.items():
print(f"{morpheme} 형태소 분석 결과: {result}")
ㅎㅎ 아직도 아직도 5079개의 데이터를 처리하고 있네요..
진짜 찐찐찐찐 막 코드를 수정합니다.
5차 마지막 코드
import json
from konlpy.tag import Kkma, Okt, Hannanum, Komoran
import os
from tqdm import tqdm # tqdm 라이브러리 추가
# 형태소 분석기 초기화
kkma = Kkma()
okt = Okt()
hannanum = Hannanum()
komoran = Komoran()
# 데이터 디렉토리 경로
base_directory = '/content/drive/MyDrive/jeju/'
# 원하는 데이터 폴더 선택 (예: 'Training' 또는 'Validation')
data_directory = os.path.join(base_directory, 'Training')
# 형태소 분석 결과 저장 딕셔너리
results = {}
def analyze_text(text):
kkma_result = kkma.morphs(text)
okt_result = okt.morphs(text)
hannanum_result = hannanum.morphs(text)
komoran_result = komoran.morphs(text)
return {
'Kkma': kkma_result,
'Okt': okt_result,
'Hannanum': hannanum_result,
'Komoran': komoran_result
}
# 선택한 데이터 폴더 내의 JSON 파일 목록 가져오기
data_files = [file for file in os.listdir(data_directory) if file.endswith('.json')]
# 최대 100개의 JSON 파일만 선택
data_files = data_files[:100]
# 형태소 분석 결과 저장
results['Selected'] = {}
for data_file in tqdm(data_files, desc="데이터 처리중"):
with open(os.path.join(data_directory, data_file), 'r', encoding='utf-8') as file:
data = json.load(file)
for idx, utterance in enumerate(data['utterance']): # 모든 데이터 사용
text = utterance['dialect_form']
result = analyze_text(text)
results['Selected'][f'Utterance_{idx + 1}'] = result
# 결과 출력
for data_dir, data_results in results.items():
print(f"{data_dir} 데이터 형태소 분석 결과:")
for utterance, morpheme_data in data_results.items():
print(f"\n{utterance}:")
for morpheme, result in morpheme_data.items():
print(f"{morpheme} 형태소 분석 결과: {result}")
드디어 결과가 나왔습니다!
100개의 샘플 데이터로만 했는데도 어마어마한 시간이 소요됐습니다..
Utterance_55: Kkma 형태소 분석 결과: ['여기', '선수', '로', '참가', '하', 'ㄴ', '짬', '이', '니까', '이렇', '게', '사회', '봐주', 'ㄹ', '사람', '이', '없', '잖아'] Okt 형태소 분석 결과: ['여기', '선수', '로', '참가', '한', '짬', '이니까', '이렇게', '사회', '봐줄', '사람', '이', '없잖아'] Hannanum 형태소 분석 결과: ['여기', '서', 'ㄴ', '수', '로', '참가', '하', 'ㄴ', '짬', '이', '니까', '이렇', '게', '사회', '보', '아', '주', 'ㄹ', '사람', '이', '없', '잖아'] Komoran 형태소 분석 결과: ['여기', '선수', '로', '참가', '하', 'ㄴ', '짬', '이', '니까', '이렇', '게', '사회', '보아주', 'ㄹ', '사람', '이', '없', '잖아'] Utterance_56: Kkma 형태소 분석 결과: ['그래서', '하', 'ㄹ', '수', '있', '는', '게임', '되게', '한정적', '이', '었', '단', '말', '야'] Okt 형태소 분석 결과: ['그래서', '할수있는', '게임', '되게', '한정', '적', '이었단', '말', '야'] Hannanum 형태소 분석 결과: ['그래서', '하', 'ㄹ', '수', '있', '는', '게임', '되', '게', '한정적', '이', '었단', '말', '야'] Komoran 형태소 분석 결과: ['그래서', '하', 'ㄹ', '수', '있', '는', '게임', '되', '게', '한정', '적', '이', '었', '단', '말', '야'] Utterance_57: Kkma 형태소 분석 결과: ['내가', '사회', '하', 'ㄹ', '것', '이', '나', '아', '게임', '참여', '보다', '는', '진행', '을', '더', '좋아하', '어', '가지', '구'] Okt 형태소 분석 결과: ['내', '가', '사회', '할게', '나', '게임', '참여', '보다는', '진행', '을', '더', '좋아해가지구'] Hannanum 형태소 분석 결과: ['나', '가', '사회할게', '나', '게임', '참여', '보다는', '진행', '을', '더', '좋아해가지구'] Komoran 형태소 분석 결과: ['내', '가', '사회', '하', 'ㄹ게', '나', '게임', '참여', '보다', '는', '진행', '을', '더', '좋아하', '아', '가지', '구'] Utterance_58: Kkma 형태소 분석 결과: ['그래서', '우리', '여섯', '명이', '각자', '한', '명당', '게임', '을', '하', 'ㄴ', '개', '씩'] Okt 형태소 분석 결과: ['그래서', '우리', '여섯', '명', '이', '각자', '한', '명당', '게임', '을', '한', '개', '씩'] Hannanum 형태소 분석 결과: ['그래서', '우리', '여섯', '명', '이', '각자', '하', 'ㄴ', '명당', '게임', '을', '하', 'ㄴ', '개', '씩'] Komoran 형태소 분석 결과: ['그래서', '우리', '여섯', '명', '이', '각자', '한', '명당', '게임', '을', '한', '개', '씩'] Utterance_59: Kkma 형태소 분석 결과: ['준비', '하', '어', '오', '는', '거지'] Okt 형태소 분석 결과: ['준비', '해', '오는', '거지'] Hannanum 형태소 분석 결과: ['준비해', '오', '는', '거지'] Komoran 형태소 분석 결과: ['준비', '하', '아', '오', '는', '거지'] Utterance_60: Kkma 형태소 분석 결과: ['너', '&', 'name', '1', '&', '너', '가'] Okt 형태소 분석 결과: ['너', '&', 'name', '1', '&', '너', '가'] Hannanum 형태소 분석 결과: ['너', '&name1&', '너', '가'] Komoran 형태소 분석 결과: ['너', '&', 'name', '1', '&', '너', '가'] Utterance_61: Kkma 형태소 분석 결과: ['아니'] Okt 형태소 분석 결과: ['아니'] Hannanum 형태소 분석 결과: ['아니'] Komoran 형태소 분석 결과: ['아니'] Utterance_62: Kkma 형태소 분석 결과: ['그', '건', '닿', 'ㄴ', '톡', '에', '서', '상의', '를', '하', '어야지', '이제'] Okt 형태소 분석 결과: ['그건', '단', '톡', '에서', '상의', '를', '해야지', '이제'] Hannanum 형태소 분석 결과: ['그것', '은', '단톡', '에서', '상의', '를', '하', '어야지', '이제'] Komoran 형태소 분석 결과: ['그것', 'ㄴ', '단', '톡', '에서', '상의', '를', '하', '아야지', '이제'] Utterance_63: Kkma 형태소 분석 결과: ['오케이'] Okt 형태소 분석 결과: ['오케이'] Hannanum 형태소 분석 결과: ['오케이'] Komoran 형태소 분석 결과: ['오케이'] Utterance_64: Kkma 형태소 분석 결과: ['그래서', '막', '그것', '을', '하', '어서'] Okt 형태소 분석 결과: ['그래서', '막', '그걸', '해서'] Hannanum 형태소 분석 결과: ['그래서', '막', '그걸', '하', '어서'] Komoran 형태소 분석 결과: ['그래서', '막', '그것', '하', '아서'] Utterance_65: Kkma 형태소 분석 결과: ['술', '먹', '으면서', '하', 'ㄹ', '수', '도', '있', '고', '뭐', '그냥'] Okt 형태소 분석 결과: ['술', '먹으면서', '할', '수도', '있고', '뭐', '그냥'] Hannanum 형태소 분석 결과: ['술', '먹', '으면서', '하', 'ㄹ', '수', '도', '있', '고', '뭐', '그냥'] Komoran 형태소 분석 결과: ['술', '먹', '으면서', '하', 'ㄹ', '수', '도', '있', '고', '뭐', '그냥'] Utterance_66: Kkma 형태소 분석 결과: ['그래서', '내', '생각', '에', '술', '먹', '으면', '하', 'ㄹ', '것', '같애'] Okt 형태소 분석 결과: ['그래서', '내', '생각', '에', '술', '먹으면', '할', '것', '같', '애'] Hannanum 형태소 분석 결과: ['그래서', '내', '생각', '에', '술', '먹', '으면', '하', 'ㄹ', '것', '같애'] Komoran 형태소 분석 결과: ['그래서', '내', '생각', '에', '술', '먹', '으면', '하', 'ㄹ', '것', '같애'] Utterance_67: Kkma 형태소 분석 결과: ['그냥', '매', 'ㄴ', '정식', '에', '그렇', '게', '하', '면', '벌칙', '하', 'ㄹ', '것', '도', '없', '고', '하', '니까'] Okt 형태소 분석 결과: ['그냥', '맨', '정식', '에', '그렇게', '하면', '벌칙', '할', '것', '도', '없고', '하니까'] Hannanum 형태소 분석 결과: ['그냥', '맨정식', '에', '그렇', '게', '하', '면', '벌칙', '하', 'ㄹ', '것', '도', '없', '고', '하', '니까'] Komoran 형태소 분석 결과: ['그냥', '맨', '정식', '에', '그렇', '게', '하', '면', '벌칙', '하', 'ㄹ', '것', '도', '없', '고', '하', '니까'] Utterance_68: Kkma 형태소 분석 결과: ['그래서', '만약', '에', '예', '를', '들어서'] Okt 형태소 분석 결과: ['그래서', '만약', '에', '예', '를', '들어서'] Hannanum 형태소 분석 결과: ['그래서', '만약', '에', '예', '를', '들', '어서'] Komoran 형태소 분석 결과: ['그래서', '만약', '에', '예', '를', '들', '어서'] Utterance_69: Kkma 형태소 분석 결과: ['신서', '유기', '게임', '을', '하', 'ㄴ다', '치', '면', '다', '개이', 'ㄴ', '전인', '걸', '로', '하', '고'] Okt 형태소 분석 결과: ['신', '서유기', '게임', '을', '한다', '치면', '다', '개인', '전인', '걸', '로', '하고'] Hannanum 형태소 분석 결과: ['신서유', '이', '기', '게임', '을', '하', 'ㄴ다', '치', '면', '다', '개', '이', 'ㄴ', '전', '이', 'ㄴ', '걸', '로', '하', '고'] Komoran 형태소 분석 결과: ['신서유기', '게임', '을', '하', 'ㄴ다', '치', '면', '다', '개인', '전인', '것', '로', '하', '고'] Utterance_70: Kkma 형태소 분석 결과: ['내가', '하구', '.', '하', '어서', '맞추', '는', '것', '으로', '하', '고', '상도', '있', '고', '뭐', '약간', '이런', '식', '으로'] Okt 형태소 분석 결과: ['내', '가', '하구', '.', '해서', '맞추는', '걸', '로', '하고', '상도', '있고', '뭐', '약간', '이런', '식', '으로'] Hannanum 형태소 분석 결과: ['나', '가', '하구', '.', '하', '어서', '맞추', '는', '걸', '로', '하', '고', '상', '도', '있', '고', '뭐', '약간', '이런', '식', '으로'] Komoran 형태소 분석 결과: ['내', '가', '하', '구', '.', '하', '아서', '맞추', '는', '것', '로', '하', '고', '상도', '있', '고', '뭐', '약간', '이런', '식', '으로'] Utterance_71: Kkma 형태소 분석 결과: ['벌칙', '도', '정하', '자'] Okt 형태소 분석 결과: ['벌칙', '도', '정', '하자'] Hannanum 형태소 분석 결과: ['벌칙', '도', '정하', '자'] Komoran 형태소 분석 결과: ['벌칙', '도', '정하', '자'] Utterance_72: Kkma 형태소 분석 결과: ['나', '아', '나', '술', '먹', '을', '때', '하', '면', '당연히', '뭐', '그렇', '게', '술', '한잔', '먹', '기', '뭐', '이런', '거', '이', '겠', '지만'] Okt 형태소 분석 결과: ['나', '나', '술', '먹을', '때', '하면', '당연히', '뭐', '그렇게', '술', '한잔', '먹기', '뭐', '이런거겠지만'] Hannanum 형태소 분석 결과: ['나', '나', '술', '먹', '을', '때', '하', '면', '당연히', '뭐', '그렇', '게', '술', '한잔', '먹', '기', '뭐', '이런거', '이', '겠지만'] Komoran 형태소 분석 결과: ['나', '나', '술', '먹', '을', '때', '하', '면', '당연히', '뭐', '그렇', '게', '술', '한잔', '먹', '기', '뭐', '이런', '거', '하', '겠', '지만'] Utterance_73: Kkma 형태소 분석 결과: ['술', '안', '먹', '으면서', '하면', '은', '인디언', '밥', '그런', '거', '말', '고', '생각', '이', '안', '나', '거든'] Okt 형태소 분석 결과: ['술', '안', '먹으면서', '하면은', '인디언', '밥', '그런', '거', '말고', '생각', '이', '안', '나거든'] Hannanum 형태소 분석 결과: ['술', '안', '먹', '으면서', '하', '면', '은', '인디언', '밥', '그러', 'ㄴ', '것', '말', '고', '생각', '이', '알', 'ㄴ', '나', '이', '거든'] Komoran 형태소 분석 결과: ['술', '안', '먹', '으면서', '하', '면', '은', '인디언', '밥', '그런', '거', '말', '고', '생각', '이', '안', '나', '거든'] Utterance_74: Kkma 형태소 분석 결과: ['입수'] Okt 형태소 분석 결과: ['입수'] Hannanum 형태소 분석 결과: ['입수'] Komoran 형태소 분석 결과: ['입수'] Utterance_75: Kkma 형태소 분석 결과: ['입수'] Okt 형태소 분석 결과: ['입수'] Hannanum 형태소 분석 결과: ['입수'] Komoran 형태소 분석 결과: ['입수'] Utterance_76: Kkma 형태소 분석 결과: ['입수'] Okt 형태소 분석 결과: ['입수'] Hannanum 형태소 분석 결과: ['입수'] Komoran 형태소 분석 결과: ['입수'] Utterance_77: Kkma 형태소 분석 결과: ['욕조', '인', '?', '우리', '욕조', '인', '?'] Okt 형태소 분석 결과: ['욕조', '인', '?', '우리', '욕조', '인', '?'] Hannanum 형태소 분석 결과: ['욕조', '일', 'ㄴ', '?', '우리', '욕조', '일', 'ㄴ', '?'] Komoran 형태소 분석 결과: ['욕조', '인', '?', '우리', '욕조', '인', '?'] Utterance_78: Kkma 형태소 분석 결과: ['아', '아', '그러면', '은'] Okt 형태소 분석 결과: ['아', '그러면은'] Hannanum 형태소 분석 결과: ['아', '그러면', '은'] Komoran 형태소 분석 결과: ['아', '그러면', '은'] Utterance_79: Kkma 형태소 분석 결과: ['그럼', '화장', '화장실', '에서', '그', '찬물', '로', '싸', '아', '대기', '맞', '자'] Okt 형태소 분석 결과: ['그럼', '화장', '화장실', '에서', '그', '찬물', '로', '싸대기', '맞자'] Hannanum 형태소 분석 결과: ['그렇', 'ㅁ', '화장', '화장실', '에서', '그', '찬물', '로', '쓰', '어', '대', '기', '맞', '자'] Komoran 형태소 분석 결과: ['그럼', '화장', '화장실', '에서', '그', '찬물', '로', '싸대', '기', '맞', '자'] Utterance_80: Kkma 형태소 분석 결과: ['물', '싸', '아', '대기', '?'] Okt 형태소 분석 결과: ['물', '싸대기', '?'] Hannanum 형태소 분석 결과: ['물싸대', '이', '기', '?'] Komoran 형태소 분석 결과: ['물', '싸대', '기', '?']
이건 데이터를 csv 파일로 받아서 비교 분석해보았는데요.
Okt가 가장 성능이 좋게 토큰화를 시키고 있었습니다.
제주도 사투리 중에서 먼, 난, 이런 받침이 꽤 많은데 이 부분을 특히 잘 잡아내는 것 같습니다.
이렇게 저에게 맞는 형태소 분석기를 골랐고
이제는 진짜 모델을 짜볼 시간이 왔습니다..
참고로 저는 환경설정에서 실패를 맛보고 colab에서 돌렸는데요
이 모델을 다 돌려보면 colab 말고 로컬에서도 돌려보고 싶습니다.
그리고 가끔 colab 시간 때문에 데이터 불러오다가 끝나는 경우가 있는데
이 부분은 google drive에 데이터를 넣어두면 해결되는 것 같습니다. (데이터가 크면 이것도 불가능합니다)
아무튼 길고 긴 형태소 비교였습니다.
감사합니다
'프로젝트 > 개인 프로젝트' 카테고리의 다른 글
[자연어 개인 프로젝트] 임베딩과 Transformer 구현 (0) | 2023.09.26 |
---|---|
[자연어 개인 프로젝트] Okt로 토큰화 하기 (0) | 2023.09.25 |
[자연어 개인 프로젝트] 한국어를 활용한 Byte-Pair Encoding (0) | 2023.09.21 |
[자연어 개인 프로젝트] 제주도 사투리를 번역하자 (2) (0) | 2023.09.19 |
[자연어 개인 프로젝트] 제주도 사투리를 번역하자 (1) (0) | 2023.09.18 |