

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 步驟 4：準備資料視覺化的 Amazon Comprehend 輸出
<a name="tutorial-reviews-tables"></a>

若要準備情緒和實體分析任務的結果以建立資料視覺化，您可以使用 AWS Glue 和 Amazon Athena。在此步驟中，您會擷取 Amazon Comprehend 結果檔案。然後，您可以建立 AWS Glue *爬蟲程式*來探索您的資料，並自動將其編目在 的資料表中 AWS Glue Data Catalog。之後，您可以使用無伺服器和互動式查詢服務 Amazon Athena來存取和轉換這些資料表。完成此步驟後，Amazon Comprehend 結果會乾淨並準備好進行視覺化。

對於 PII 實體偵測任務，輸出檔案是純文字，而不是壓縮的封存。輸出檔案名稱與輸入檔案相同，並在結尾`.out`附加 。您不需要擷取輸出檔案的步驟。跳至[將資料載入 AWS Glue Data Catalog](#tutorial-reviews-tables-crawler)。



**Topics**
+ [先決條件](#tutorial-reviews-tables-prereqs)
+ [下載輸出](#tutorial-reviews-tables-download)
+ [解壓縮輸出檔案](#tutorial-reviews-tables-extract)
+ [上傳解壓縮的檔案](#tutorial-reviews-tables-upload)
+ [將資料載入 AWS Glue Data Catalog](#tutorial-reviews-tables-crawler)
+ [準備資料以供分析](#tutorial-reviews-tables-prep)

## 先決條件
<a name="tutorial-reviews-tables-prereqs"></a>

開始之前，請完成[步驟 3：在 Amazon S3 中的文件上執行分析任務](tutorial-reviews-analysis.md)。

## 下載輸出
<a name="tutorial-reviews-tables-download"></a>

Amazon Comprehend 使用 Gzip 壓縮來壓縮輸出檔案，並將其儲存為 tar 封存檔。擷取輸出檔案最簡單的方法是在本機下載`output.tar.gz`封存。

在此步驟中，您會下載情緒和實體輸出封存。

### 下載輸出檔案 （主控台）
<a name="tutorial-reviews-tables-download-console"></a>

若要尋找每個任務的輸出檔案，請返回 Amazon Comprehend 主控台中的分析任務。分析任務提供輸出的 S3 位置，您可以在其中下載輸出檔案。

**下載輸出檔案 （主控台）**

1. 在 [Amazon Comprehend 主控台](https://console.aws.amazon.com/comprehend/)的導覽窗格中，返回**分析任務**。

1. 選擇情緒分析任務 `reviews-sentiment-analysis`。

1. 在**輸出**下，選擇**輸出資料位置**旁顯示的連結。這會將您重新導向至 S3 儲存貯體中的`output.tar.gz`封存。

1. 在**概觀**索引標籤中，選擇**下載**。

1. 在電腦上，將封存重新命名為 `sentiment-output.tar.gz`。由於所有輸出檔案的名稱都相同，這可協助您追蹤情緒和實體檔案。

1. 重複步驟 1-4，從`reviews-entities-analysis`任務尋找和下載輸出。在電腦上，將封存重新命名為 `entities-output.tar.gz`。

### 下載輸出檔案 (AWS CLI)
<a name="tutorial-reviews-tables-download-cli"></a>

若要尋找每個任務的輸出檔案，請使用分析任務`JobId`中的 來尋找輸出的 S3 位置。然後，使用 `cp`命令將輸出檔案下載到您的電腦。

**下載輸出檔案 (AWS CLI)**

1. 若要列出情緒分析任務的詳細資訊，請執行下列命令。`{{sentiment-job-id}}` 將 取代`JobId`為您儲存的情緒。

   ```
   aws comprehend describe-sentiment-detection-job --job-id {{sentiment-job-id}}
   ```

   如果您遺失 的追蹤`JobId`，您可以執行下列命令來列出所有情緒任務，並依名稱篩選任務。

   ```
   aws comprehend list-sentiment-detection-jobs 
   --filter JobName="reviews-sentiment-analysis"
   ```

1. 在 `OutputDataConfig` 物件中，尋找 `S3Uri`值。`S3Uri` 值應類似於下列格式：`{{s3://amzn-s3-demo-bucket/.../output/output.tar.gz}}`。將此值複製到文字編輯器。

1. 若要下載情緒輸出封存到您的本機目錄，請執行下列命令。使用`S3Uri`您在上一個步驟中複製的 取代 S3 儲存貯體路徑。`{{path/}}` 將 取代為本機目錄的資料夾路徑。名稱會`sentiment-output.tar.gz`取代原始封存名稱，以協助您追蹤情緒和實體檔案。

   ```
   aws s3 cp {{s3://amzn-s3-demo-bucket/.../output/output.tar.gz}} 
   {{path/}}sentiment-output.tar.gz
   ```

1. 若要列出實體分析任務的詳細資訊，請執行下列命令。

   ```
   aws comprehend describe-entities-detection-job
   --job-id {{entities-job-id}}
   ```

   如果您不知道您的 `JobId`，請執行下列命令來列出所有實體任務，並依名稱篩選任務。

   ```
   aws comprehend list-entities-detection-jobs
   --filter JobName="reviews-entities-analysis"
   ```

1. 從實體任務描述中的`OutputDataConfig`物件中，複製 `S3Uri`值。

1. 若要將實體輸出封存下載至本機目錄，請執行下列命令。使用`S3Uri`您在上一個步驟中複製的 取代 S3 儲存貯體路徑。`{{path/}}` 將 取代為本機目錄的資料夾路徑。名稱會`entities-output.tar.gz`取代原始封存名稱。

   ```
   aws s3 cp {{s3://amzn-s3-demo-bucket/.../output/output.tar.gz}} 
   {{path/}}entities-output.tar.gz
   ```

## 解壓縮輸出檔案
<a name="tutorial-reviews-tables-extract"></a>

在您可以存取 Amazon Comprehend 結果之前，請解壓縮情緒和實體封存。您可以使用本機檔案系統或終端機來解壓縮封存。

### 解壓縮輸出檔案 (GUI 檔案系統）
<a name="tutorial-reviews-tables-extract-gui"></a>

如果您使用 macOS，請在 GUI 檔案系統中按兩下封存，從封存中擷取輸出檔案。

如果您使用 Windows，您可以使用第三方工具，例如 7-Zip 來擷取 GUI 檔案系統中的輸出檔案。在 Windows 中，您必須執行兩個步驟來存取封存中的輸出檔案。首先解壓縮封存，然後解壓縮封存。

將情緒檔案重新命名為 `sentiment-output` ，並將實體檔案重新命名為 `entities-output`，以區分輸出檔案。

### 解壓縮輸出檔案 （終端機）
<a name="tutorial-reviews-tables-extract-terminal"></a>

如果您使用 Linux 或 macOS，您可以使用標準終端機。如果您使用 Windows，您必須能夠存取 Unix 型環境，例如 Cygwin，才能執行 tar 命令。

若要從情緒封存檔中擷取情緒輸出檔案，請在本機終端機中執行下列命令。

```
tar -xvf sentiment-output.tar.gz --transform 's,^,sentiment-,'
```

請注意， `--transform` 參數會將 字首新增至封存內的`sentiment-`輸出檔案，並將檔案重新命名為 `sentiment-output`。這可讓您區分情緒和實體輸出檔案，並防止覆寫。

若要從實體封存中擷取實體輸出檔案，請在本機終端機中執行下列命令。

```
tar -xvf entities-output.tar.gz --transform 's,^,entities-,'
```

`--transform` 參數會將 字首新增至`entities-`輸出檔案名稱。

**提示**  
若要在 Amazon S3 中節省儲存成本，您可以在上傳檔案之前使用 Gzip 再次壓縮檔案。請務必解壓縮和解壓縮原始封存，因為 AWS Glue 無法自動從 tar 封存讀取資料。不過， AWS Glue 可以讀取 Gzip 格式的檔案。

## 上傳解壓縮的檔案
<a name="tutorial-reviews-tables-upload"></a>

擷取檔案之後，請將其上傳至您的儲存貯體。您必須將情緒和實體輸出檔案存放在不同的資料夾中，以便 AWS Glue 正確讀取資料。在儲存貯體中，為擷取的情緒結果建立資料夾，並為擷取的實體結果建立第二個資料夾。您可以使用 Amazon S3 主控台或 建立資料夾 AWS CLI。

### 將解壓縮的檔案上傳至 Amazon S3 （主控台）
<a name="tutorial-reviews-tables-upload-console"></a>

在您的 S3 儲存貯體中，為擷取的情緒結果檔案建立一個資料夾，並為實體結果檔案建立一個資料夾。然後，將擷取的結果檔案上傳到各自的資料夾。

**將擷取的檔案上傳至 Amazon S3 （主控台）**

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在**儲存貯**體中，選擇您的儲存貯體，然後選擇**建立資料夾**。

1. 針對新的資料夾名稱，輸入 `sentiment-results` ，然後選擇**儲存**。此資料夾將包含解壓縮的情緒輸出檔案。

1. 在儲存貯體的**概觀**索引標籤中，從儲存貯體內容清單中，選擇新的資料夾 `sentiment-results`。選擇**上傳**。

1. 選擇**新增檔案**，從本機電腦選擇`sentiment-output`檔案，然後選擇**下一步**。

1. 保留**管理使用者**、**其他使用者的存取 AWS 帳戶**和**管理公有許可**的選項做為預設值。選擇**下一步**。

1. 針對**儲存體方案**，選擇**標準**。將**加密**、**中繼資料**和**標籤**的選項保留為預設值。選擇**下一步**。

1. 檢閱上傳選項，然後選擇**上傳**。

1. 重複步驟 1-8 建立名為 的資料夾`entities-results`，並將`entities-output`檔案上傳至其中。

### 將解壓縮的檔案上傳至 Amazon S3 (AWS CLI)
<a name="tutorial-reviews-tables-upload-cli"></a>

您可以使用 `cp`命令上傳檔案時，在 S3 儲存貯體中建立資料夾。

**將擷取的檔案上傳至 Amazon S3 (AWS CLI)**

1. 建立情緒資料夾，並執行下列命令將情緒檔案上傳至其中。`{{path/}}` 將 取代為您解壓縮情緒輸出檔案的本機路徑。

   ```
   aws s3 cp {{path/}}sentiment-output s3://amzn-s3-demo-bucket/sentiment-results/
   ```

1. 建立實體輸出資料夾，並執行下列命令將您的實體檔案上傳至其中。`{{path/}}` 將 取代為您解壓縮的實體輸出檔案的本機路徑。

   ```
   aws s3 cp {{path/}}entities-output s3://amzn-s3-demo-bucket/entities-results/
   ```

## 將資料載入 AWS Glue Data Catalog
<a name="tutorial-reviews-tables-crawler"></a>

若要將結果納入資料庫，您可以使用 AWS Glue *爬蟲程式*。An AWS Glue *crawler* 會掃描檔案並探索資料的結構描述。然後，它會在 AWS Glue Data Catalog （無伺服器資料庫） 的資料表中安排資料。您可以使用 AWS Glue 主控台或 建立爬蟲程式 AWS CLI。

### 將資料載入 AWS Glue Data Catalog （主控台）
<a name="tutorial-reviews-tables-crawler-console"></a>

建立 AWS Glue 個別掃描 `sentiment-results`和 `entities-results` 資料夾的爬蟲程式。的新 IAM 角色 AWS Glue 會授予爬蟲程式存取 S3 儲存貯體的許可。您可以在設定爬蟲程式時建立此 IAM 角色。

**將資料載入 AWS Glue Data Catalog （主控台）**

1. 確保您位於 支援的區域中 AWS Glue。如果您位於另一個區域，請在導覽列中選擇支援**的區域**。如需 支援的區域清單 AWS Glue，請參閱《 *全球基礎設施指南*》中的[區域表](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

1. 在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台。

1. 在導覽窗格中，選擇**爬蟲程式**，然後選擇**新增爬蟲程式**。

1. 針對**爬蟲程式名稱**，輸入 `comprehend-analysis-crawler`，然後選擇**下一步**。

1. 針對**爬蟲程式來源類型**，選擇**資料存放區**，然後選擇**下一步**。

1. 對於**新增資料存放區**，請執行下列動作：

   1. 對於 **Choose a data store (選擇資料存放區)**，選擇 **S3**。

   1. 將**連線**保留空白。

   1. 對於 **中的爬取資料**，選擇**我帳戶中的指定路徑**。

   1. 針對**包含路徑**，輸入情緒輸出資料夾的完整 S3 路徑：`s3://amzn-s3-demo-bucket/sentiment-results`。

   1. 選擇**下一步**。

1. 對於**新增另一個資料存放區**，選擇**是**，然後選擇**下一步**。重複步驟 6，但輸入實體輸出資料夾的完整 S3 路徑：`s3://amzn-s3-demo-bucket/entities-results`。

1. 對於**新增另一個資料存放區**，選擇**否**，然後選擇**下一步**。

1. 對於**選擇 IAM 角色**，請執行下列動作：

   1. 選擇**建立 IAM 角色**。

   1. 針對 **IAM 角色**，輸入 `glue-access-role`，然後選擇**下一步**。

1. 針對**建立此爬蟲程式的排程**，選擇**隨需執行**，然後選擇**下一步**。

1. 對於**設定爬蟲程式的輸出**，請執行下列動作：

   1. 針對**資料庫**，選擇**新增資料庫**。

   1. 對於 **Database name (資料庫名稱)**，輸入 `comprehend-results`。此資料庫將存放您的 Amazon Comprehend 輸出資料表。

   1. 將其他選項保留在其預設設定上，然後選擇**下一步**。

1. 檢閱爬蟲程式資訊，然後選擇**完成**。

1. 在 Glue 主控台的**爬蟲程式**中，選擇 `comprehend-analysis-crawler` ，然後選擇**執行爬蟲程式**。爬蟲程式可能需要幾分鐘的時間才能完成。

### 將資料載入 AWS Glue Data Catalog (AWS CLI)
<a name="tutorial-reviews-tables-crawler-cli"></a>

建立 的 IAM 角色 AWS Glue ，提供存取 S3 儲存貯體的許可。然後，在 中建立資料庫 AWS Glue Data Catalog。最後，建立並執行爬蟲程式，將您的資料載入資料庫中的資料表。

**將資料載入 AWS Glue Data Catalog (AWS CLI)**

1. 若要為 建立 IAM 角色 AWS Glue，請執行下列動作：

   1. 將下列信任政策儲存為電腦上呼叫`glue-trust-policy.json`的 JSON 文件。

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "glue.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

------

   1. 若要建立 IAM 角色，請執行下列命令。`{{path/}}` 將 取代為本機電腦的 JSON 文件路徑。

      ```
      aws iam create-role --role-name glue-access-role
      --assume-role-policy-document file://{{path/}}glue-trust-policy.json
      ```

   1. 當 AWS CLI 列出新角色的 Amazon Resource Number (ARN) 時，請將它複製並儲存至文字編輯器。

   1. 將下列 IAM 政策儲存為電腦上呼叫`glue-access-policy.json`的 JSON 文件。政策 AWS Glue 會授予許可來抓取結果資料夾。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "s3:GetObject",
                      "s3:PutObject"
                  ],
                  "Resource": [
                      "arn:aws:s3:::amzn-s3-demo-bucket/sentiment-results*",
                      "arn:aws:s3:::amzn-s3-demo-bucket/entities-results*"
                  ]
              }
          ]
      }
      ```

------

   1. 若要建立 IAM 政策，請執行下列命令。`{{path/}}` 將 取代為本機電腦的 JSON 文件路徑。

      ```
      aws iam create-policy --policy-name glue-access-policy
      --policy-document file://{{path/}}glue-access-policy.json
      ```

   1. 當 AWS CLI 列出存取政策的 ARN 時，請複製並儲存到文字編輯器。

   1. 執行下列命令，將新政策連接至 IAM 角色。`{{policy-arn}}` 將 取代為您在上一個步驟中複製的 IAM 政策 ARN。

      ```
      aws iam attach-role-policy --policy-arn {{policy-arn}}
      --role-name glue-access-role
      ```

   1. 執行下列命令，將 AWS 受管政策`AWSGlueServiceRole`連接至您的 IAM 角色。

      ```
      aws iam attach-role-policy --policy-arn
      arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole
      --role-name glue-access-role
      ```

1. 執行下列命令來建立 AWS Glue 資料庫。

   ```
   aws glue create-database 
   --database-input Name="comprehend-results"
   ```

1. 執行下列命令來建立新的 AWS Glue 爬蟲程式。`{{glue-iam-role-arn}}` 將 取代為 IAM AWS Glue 角色的 ARN。

   ```
   aws glue create-crawler 
   --name comprehend-analysis-crawler
   --role {{glue-iam-role-arn}} 
   --targets S3Targets=[
   {Path="s3://amzn-s3-demo-bucket/sentiment-results"},
   {Path="s3://amzn-s3-demo-bucket/entities-results"}] 
   --database-name comprehend-results
   ```

1. 執行下列命令來啟動爬蟲程式。

   ```
   aws glue start-crawler --name comprehend-analysis-crawler
   ```

   爬蟲程式可能需要幾分鐘的時間才能完成。

## 準備資料以供分析
<a name="tutorial-reviews-tables-prep"></a>

現在您已有填入 Amazon Comprehend 結果的資料庫。不過，結果會巢狀化。若要取消巢狀，您可以在 中執行一些 SQL 陳述式 Amazon Athena。 Amazon Athena 是一種互動式查詢服務，可讓您使用標準 SQL 輕鬆分析 Amazon S3 中的資料。Athena 是無伺服器，因此沒有要管理的基礎設施，並且具有pay-per-query定價模式。在此步驟中，您會建立新的已清理資料表，可用於分析和視覺化。您可以使用 Athena 主控台來準備資料。

**準備資料**

1. 前往 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 開啟 Athena 主控台。

1. 在查詢編輯器中，選擇 **Settings** (設定)，然後選擇 **Manage** (管理)。

1. 針對**查詢結果的位置**，輸入 `s3://amzn-s3-demo-bucket/query-results/`。這會在您的儲存貯`query-results`體中建立一個名為 的新資料夾，以存放您執行的 Amazon Athena 查詢輸出。選擇**儲存**。

1. 在查詢編輯器中，選擇**編輯器**。

1. 針對**資料庫**，選擇您建立`comprehend-results`的 AWS Glue 資料庫。

1. 在**資料表**區段中，您應該有兩個名為 `sentiment_results`和 的資料表`entities_results`。預覽資料表，以確保爬蟲程式已載入資料。在每個資料表的選項 （資料表名稱旁的三個點） 中，選擇**預覽資料表**。短期查詢會自動執行。檢查**結果**窗格，以確保資料表包含資料。
**提示**  
如果資料表沒有任何資料，請嘗試檢查 S3 儲存貯體中的資料夾。確保有一個資料夾用於實體結果，一個資料夾用於情緒結果。然後，嘗試執行新的 AWS Glue 爬蟲程式。

1. 若要取消`sentiment_results`資料表巢狀化，請在查詢**編輯器中輸入下列查詢**，然後選擇**執行**。

   ```
   CREATE TABLE sentiment_results_final AS
   SELECT file, line, sentiment,
   sentimentscore.mixed AS mixed,
   sentimentscore.negative AS negative,
   sentimentscore.neutral AS neutral,
   sentimentscore.positive AS positive
   FROM sentiment_results
   ```

1. 若要開始解除實體表格巢狀化，請在查詢**編輯器中輸入下列查詢**，然後選擇**執行**。

   ```
   CREATE TABLE entities_results_1 AS
   SELECT file, line, nested FROM entities_results
   CROSS JOIN UNNEST(entities) as t(nested)
   ```

1. 若要完成實體資料表的解除巢狀化，請在查詢**編輯器中輸入下列查詢**，然後選擇**執行查詢**。

   ```
   CREATE TABLE entities_results_final AS
   SELECT file, line,
   nested.beginoffset AS beginoffset,
   nested.endoffset AS endoffset,
   nested.score AS score,
   nested.text AS entity,
   nested.type AS category
   FROM entities_results_1
   ```

您的`sentiment_results_final`資料表看起來應該如下所示，其中包含名為**檔案**、**行**、**情緒**、**混合**、**負面**、**中性**和**正面**的資料欄。資料表每個儲存格應該有一個值。**情緒**欄描述了特定評論最有可能的整體情緒。**混合**、**負面**、**中性**和**正面**資料欄會提供每種情緒類型的分數。

![Athena 中情緒輸出資料表的螢幕擷取畫面。](http://docs.aws.amazon.com/zh_tw/comprehend/latest/dg/images/tutorial-reviews-sentiment-table.png)


您的`entities_results_final`資料表看起來應該如下所示，其中包含名為**檔案**、**行**、**Startoffset**、**endoffset**、**分數**、**實體**和**類別**的資料欄。資料表每個儲存格應該有一個值。**分數**欄表示 Amazon Comprehend 對其偵測到的**實體**的信心。**類別**指出 Comprehend 偵測到的實體類型。

![Athena 中實體輸出資料表的主控台顯示。](http://docs.aws.amazon.com/zh_tw/comprehend/latest/dg/images/tutorial-reviews-entities-table.png)


現在您已將 Amazon Comprehend 結果載入資料表，您可以視覺化並從資料中擷取有意義的洞見。