호랭이 분석가

[Azure] Language 서비스를 통한 문서 요약 (Python) 본문

Azure

[Azure] Language 서비스를 통한 문서 요약 (Python)

데이터호랑이 2023. 7. 16. 21:18
반응형

미드저니로 생성한 이미지

 

Azure Cognitive Service에서 제공하는 Language 서비스를 이용하여

문서나 문장을 요약하는 방법에 대해 알아보겠습니다. azure-ai-textanalytics

 

pip install azure-ai-textanalytics==5.3.0

 

azure-ai-textanalytics 라이브러리를 설치해 줍니다.

Azure의 Cognitive Search와 Translator 서비스에서 사용되는 라이브러리와는

다르기 때문에 새로 설치해주어야 합니다.

 

from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential

language_key = 'your-language-key'
language_endpoint = 'your-language-endpoint'

ta_credential = AzureKeyCredential(language_key)
client = TextAnalyticsClient(
    endpoint = language_endpoint,
    credential = ta_credential
)

 

Language 서비스 생성을 통해 발급된 키와 엔드포인트를 입력해 줍니다.

 

 

def sample_extractive_summarization(client):
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.textanalytics import (
        TextAnalyticsClient,
        ExtractiveSummaryAction
    ) 

    document = [
        "The extractive summarization feature uses natural language processing techniques to locate key sentences in an unstructured text document. "
        "These sentences collectively convey the main idea of the document. This feature is provided as an API for developers. " 
        "They can use it to build intelligent solutions based on the relevant information extracted to support various use cases. "
        "Extractive summarization supports several languages. It is based on pretrained multilingual transformer models, part of our quest for holistic representations. "
        "It draws its strength from transfer learning across monolingual and harness the shared nature of languages to produce models of improved quality and efficiency. "
    ]

    poller = client.begin_analyze_actions(
        document,
        actions=[
            ExtractiveSummaryAction(max_sentence_count=4)
        ],
    )

    document_results = poller.result()
    for result in document_results:
        extract_summary_result = result[0]  # first document, first result
        if extract_summary_result.is_error:
            print("...Is an error with code '{}' and message '{}'".format(
                extract_summary_result.code, extract_summary_result.message
            ))
        else:
            print("Summary extracted: \n{}".format(
                " ".join([sentence.text for sentence in extract_summary_result.sentences]))
            )

sample_extractive_summarization(client)

 

Azure 샘플에서 확인할 수 있는 코드와 차이점은

ExtractiveSummaryAction을 사용한다는 점인데

ExtractSummaryAction은 사용이 불가하여 변경하였고 문제없이 작동하였습니다.

 

그리고 요약할 문서는 List 형태로 제공되어야 합니다.

 

 

def text_summary(text, client) : 
    poller = client.begin_analyze_actions(
        [text],
        actions = [
            ExtractiveSummaryAction(max_sentence_count = 4)
        ]
    )
    
    text_results = poller.result()
    
    for result in text_results :
        extract_summary_result = reulst[0]
        
    return extract_summary_result.sentences[0].text

 

추가적으로 필요한 내용은 아래 링크를 참고하시면 됩니다.

 

 

 

빠른 시작: 문서 요약 사용 - Azure Cognitive Services

이 빠른 시작을 사용하여 문서 요약 사용을 시작합니다.

learn.microsoft.com

 

'Azure' 카테고리의 다른 글

[Azure] Language Translator로 번역하기 (Python)  (0) 2023.07.15
Comments