

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Flask 및를 사용하여 AI/ML 모델 결과 시각화 AWS Elastic Beanstalk
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk"></a>

*Chris Caudill, Durga Sury, Amazon Web Services*

## 요약
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-summary"></a>

인공 지능 및 기계 학습(AI/ML) 서비스의 결과를 시각화하려면 개발자와 엔지니어가 사용자 지정해야 하는 복잡한 API 직접 호출이 필요한 경우가 많습니다. 분석가가 새 데이터 세트를 빠르게 탐색하려는 경우 이는 단점이 될 수 있습니다.

사용자가 자신의 데이터를 업로드하고 대시보드에서 모델 결과를 시각화할 수 있는 웹 기반 사용자 인터페이스(UI)를 사용함으로써 서비스의 접근성을 높이고 더 인터랙티브한 형태의 데이터 분석을 제공할 수 있습니다.

이 패턴은 [Flask](https://flask.palletsprojects.com/en/stable/) 및 [Plotly](https://plotly.com/)를 사용하여 Amazon Comprehend를 사용자 지정 웹 애플리케이션과 통합하고 사용자가 제공한 데이터에서 감정과 개체를 시각화합니다. 또한이 패턴은를 사용하여 애플리케이션을 배포하는 단계도 제공합니다 AWS Elastic Beanstalk. [AWS AI 서비스를](https://aws.amazon.com/machine-learning/ai-services/) 사용하거나 엔드포인트(예: [Amazon SageMaker 엔드포인트](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html))에서 호스팅되는 사용자 지정 훈련 모델을 사용하여 애플리케이션을 조정할 수 있습니다.

## 사전 조건 및 제한 사항
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-prereqs"></a>

**사전 조건 **
+ 활성. AWS 계정 
+ AWS Command Line Interface 로컬 시스템에 설치 및 구성된 (AWS CLI) 이에 대한 자세한 내용은 AWS CLI 설명서의 [구성 기본](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) 사항을 참조하세요. AWS Cloud9 통합 개발 환경(IDE)을 사용할 수도 있습니다. 이에 대한 자세한 내용은 AWS Cloud9 설명서의 [용 Python 자습서 AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-python.html) 및 [AWS Cloud9 IDE에서 실행 중인 애플리케이션 미리](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) 보기를 참조하세요.

  **알림**: AWS Cloud9 신규 고객은 더 이상를 사용할 수 없습니다. 의 기존 고객은 평소와 같이 서비스를 계속 사용할 AWS Cloud9 수 있습니다. [자세히 알아보기](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)
+ Flask의 웹 애플리케이션 프레임워크에 대한 이해. Flask에 대한 자세한 내용은 Flask 설명서에서 [퀵스타트](https://flask.palletsprojects.com/en/stable/quickstart/)를 참조하십시오.
+ Python 버전 3.6 이상이 설치 및 구성되었습니다. AWS Elastic Beanstalk 설명서의 Python [개발 환경 설정의 지침에 따라 Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html)을 설치할 수 있습니다.
+ Elastic Beanstalk Command Line Interface(EB CLI)가 설치 및 구성되었습니다. 이에 대한 자세한 내용은 Elastic Beanstalk 설명서의 [EB CLI 설치](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html) 및 [EB CLI 구성을](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html) 참조하세요.

**제한 사항 **
+ 이 패턴의 Flask 애플리케이션은 단일 텍스트 열을 사용하고 200행으로 제한되는 .csv 파일과 함께 작동하도록 설계되었습니다. 애플리케이션 코드는 다른 파일 유형 및 데이터 볼륨을 처리하도록 조정할 수 있습니다.
+ 애플리케이션은 데이터 보존을 고려하지 않으며, 업로드된 사용자 파일을 수동으로 삭제할 때까지 계속 집계합니다. 영구 객체 스토리지를 위해 애플리케이션을 Amazon Simple Storage Service(Amazon S3)와 통합하거나, 서버리스 키 값 스토리지를 위해 Amazon DynamoDB와 같은 데이터베이스를 사용할 수 있습니다.
+ 애플리케이션은 영어로 된 문서만 고려합니다. 하지만 Amazon Comprehend를 사용하여 문서의 기본 언어를 감지할 수 있습니다. 각 작업에 지원되는 언어에 대한 자세한 내용은 Amazon Comprehend 설명서에서 [API 참조](https://docs.aws.amazon.com/comprehend/latest/dg/API_Reference.html)를 참조하십시오.

## 아키텍처
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-architecture"></a>

**Flask 애플리케이션 아키텍처**

Flask는 Python에서 웹 애플리케이션을 개발하기 위한 경량 프레임워크입니다. Python의 강력한 데이터 처리 기능과 풍부한 웹 UI를 결합하도록 설계되었습니다. 패턴의 Flask 애플리케이션은 사용자가 데이터를 업로드하고 추론을 위해 Amazon Comprehend로 데이터를 전송한 다음 결과를 시각화하는 웹 애플리케이션을 빌드하는 방법을 보여줍니다.   애플리케이션의 구조는 다음과 같습니다.
+ `static` - 웹 UI를 지원하는 모든 정적 파일(예: JavaScript, CSS, 이미지) 포함
+ `templates` - 애플리케이션의 모든 HTML 페이지 포함
+ `userData` - 업로드된 사용자 데이터 저장
+ `application.py` - Flask 애플리케이션 파일
+ `comprehend_helper.py` - Amazon Comprehend에 대한 API 직접 호출 함수
+ `config.py` - 애플리케이션 구성 파일
+ `requirements.txt` - 애플리케이션에 필요한 Python 종속성

`application.py` 스크립트에는 4개의 Flask 경로로 구성된 웹 애플리케이션의 핵심 기능이 포함되어 있습니다. 다음 다이어그램은 이러한 Flask 경로를 보여줍니다.

![웹 애플리케이션의 핵심 기능을 구성하는 4개의 Flask 경로.](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/9ca6bad1-26e2-4262-98d0-d54c172336bf.png)


 
+ `/`(은)는 애플리케이션의 루트이며 사용자를 `upload.html` 페이지(`templates` 디렉토리에 저장되어 있음)로 디렉션합니다.
+ `/saveFile`(은)는 사용자가 파일을 업로드한 후 호출되는 경로입니다. 이 경로는 사용자가 업로드한 파일이 포함된 HTML 양식을 통해 `POST` 요청을 받습니다. 파일은 `userData` 디렉터리에 저장되며 경로는 사용자를 `/dashboard` 경로로 리디렉션합니다.
+ `/dashboard`(은)는 사용자를 `dashboard.html` 페이지로 보냅니다. 이 페이지의 HTML 내에서는 `/data` 경로의 데이터를 읽은 후 페이지에 대한 시각화를 빌드하는 `static/js/core.js`에서 JavaScript 코드가 실행됩니다.
+ `/data`(은)는 대시보드에서 시각화할 데이터를 제시하는 JSON API입니다. 이 경로는 사용자가 제공한 데이터를 읽고 `comprehend_helper.py` 내 함수를 사용하여 사용자 데이터를 Amazon Comprehend로 전송해서 감정 분석 및 명명된 개체 인식(NER)을 수행합니다. Amazon Comprehend 응답의 형식이 지정되고 JSON 객체로 반환됩니다.

**배포 아키텍처**

![Flask와 Elastic Beanstalk를 사용하여 AI/ML 모델 결과를 시각화하는 아키텍처 다이어그램.](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/d691bfd2-e2ec-4830-8bff-ffa1e3a95c4a.png)


[설계 고려 사항](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html)

 에서 Elastic Beanstalk를 사용하여 배포된 애플리케이션의 설계 고려 사항에 대한 자세한 내용은 AWS Elastic Beanstalk 설명서의 섹션을 AWS 클라우드참조하세요.

**기술 스택**
+ Amazon Comprehend
+ Elastic Beanstalk
+ Flask 

**자동화 및 규모 조정**

Elastic Beanstalk 배포는 로드 밸런서 및 오토 스케일링 그룹을 사용하여 자동으로 설정됩니다. 자세한 구성 옵션은 [Elastic Beanstalk 설명서의 Elastic Beanstalk 환경 구성을](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html) 참조하세요.

## 도구
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-tools"></a>
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)는 AWS의 모든 부분과 상호 작용하기 위한 일관된 인터페이스를 제공하는 통합 도구입니다.
+ [Amazon Comprehend](https://docs.aws.amazon.com/comprehend/latest/dg/comprehend-general.html)는 특별한 전처리를 요구하지 않고 자연어 처리(NLP)를 사용하여 문서 내용에 대한 인사이트를 추출합니다.
+ [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html)를 사용하면 애플리케이션을 실행하는 인프라에 대해 알 필요 AWS 클라우드 없이에서 애플리케이션을 빠르게 배포하고 관리할 수 있습니다.
+ [Elastic Beanstalk CLI(EB CLI)](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html)는 로컬 리포지토리에서 환경 생성, 업데이트 및 모니터링을 간소화하는 대화형 명령을 AWS Elastic Beanstalk 제공하는 용 명령줄 인터페이스입니다.
+ [Flask](https://flask.palletsprojects.com/en/stable/) 프레임워크는 Python을 사용하여 데이터 처리 및 API 호출을 수행하고 Plotly를 사용하여 대화형 웹 시각화를 제공합니다.

**코드 리포지토리**

이 패턴의 코드는 GitHub [Visualize AI/ML 모델 결과에서 Flask 및 리포지토리를 사용하여 AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) 사용할 수 있습니다.

## 에픽
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-epics"></a>

### Flask 애플리케이션 설정
<a name="set-up-the-flask-application"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| GitHub 리포지토리를 복제합니다. | 다음 명령을 실행하여 Flask 및 리포지토리를 사용하여 GitHub Visualize AI/ML 모델 결과에서 애플리케이션 코드를 가져옵니다. [AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) <br />`git clone git@github.com:aws-samples/aws-comprehend-elasticbeanstalk-for-flask.git`반드시 GitHub를 사용하여 SSH 키를 구성해야 합니다. | 개발자 | 
| Python 모듈을 설치합니다. | 리포지토리를 복제하고 나면 새 로컬 `aws-comprehend-elasticbeanstalk-for-flask` 디렉터리가 생성됩니다. 이 디렉터리의 `requirements.txt` 파일에는 애플리케이션을 실행하는 Python 모듈과 버전이 들어 있습니다. 다음 명령을 사용하여 모듈을 설치합니다.<br />`cd aws-comprehend-elasticbeanstalk-for-flask`<br />`pip install -r requirements.txt` | Python 개발자 | 
| 로컬로 애플리케이션 테스트합니다. | 다음 명령을 실행하여 Flask 서버를 시작합니다.<br />`python application.py`<br />이를 통해 실행 중인 서버에 대한 정보를 반환합니다. 브라우저를 열고 http://localhost:5000을 방문하여 애플리케이션에 액세스할 수 있어야 합니다. AWS Cloud9 IDE에서 애플리케이션을 실행하는 경우 `application.py` 파일의 `application.run()` 명령을 다음 줄로 바꿔야 합니다.<br />`application.run(host=os.getenv('IP', '0.0.0.0'),port=int(os.getenv('PORT', 8080)))`<br />배포하기 전에 이 변경 내용을 되돌려야 합니다. | Python 개발자 | 

### Elastic Beanstalk에 애플리케이션 배포
<a name="deploy-the-application-to-aeb"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| Elastic Beanstalk 애플리케이션을 시작합니다. | 프로젝트를 Elastic Beanstalk 애플리케이션으로 시작하려면 애플리케이션의 루트 디렉터리에서 다음의 명령을 실행합니다.<br />`eb init -p python-3.6 comprehend_flask --region us-east-1` [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html)<br />더 많은 배포 구성 옵션을 보려면 `eb init -i` 명령을 실행합니다. | 아키텍트, 개발자 | 
| Elastic Beanstalk 환경을 배포합니다. | 애플리케이션의 루트 디렉터리에서 다음의 명령을 실행합니다.<br />`eb create comprehend-flask-env``comprehend-flask-env`는 Elastic Beanstalk 환경의 이름이며, 요구 사항에 따라 변경할 수 있습니다. 이름은 문자, 숫자 및 대시만 포함할 수 있습니다. | 아키텍트, 개발자 | 
| Amazon Comprehend를 사용할 수 있도록 배포를 승인합니다. | 애플리케이션이 성공적으로 배포될 수 있지만 Amazon Comprehend에 대한 액세스 권한도 배포에 제공해야 합니다. `ComprehendFullAccess`는 배포된 애플리케이션에 Amazon Comprehend에 대한 API 호출 권한을 제공하는 AWS 관리형 정책입니다.<br />다음 명령을 실행하여 `ComprehendFullAccess` 정책을 `aws-elasticbeanstalk-ec2-role`(이 역할은 배포의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 대하여 자동으로 생성됨)에 연결합니다.<br />`aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ComprehendFullAccess --role-name aws-elasticbeanstalk-ec2-role``aws-elasticbeanstalk-ec2-role`은 애플리케이션 배포 시 생성됩니다. AWS Identity and Access Management (IAM) 정책을 연결하려면 먼저 배포 프로세스를 완료해야 합니다. | 개발자, 보안 아키텍트 | 
| 배포된 애플리케이션을 방문합니다. | 애플리케이션이 성공적으로 배포되면 `eb open` 명령을 실행하여 해당 애플리케이션을 방문할 수 있습니다.<br />`eb status` 명령을 실행하여 배포에 대한 세부 정보를 받을 수도 있습니다. 배포 URL은 `CNAME` 아래에 나열되어 있습니다. | 아키텍트, 개발자 | 

### (선택 사항) 애플리케이션을 ML 모델에 사용자 지정합니다.
<a name="optional-customize-the-application-to-your-ml-model"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 새 모델에 액세스할 수 있도록 Elastic Beanstalk를 승인합니다. | Elastic Beanstalk에 새 모델 엔드포인트에 필요한 액세스 권한이 있는지 확인합니다. 예를 들어 Amazon SageMaker AI 엔드포인트를 사용하는 경우 배포에 엔드포인트를 호출할 수 있는 권한이 있어야 합니다. <br />이에 대한 자세한 내용은 Amazon SageMaker AI 설명서의 [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html)를 참조하세요. | 개발자, 보안 아키텍트 | 
| 사용자 데이터를 새 모델로 보냅니다. | 이 애플리케이션에서 기본 ML 모델을 변경하려면 다음 파일을 변경해야 합니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | 데이터 과학자 | 
| 대시보드 시각화를 업데이트합니다. | 일반적으로 새 ML 모델을 통합하면 새 결과를 반영하도록 시각화를 업데이트해야 합니다. 이 변경은 다음과 같이 이루어졌습니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | 웹 개발자 | 

### (선택 사항)업데이트된 애플리케이션을 배포
<a name="optional-deploy-the-updated-application"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 애플리케이션의 요구 사항 파일을 업데이트합니다. | 변경 내용을 Elastic Beanstalk에 보내기 전에 애플리케이션의 루트 디렉터리에서 다음 명령을 실행하여 새 Python 모듈을 반영하도록 `requirements.txt` 파일을 업데이트합니다.<br />`pip freeze > requirements.txt` | Python 개발자 | 
| Elastic Beanstalk 환경을 재배포합니다. | 애플리케이션 변경 사항이 Elastic Beanstalk 배포에 반영되도록 하려면 애플리케이션의 루트 디렉터리로 이동하여 다음 명령을 실행합니다.<br />`eb deploy`<br />그러면 최신 버전의 애플리케이션 코드가 기존 Elastic Beanstalk 배포로 전송됩니다. | 시스템 관리자, 아키텍트 | 

## 문제 해결
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-troubleshooting"></a>


| 문제 | Solution | 
| --- | --- | 
| `Unable to assume role "arn:aws:iam::xxxxxxxxxx:role/aws-elasticbeanstalk-ec2-role". Verify that the role exists and is configured correctly.` | 를 실행할 때이 오류가 발생하면 Elastic Beanstalk 콘솔에서 샘플 애플리케이션을 `eb create`생성하여 기본 인스턴스 프로파일을 생성합니다. 이에 대한 자세한 내용은 AWS Elastic Beanstalk 설명서의 [Elastic Beanstalk 환경 생성을](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.environments.html) 참조하세요. | 
| `Your WSGIPath refers to a file that does not exist.` | 이 오류는 Elastic Beanstalk가 Flask 코드의 이름을 로 예상하기 때문에 배포 로그에서 발생합니다`application.py`. 다른 이름을 선택한 경우 다음 코드 샘플에 표시된 대로 `eb config`(을)를 실행하고 WSGIPath를 편집합니다.<pre>aws:elasticbeanstalk:container:python:<br />     NumProcesses: '1'<br />     NumThreads: '15'<br />     StaticFiles: /static/=static/<br />     WSGIPath: application.py</pre><br />`application.py`(을)를 파일 이름으로 바꿔야 합니다.<br />Gunicorn 및 Procfile을 적극 활용할 수도 있습니다. 이 접근 방식에 대한 자세한 내용은 AWS Elastic Beanstalk 설명서[의 Procfile을 사용하여 WSGI 서버 구성을](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-configuration-procfile.html) 참조하세요. | 
| `Target WSGI script '/opt/python/current/app/application.py' does not contain WSGI application 'application'.` | Elastic Beanstalk는 Flask 애플리케이션을 나타내는 변수의 이름을 로 지정할 것으로 예상합니다`application`. `application.py` 파일은 `application`(을)를 변수 이름으로 사용해야 합니다.<pre>application = Flask(__name__)</pre> | 
| `The EB CLI cannot find your SSH key file for keyname` | EB CLI를 사용하여 사용할 키 페어를 지정하거나 배포의 Amazon EC2 인스턴스에 대한 키 페어를 생성합니다. 오류를 해결하려면 `eb init -i`(을)를 실행합니다. 그러면 옵션 중 하나에 다음 메시지가 표시됩니다.<pre>Do you want to set up SSH for your instances?</pre><br />`Y`(으)로 응답하여 키 페어를 생성하거나 기존 키 페어를 지정합니다. | 
| 코드를 업데이트하고 재배포했지만 배포에 변경 사항이 반영되지 않습니다. | 배포와 함께 Git 리포지토리를 사용하는 경우 다시 배포하기 전에 변경 사항을 추가하고 커밋해야 합니다. | 
|  AWS Cloud9 IDE에서 Flask 애플리케이션을 미리 보고 오류가 발생합니다. | 이에 대한 자세한 내용은 AWS Cloud9 설명서[의 AWS Cloud9 IDE에서 실행 중인 애플리케이션 미리 보기를](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) 참조하세요. | 

## 관련 리소스
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-resources"></a>
+ [Amazon API Gateway 및를 사용하여 Amazon SageMaker AI 모델 엔드포인트 호출 Amazon API Gateway AWS Lambda](https://aws.amazon.com/blogs/machine-learning/call-an-amazon-sagemaker-model-endpoint-using-amazon-api-gateway-and-aws-lambda/)
+ [Elastic Beanstalk에 Flask 애플리케이션 배포](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html)
+ [EB CLI 명령 참조 ](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-cmd-commands.html)
+ [Python 개발 환경 설정](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html)

## 추가 정보
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-additional"></a>

*Amazon Comprehend를 사용하는 자연어 처리*

Amazon Comprehend를 사용을 선택하여 실시간 분석 또는 비동기 배치 작업을 실행함으로써 개별 텍스트 문서에서 사용자 지정 개체를 탐지할 수 있습니다. 또한 Amazon Comprehend를 사용하면 엔드포인트를 생성하여 실시간으로 사용할 수 있는 사용자 지정 개체 인식 및 텍스트 분류 모델을 훈련할 수 있습니다.

이 패턴은 비동기 배치 작업을 사용하여 여러 문서가 포함된 입력 파일에서 감성과 개체를 탐지합니다. 이 패턴에서 제공하는 샘플 애플리케이션은 사용자가 행당 하나의 텍스트 문서와 함께 하나의 열이 들어 있는 .csv 파일을 업로드하도록 설계되어 있습니다. GitHub Visualize AI/ML 모델 결과의 `comprehend_helper.py` 파일은 Flask 및 리포지토리를 사용하여 입력 파일을 읽고 처리를 위해 입력을 Amazon Comprehend로 전송합니다. [AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) 

*BatchDetectEntities*

Amazon Comprehend는 문서 배치의 텍스트에서 명명된 엔터티를 검사하고 감지된 엔터티, 위치, [엔터티 유형](https://docs.aws.amazon.com/comprehend/latest/dg/how-entities.html) 및 Amazon Comprehend 신뢰도 수준을 나타내는 점수를 반환합니다. 한 번의 API 직접 호출로 최대 25개의 문서를 전송할 수 있으며, 각 문서의 크기는 5,000바이트 미만입니다. 사용 사례에 따라 특정 엔터티만 표시하도록 결과를 필터링할 수 있습니다. 예를 들어 `‘quantity’` 개체 유형을 건너뛰고 탐지된 개체에 대한 임계값 점수(예: 0.75)를 설정할 수 있습니다. 임계값을 선택하기 전에 특정 사용 사례에 대한 결과를 살펴보는 것이 좋습니다. 이에 대한 자세한 내용은 Amazon Comprehend 설명서에서 [BatchDetectEntities](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectEntities.html)를 참조하십시오.

*BatchDetectSentiment*

Amazon Comprehend는 수신 문서 배치를 검사하여 각 문서에 대한 일반적인 감성을 반환합니다(`POSITIVE`, `NEUTRAL`, `MIXED` 또는 `NEGATIVE`). 한 번의 API 직접 호출로 최대 25개의 문서를 전송할 수 있으며, 각 문서의 크기는 5,000바이트 미만입니다. 감성에 대한 분석은 간단하며, 사용자가 가장 높은 점수의 감성을 선택하여 최종 결과에 표시합니다. 이에 대한 자세한 내용은 Amazon Comprehend 설명서에서 [BatchDetectSentiment](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectSentiment.html)를 참조하십시오.

*Flask 구성 처리*

Flask 서버는 일련의 [구성 변수](https://flask.palletsprojects.com/en/stable/config/)를 사용하여 서버 실행 방법을 제어합니다. 이러한 변수에는 디버그 출력, 세션 토큰 또는 기타 애플리케이션 설정이 포함될 수 있습니다. 애플리케이션이 실행 중인 상태에서 액세스할 수 있는 사용자 지정 변수를 정의할 수도 있습니다. 구성 변수를 설정하는 방법은 여러 가지가 있습니다.

이 패턴에서는 구성이 `config.py`에 정의되고 `application.py` 내에서 상속됩니다.
+ `config.py`에는 애플리케이션의 스타트업 시 설정되는 구성 변수가 포함됩니다. 이 애플리케이션에서는 서버를 [디버그 모드](https://flask.palletsprojects.com/en/stable/config/#DEBUG)에서 실행하도록 애플리케이션에 지시하는 `DEBUG` 변수가 정의됩니다.
**참고**  
프로덕션 환경에서 애플리케이션을 실행할 때는 디버그 모드를 사용해서는 안 됩니다. `UPLOAD_FOLDER`는 나중에 애플리케이션에서 참조하고 업로드된 사용자 데이터를 저장해야 하는 위치를 알리도록 정의된 사용자 지정 변수입니다.
+ `application.py`(은)는 Flask 애플리케이션을 시작하고 `config.py`에서 정의된 구성 설정을 상속합니다. 이는 다음 코드에 의해 수행됩니다.

```
application = Flask(__name__)
application.config.from_pyfile('config.py')
```