<jupyter_start><jupyter_text>TEXT MINING for PRACTICE- 본 자료는 텍스트 마이닝을 활용한 연구 및 강의를 위한 목적으로 제작되었습니다.- 본 자료를 강의 목적으로 활용하고자 하시는 경우 꼭 아래 메일주소로 연락주세요.- 본 자료에 대한 허가되지 않은 배포를 금지합니다.- 강의, 저작권, 출판, 특허, 공동저자에 관련해서는 문의 바랍니다.- **Contact : ADMIN(<EMAIL>)**---<jupyter_code># 텍스트 분석을 위한 TEANAPS 라이브러리를 설치합니다.
# TEANAPS는 Google Colaboratory/Linux 환경에 최적화되어 있습니다.
# Windows 환경에서 일부 기능에 제한이 있을 수 있습니다.
# TEANAPS (https://github.com/fingeredman/teanaps)
#!git clone https://github.com/fingeredman/teanaps.git
#!ls
#!python "teanaps/teanaps_setup.py"<jupyter_output><empty_output><jupyter_text>WEEK 10-1. 뉴스기사 요약과 키워드 추출하기: 추출요약- Python으로 문서를 요약하고 키워드를 추출하는 방법에 대해 다룹니다.---  1. 뉴스기사 불러오기---<jupyter_code>from teanaps.handler import FileHandler

fh = FileHandler()

PATH = "data/article_sample.txt"
line_list = fh.load_txt(PATH)
line_list[:3]<jupyter_output><empty_output><jupyter_text>2. 뉴스기사 요약하기---<jupyter_code>from teanaps.text_analysis import DocumentSummarizer

ds = DocumentSummarizer()
article = line_list[50]
article
content = article[4]
content<jupyter_output><empty_output><jupyter_text>2.1. 요약하기: TextRank---<jupyter_code>SUMMARIZER_TYPE = "textrank"
MAX_SENTENCES = 3

result = ds.summarize(SUMMARIZER_TYPE, MAX_SENTENCES, document=content)
result<jupyter_output><empty_output><jupyter_text>2.2. 요약하기: LSA---<jupyter_code>SUMMARIZER_TYPE = "lsa"
MAX_SENTENCES = 3

result = ds.summarize(SUMMARIZER_TYPE, MAX_SENTENCES, document=content)
result<jupyter_output><empty_output><jupyter_text>2. 키워드 추출하기---<jupyter_code>from teanaps.text_analysis import KeywordExtractor

#kea = KeywordExtractor(model_path="/model")
kea = KeywordExtractor()
input_text = "유플러스는 통신3사(SKT, LGU+, KT) 중에 5G 요금제를 최초로 선보였습니다."
#input_text = "푸른 하늘에 F-15가 북한을 향해 날아갑니다."
#input_text = "오늘 출시된 V60 ThinkQ는 LG전자의 핵심 제품입니다."
#input_text = "BERT 발표 후 NLP 기술동향에 큰 변화가 생겼습니다."
#input_text = "그의 말년에 특히 헤파이스티온의 죽음 이후 알렉산더는 과대망상과 편집증 증세를 보이기 시작했다."
#input_text = "영국 매체 스카이 스포츠는 25일(한국시간) 맨유 미드필더 포그바가 여름 이적시장 실패 후, 1월에 레알 마드리드로 이적할 수 있다고 전했다."
#input_text = "옛날부터 흩어진 유대인들이 살았으며, 에베소 공의회와 칼케돈 공의회에서 이단으로 몰린 경교같은 기독교 소수 교파의 교회들이 로마교회의 탄압을 피해 거주하였다."
#input_text = "자동차가 차선 밖으로 나가거나 언덕 밑으로 떨어지는 사고를 막기 위하여 도로변이나 보도·차도의 경계, 고속도로 중앙에 설치하는 방호책(防護柵)의 일종"
#input_text = "산행을 하는 사람들은 음식이 가벼울수록 편하기 때문에 냉동 건조 식품을 선호한다."

result = kea.parse(input_text, max_keyword=5)
result
news_list = [
    "현대·기아차가 올해 7월까지 전 세계 자동차 브랜드 중 네 번째로 전기차를 많이 판매한 것으로 나타났다.",
    "4일 자동차연구원이 SNE리서치 통계를 분석한 내용에 따르면 현대·기아차는 올해 7월 말 기준으로 6만707대의 전기차를 판매해 세계 4위를 차지했다.",
    "세계 최대 전기차 기업 테슬라가 19만1971대로 1위를 차지했으며, 르노-닛산과 폴크스바겐이 각기 8만6189대로 7만5228대로 뒤를 이었다.",
    "5위는 중국 BYD(4만2340대)였다.",
    "현대·기아차는 작년 같은 기간(4만8570대)에 비해 판매량이 25% 늘어난 점이 눈에 띈다.",
    "모델3를 앞세운 테슬라는 판매량이 4% 증가하는 데 그쳤고, 주력 모델인 리프의 판매가 급감한 르노닛산은 5% 감소했다.",
    "폴크스바겐은 지난해에 비해 110% 늘어나며 현대·기아차를 앞질렀다. BYD는 지난해(11만3409대)에 비해 63% 감소하며 순위가 하락했다.",
]
for news in news_list:
    keyword_list = kea.parse(news, max_keyword=10)
    print(news)
    for keyword in keyword_list:
        print(">", keyword)<jupyter_output>현대·기아차가 올해 7월까지 전 세계 자동차 브랜드 중 네 번째로 전기차를 많이 판매한 것으로 나타났다.
> ('7월까지', 0.15444, (11, 15))
> ('전기차', 0.11016, (37, 40))
> ('세계', 0.04146, (18, 20))
> ('판매', 0.0385, (45, 47))
> ('현대', 0.03444, (0, 2))
> ('기아차', 0.03396, (3, 6))
> ('자동차', 0.02318, (21, 24))
> ('브랜드', 0.01534, (25, 28))
> ('올해', 0.00318, (8, 10))
4일 자동차연구원이 SNE리서치 통계를 분석한 내용에 따르면 현대·기아차는 올해 7월 말 기준으로 6만707대의 전기차를 판매해 세계 4위를 차지했다.
> ('6만707대의', 3.19011, (55, 62))
> ('4위', 0.50873, (75, 77))
> ('리서치', 0.29282, (14, 17))
> ('4일', 0.18276, (0, 2))
> ('세계', 0.1106, (72, 74))
> ('자동차', 0.08944, (3, 6))
> ('7월', 0.08403, (45, 47))
> ('통계', 0.08104, (18, 20))
> ('판매', 0.07005, (68, 70))
> ('분석', 0.0547, (22, 24))
세계 최대 전기차 기업 테슬라가 19만1971대로 1위를 차지했으며, 르노-닛산과 폴크스바겐이 각기 8만6189대로 7만5228대로 뒤를 이었다.
> ('8만6189대', 3.09938, (56, 63))
> ('19만1971대', 2.89579, (18, 26))
> ('7만5228대', 2.86514, (65, 72))
> ('르노-닛산', 2.5906, (39, 44))
> ('폴크스바겐', 2.03367, (46, 51))
> ('테슬라', 0.8087, (13, 16))
> ('르노', 0.78047, (39, 41))
> ('폴크스', 0.66238, (46, [...]
{'fraction_non_alphanumeric': 0.1582751744765703, 'fraction_numerical': 0.09546360917248255, 'mean_word_length': 4.273324572930354, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 53, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '126634', 'license': 'Apache-2.0', 'n_tokens_mistral': 2974, 'n_tokens_neox': 3430, 'n_words': 523, 'path': 'practice-note/week_10/W10-1_text-mining-for-practice_python_text-summerization.ipynb', 'repo_name': 'fingeredman/text-mining-for-prcatice', 'size': '4022'}