1. PyKoSpacing
: 띄어쓰기가 되어있지 않은 문장을 띄어쓰기를 한 문장으로 변환해주는 패키지
: 대용량 코퍼스를 학습하여 만들어진 띄어쓰기 딥 러닝 모델
from pykospacing import Spacing
spacing = Spacing()
kospacing_sent = spacing(new_sent)
2. Py-Hanspell
: 네이버 한글 맞춤법 검사기를 바탕으로 만들어진 패키지
from hanspell import spell_checker
sent = "맞춤법 틀리면 외 않되? 쓰고싶은대로쓰면돼지 "
spelled_sent = spell_checker.check(sent)
hanspell_sent = spelled_sent.checked
print(hanspell_sent)
맞춤법 틀리면 왜 안돼? 쓰고 싶은 대로 쓰면 되지
3. SOYNLP를 이용한 단어 토큰화
전체 코퍼스로부터 응집 확률과 브랜칭 엔트로피 단어 점수표를 만드는 과정
word_extractor = WordExtractor()
word_extractor.train(corpus)
word_score_table = word_extractor.extract()
word_score_table["반포한"].cohesion_forward
0.08838002913645132
word_score_table["반포한강공원"].cohesion_forward
0.37891487632839754
word_score_table["디스"].right_branching_entropy
1.6371694761537934
word_score_table["디스플레"].right_branching_entropy
-0.0
# 하나의 단어가 끝나면 그 경계 부분부터 다시 브랜칭 엔트로피 값이 증가 -> 단어 판단
word_score_table["디스플레이"].right_branching_entropy
3.1400392861792916
from soynlp.tokenizer import LTokenizer
scores = {word:score.cohesion_forward for word, score in word_score_table.items()}
l_tokenizer = LTokenizer(scores=scores)
l_tokenizer.tokenize("국제사회와 우리의 노력들로 범죄를 척결하자", flatten=False)
[('국제사회', '와'), ('우리', '의'), ('노력', '들로'), ('범죄', '를'), ('척결', '하자')]
: 띄어쓰기가 되지 않는 문장에서 점수가 높은 글자 시퀀스를 순차적으로 찾아내는 토크나이저
from soynlp.tokenizer import MaxScoreTokenizer
maxscore_tokenizer = MaxScoreTokenizer(scores=scores)
maxscore_tokenizer.tokenize("국제사회와우리의노력들로범죄를척결하자")
['국제사회', '와', '우리', '의', '노력', '들로', '범죄', '를', '척결', '하자']
4. SOYNLP를 이용한 반복되는 문자 정제
from soynlp.normalizer import *
print(emoticon_normalize('앜ㅋㅋㅋㅋ이영화존잼쓰ㅠㅠㅠㅠㅠ', num_repeats=2))
아ㅋㅋ영화존잼쓰ㅠㅠ
print(repeat_normalize('와하하하하하하하하하핫', num_repeats=2))
와하하핫
5. Customized KoNLPy
pip install customized_konlpy
twitter.add_dictionary('은경이', 'Noun')
twitter.morphs('은경이는 사무실로 갔습니다.')
['은경이', '는', '사무실', '로', '갔습니다', '.']