정통적인 글(뉴스, 칼럼 등)은 기본적인 품사양식에 맞춰져있어 품사태그로 전처리 쉽지만,
신조어가 포함되어있는 등에는 바이트페어 변환이 유용할 수 있음
바이트단위로 텍스트를 나눔
빈도확률에 따라 최적화된 토큰셋
1. spm모듈
텍스트뭉치를 텍스트 파일로 생성
텍스트 뭉치를 입력받게 되어있음
텍스트파일에 구축을 해놓으면, 텍스트 파일을 그대로 입력해 학습 가능
import sentencepiece as spm
import pandas as pd
import re
#텍스트파일 열어주기
df = pd.read_csv('./data/sentence2_test.csv')
#인터페이스가 텍스트 뭉치를 넣게 만들어놨음
# 추가 쓰기모드('a')로 텍스트 파일 열기
with open('./data/sentence2_test.txt', 'a', encoding='utf-8') as af:
#a모드로 열어두기 : 가지고있는거로 계속 작업하도록
#with : 시스템과 연결되어서 연결을 끊어야할 때 사용
#open함수 결과나 close함수 써야할때 with을 사용해서 자동으로 끊어주게 만들어줌
#영역을 확실하게 구분할 수 있다는 장점
#as명령어로 변수에 할당
for text in df['text']: #반복문으로 하나씩 가져옴
text = str(text).strip()
text= re.sub(r'[^\w\s]', '', review) # 특수문자 제거
text = re.sub(r'[\n\t]', ' ', review) # 줄바꿈, 탭 제거
text = re.sub(r'\s+', ' ', review) # 연속된 공백 제거 (연속된 띄어쓰기를 띄어쓰기 하나로 바꿈)
text = text.strip() # 문장 양끝 공백 제거
try:
# kwords = mecab.morphs(text)
# rnew_text = ' '.join(kwords)
af.write(text+'\n')
except:
pass
텍스트파일에서 토큰 사전과 sentencepiece모델 생성
spm.SentencePieceTrainer.train(input='./data/sentence2_test.txt', # 텍스트 뭉치 파일
model_prefix='./model/spm3000', # 출력 모델 파일 이름
vocab_size=3000 # 토큰 개수
)
input : 텍스트 뭉치 파일을 넣어줌
model_prefix : 저장시킬 모델 파일 이름을 넣어주면 저장됨
vocab_size : 토큰 개수를 설정
텍스트 규모에 따라 사이즈를 설정해주어야 함
사이즈가 부적절하면 에러가 날 수 있음 (에러안내에 설정할 범위를 알려줌)
sentencepiece 모델로 토큰화
import sentencepiece as spm
import pandas as pd
import re
sp = spm.SentencePieceProcessor(model_file='./model/spm3000.model') # 모델 로드
#학습결과에 해당하는 모델파일 경로를 넣어줘야 함
df = pd.read_csv('./data/sentence2_test.csv')
text = df.loc[0,'text']
sp_list = sp.encode(text, out_type=int)
#인코딩 함수 이용해서 변환시켜줌 / 순서로 나와야할때 type을 int로 넣어줌
print(text)
print(sp_list)
결과앞에 _가 있으면 앞에 띄어쓰기가 붙는다는 뜻
'데이터 분석 > 키워드 분석' 카테고리의 다른 글
[이론] 텍스트 시각화 - 빈도 & TF-IDF 그래프 (1) | 2025.01.22 |
---|---|
[이론] 벡터화 (2) | 2025.01.21 |
[이론] 형태소 분석 (2) | 2025.01.21 |
[이론] 텍스트 클렌징 (3) | 2025.01.21 |
[이론] 토큰화 (2) | 2025.01.21 |