최근에 Datacamp로 python을 공부하던 중 NLP 관련 재밌는 게 하나가 있어서 기록을 남기고자 한다. 한국어에 적용되는 건 아니지만, 영어로 된 문장에 대해서 가독성 테스트(Readability Test)를 하는 것이다. 가독성 테스트에 대해 굳이 설명할 필요는 없겠지만, 우리가 알아보고 싶은 문장이나 글이 얼마나 읽기 쉬운지를 알아보는 것이다.
기본적인 아이디어는 문장을 쪼개서 벡터화한 다음, 그것을 숫자로 해석하는 방향이다. 강의를 들으면서 알았던 케이스인데, 여기서 소개하고자 하는 것은 두 가지(Flesch, Gunning fog)이다.
Flesch는 평균적인 문장과 음절이 길다면, 더 어렵다는 내용이다. 어려움에 대해서 측정하는 방법 자체에 대해서는 굉장히 직관적이기 때문에 그렇게 큰 어려움은 없을 것이다. 텍스트를 입력값으로 넣었을 때, 출력을 우리가 해석해야 하는데, Flesch는 점수가 높을 수록 가독성이 높다고 본다.
두 번째로 Gunning fog 역시 문장의 길이가 중요하지만, 여기에 더해서 어려운 단어들(음절이 긴 단어 등)이 포함된 비율에 관한 지표를 계산한다. 따라서, 이 비율이 높을수록 가독성이 낮다고 보는 것이다.
실제로 적용은 다음 코드와 같이 적용이 가능하다. 텍스트를 Textatistic( )에 입력받고, scores 메서드를 적용해 가독성 점수를 만든다. 여기서 가독성 점수는 각각 유형별로 dictionary 형태로 저장되기 때문에 key만 입력해주면 출력이 간단하다.
# Import Textatistic
from textatistic import Textatistic
# Compute the readability scores
readability_scores = Textatistic(sisyphus_essay).scores
# Print the flesch reading ease score
print("Flesch :", readability_scores['flesch_score'])
print("Gunning fog :", readability_scores['gunningfog_score'])
생각보다 굉장히 간편하게 사용할 수 있는데, 다양한 분야에 응용도 가능해보인다. 우선, 원래 목적인 가독성 여부를 체크에 집중해 문서 발행 이전에 가독성 테스트에 활용할 수 있다. 또는 스팸메일 처럼 걸러내야 하는 메일을 찾을 때, 조건 중 하나로도 활용이 가능해 보인다.
참고: www.erinhengel.com/software/textatistic/
Erin Hengel
Python package to calculate the Flesch Reading Ease, Flesch-Kincaid, Gunning Fog, Simple Measure of Gobbledygook (SMOG) and Dale-Chall readability indices. Textatistic also contains functions to count the number of sentences, characters, syllables, words,
www.erinhengel.com
'Python > Data Analysis' 카테고리의 다른 글
[NLP] 임베딩과 Word2Vec 실습해보기 (0) | 2022.09.07 |
---|---|
[NLP] Char-RNN 을 활용하여 언어 모델링 실습 | 텍스트 생성 (0) | 2022.06.06 |
[NLP] N-gram 모델 구현하기 기초 | 임베딩, NLTK (0) | 2022.05.30 |
TensorFlow로 딥러닝 모델 구현하기 | 시퀀셜, 함수형, 서브클래싱 API (0) | 2022.05.17 |
[Modeling] 파이썬으로 선형계획법 최적화하기 | SciPy (0) | 2020.07.20 |