본문 바로가기
프로그램

[파이썬] 문장 단어수 세기

by 오디세이99 2022. 8. 12.
728x90
반응형

 

다음과 같이 문장 요약 코드가 있습니다.

얼마나 요약을 하는지 단어수 Count로 측정 보겠습니다.

문장 요약 코드 입니다.

from lexrankr import LexRank
from typing import List

class MyTokenizer:
    def __call__(self, text: str) -> List[str]:
        tokens: List[str] = text.split()
        return tokens

your_text = '시장은 인플레이션 지표에 주목하고 있다. \
            이날 나온 7월 PPI는 전월 대비 -0.5%(계절조정 기준)를 기록했다. \
            PPI의 감소는 2년 여 만의 처음이다. \
            1년 전과 비교하면 9.8%로 전월(11.3%)보다 크게 떨어졌다. \
            전날 나온 7월 CPI는 전년 대비 8.5%로 시장 예상치(8.5%)를 밑돌았고 \
            전월 대비로도 0.00%를 기록 월가 전망(0.2%)보다 낮았다. \
            모나 마하얀 에드워드 존스의 선임 투자 전략가는 \
            “시장은 어제와 오늘 나온 인플레이션 지표로 올바른 방향으로 \
            한 걸음 더 나아갔다는 것을 높이 평가하고 있다”고 전했다.'
    
    
# 1. init
mytokenizer: MyTokenizer = MyTokenizer()
lexrank: LexRank = LexRank(mytokenizer)

# 2. summarize (like, pre-computation)
lexrank.summarize(your_text)

# 3. probe (like, query-time)
summaries: List[str] = lexrank.probe()
for summary in summaries:
    print('- ' + summary)

 

- 시장은 인플레이션 지표에 주목하고 있다
- 이날 나온 7월 PPI는 전월 대비 -0.5%(계절조정 기준)를 기록했다
- 1년 전과 비교하면 9.8%로 전월(11.3%)보다 크게 떨어졌다

 

이제 단어수를 Count 해 보겠습니다.

split 함수를 사용합니다. default로 ' ' 공백을 단어를 구분합니다.

정확한 단어 Count라고 할 수 없을 수 있습니다. 하지만 간략한 Count로 간단히 사용할 수 있습니다.

word_cnt = len(your_text.split())

tot_summary = ''
summaries: List[str] = lexrank.probe()
for summary in summaries:
#     print(summary)
    tot_summary += summary

summary_cnt = len(tot_summary.split())

print('원본 단어 수 [',word_cnt, '] -> 요약 단어 수 [',summary_cnt,']')

 

원본 단어 수 [ 68 ] -> 요약 단어 수 [ 19 ]

 

 

728x90
반응형

댓글