인선미 강사님
Azure AI 서비스는 클라우드 기반 서비스로, 다양한 AI 기능을 제공하여 정교하고 지능적인 애플리케이션을 개발할 수 있는 빌딩 블록입니다. 이를 활용하면 자연어 처리, 컴퓨터 비전, 의사결정 지원 등 여러 범주에 걸친 AI 작업을 수행할 수 있습니다.
자연어 처리는 인간의 서면 및 음성 언어를 이해하고, 이를 기반으로 적절히 응답하는 AI 기술입니다. 이를 통해 텍스트 분석, 문서 요약, 브랜드/회사명 추출 등 다양한 작업을 수행할 수 있습니다.
구조화되지 않은 텍스트에서 유의미한 정보를 추출하기 위해 다음과 같은 기술이 사용됩니다:
긴 텍스트 본문에서 주요 요점을 요약하여 정보의 핵심을 간결하게 전달합니다.
Azure Cognitive Services에 인증된 클라이언트를 생성합니다. 이후 다른 메서드에서 이 클라이언트를 사용해 텍스트 분석 작업을 수행합니다.
def authenticate_client():
load_dotenv() # 환경 변수(.env 파일) 불러오기
ai_endpoint = os.getenv('AI_SERVICE_ENDPOINT') # API 엔드포인트
ai_key = os.getenv('AI_SERVICE_KEY') # API 키
ta_credential = AzureKeyCredential(ai_key) # API 키로 인증 객체 생성
return TextAnalyticsClient(endpoint=ai_endpoint, credential=ta_credential) # 클라이언트 반환
지정된 폴더에서 텍스트 파일을 읽고, 텍스트 분석 메서드(감정 분석, 엔터티 추출 등)를 호출합니다.
def analyze_text_files(client, folder_path):
for file_name in os.listdir(folder_path): # 폴더 내 파일 목록 반복
file_path = os.path.join(folder_path, file_name)
with open(file_path, encoding='utf8') as file:
text = file.read() # 파일 내용 읽기
print(f"Analyzing File: {file_name}\n{text}\n")
detect_language_result = client.detect_language(documents=[text])[0] # 언어 감지
detected_language = detect_language_result.primary_language.iso6391_name # 언어 코드 가져오기
sentiment_analysis(client, text, detected_language) # 감정 분석
extract_entities(client, text, detected_language) # 명명된 엔터티 추출
extract_linked_entities(client, text, detected_language) # 링크된 엔터티 추출
extract_key_phrases(client, text, detected_language) # 핵심 구 추출
텍스트의 감정을 분석하여 긍정, 중립, 부정 점수를 반환합니다.
def sentiment_analysis(client, text, language):
result = client.analyze_sentiment(
documents=[{'id': '1', 'language': language, 'text': text}],
show_opinion_mining=True
)[0]
print(f"Document Sentiment: {result.sentiment}")
print("Overall scores: positive={0:.2f}; neutral={1:.2f}; negative={2:.2f}".format(
result.confidence_scores.positive,
result.confidence_scores.neutral,
result.confidence_scores.negative,
))
텍스트에서 장소, 사람, 조직 등의 엔터티를 추출합니다.
Copy code
def extract_entities(client, text, language):
result = client.recognize_entities(
documents=[{'id': '1', 'language': language, 'text': text}]
)[0]
print("\nNamed Entities:")
for entity in result.entities:
print(f" Text: {entity.text}, Category: {entity.category}, Confidence Score: {entity.confidence_score}")
텍스트의 엔터티를 외부 데이터 소스(예: Wikipedia)와 연결합니다.
def extract_linked_entities(client, text, language):
result = client.recognize_linked_entities(
documents=[{'id': '1', 'language': language, 'text': text}]
)[0]
print("\nLinked Entities:")
for entity in result.entities:
print(f" Name: {entity.name}, Source: {entity.data_source}, URL: {entity.url}")
for match in entity.matches:
print(f" Match Text: {match.text}, Confidence Score: {match.confidence_score}")
텍스트에서 주요 구문(키워드)을 추출합니다.
def extract_key_phrases(client, text, language):
result = client.extract_key_phrases(
documents=[{'id': '1', 'language': language, 'text': text}]
)[0]
print("\nKey Phrases:")
for phrase in result.key_phrases:
print(f" {phrase}")