HTML에 대한 표 형식 검색 - Amazon Kendra

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

HTML에 대한 표 형식 검색

Amazon Kendra의 표 검색 기능은 HTML 문서에 포함된 표에서 답변을 검색하고 추출할 수 있습니다. 색인을 검색할 때 쿼리와 관련이 있는 경우 표에서 발췌한 내용을 Amazon Kendra 포함시키고 유용한 정보를 제공하세요.

Amazon Kendra 표의 유용한 정보를 포함하여 문서 본문 텍스트 내의 모든 정보를 살펴봅니다. 예를 들어, 인덱스에는 운영 비용, 수입 및 기타 재무 정보에 대한 표가 포함된 비즈니스 보고서가 포함됩니다. 질문의 경우 “2020-2022년의 연간 운영 비용은 얼마입니까?” 는 관련 테이블 열 “운영 (백만 달러)" 및 “회계 연도”와 2020년, 2021년, 2022년의 소득 값이 포함된 테이블 행을 포함하는 테이블에서 발췌한 내용을 반환할 Amazon Kendra 수 있습니다. 이 표 발췌문은 문서 제목, 전체 문서 링크 및 포함하려는 기타 문서 필드와 함께 결과에 포함됩니다.

정보가 표의 한 셀에 있든 여러 셀에 있든 상관없이 검색 결과에 표 발췌문을 표시할 수 있습니다. 예를 들어, Amazon Kendra 다음과 같은 각 쿼리에 맞게 조정된 표 발췌문을 표시할 수 있습니다.

  • '2020년 최고 이자율 신용카드'

  • “2020-2022년 최고 이자율 신용카드”

  • “2020-2022년 최고 이자율 신용카드 3개”

  • “이자율이 10% 미만인 신용카드”

  • “사용 가능한 모든 저금리 신용카드”

Amazon Kendra 쿼리와 가장 관련이 있는 테이블 셀 또는 셀을 강조 표시합니다. 가장 관련성이 높은 셀과 해당 행, 열, 열 이름이 검색 결과에 표시됩니다. 표 발췌문에는 쿼리와 관련된 표의 셀 수와 원본 표에서 사용할 수 있는 열 수에 따라 최대 5개의 열과 3개의 행이 표시됩니다. 표 발췌문에는 가장 관련성이 높은 상위 셀이 다음으로 가장 관련성이 높은 셀과 함께 표시됩니다.

응답에는 표 답변이 쿼리와 얼마나 관련이 있는지를 보여주는 신뢰도 버킷(MEDIUM, HIGH, VERY_HIGH)이 포함됩니다. 표의 셀 값이 신뢰도 VERY_HIGH인 경우, 해당 값이 '상위 답변'이 되어 강조 표시됩니다. 신뢰도가 HIGH인 표 셀 값의 경우 해당 값이 강조 표시됩니다. 신뢰도가 MEDIUM인 표 셀 값의 경우 해당 값이 강조 표시되지 않습니다. 표 답변에 대한 전체 신뢰도가 응답에 반환됩니다. 예를 들어, 표에 대부분 HIGH 신뢰도인 표 셀이 포함된 경우, 표 답변에 대한 응답에 반환된 전체 신뢰도는 HIGH 신뢰도입니다.

기본적으로 표에는 문서의 다른 구성 요소보다 더 높은 중요도나 가중치가 부여되지 않습니다. 문서 내에서 표가 쿼리와 관련성이 약간만 있지만 관련성이 높은 단락이 있는 경우 해당 단락의 일부를 Amazon Kendra 반환합니다. 검색 결과에는 동일한 문서나 다른 문서에서 가능한 최선의 답변과 가장 유용한 정보를 제공하는 콘텐츠가 표시됩니다. 표에 대한 신뢰도가 신뢰도 MEDIUM 밑으로 떨어지면 표 발췌문은 응답에 반환되지 않습니다.

기존 인덱스에서 표 형식 검색을 사용하려면 콘텐츠를 다시 인덱싱해야 합니다.

Amazon Kendra 표 형식 검색은 동의어 (사용자 정의 동의어 포함) 를 지원합니다. Amazon Kendra table 태그 내에 HTML 테이블이 있는 영어 문서만 지원합니다.

다음 예제는 쿼리 결과에 포함된 표 발췌문을 보여줍니다. 표 발췌문을 비롯한 쿼리 응답이 포함된 샘플 JSON을 보려면 쿼리 응답 및 유형을 참조하세요.

Python
import boto3 import pprint kendra = boto3.client("kendra") # Provide the index ID index_id = <index-id> # Provide the query text query = "search string" response = kendra.query( QueryText = query, IndexId = index_id) print("\nSearch results for query: " + query + "\n") for query_result in response["ResultItems"]: print("-------------------") print("Type: " + str(query_result["Type"])) print("Type: " + str(query_result["Format"])) if query_result["Type"]=="ANSWER" and query_result["Format"]=="TABLE": answer_table = query_result["TableExcerpt"] print(answer_table) if query_result["Type"]=="ANSWER" and query_result["Format"]=="TEXT": answer_text = query_result["DocumentExcerpt"] print(answer_text) if query_result["Type"]=="QUESTION_ANSWER": question_answer_text = query_result["DocumentExcerpt"]["Text"] print(question_answer_text) if query_result["Type"]=="DOCUMENT": if "DocumentTitle" in query_result: document_title = query_result["DocumentTitle"]["Text"] print("Title: " + document_title) document_text = query_result["DocumentExcerpt"]["Text"] print(document_text) print("------------------\n\n")
Java
package com.amazonaws.kendra; import software.amazon.awssdk.services.kendra.KendraClient; import software.amazon.awssdk.services.kendra.model.QueryRequest; import software.amazon.awssdk.services.kendra.model.QueryResponse; import software.amazon.awssdk.services.kendra.model.QueryResultItem; public class SearchIndexExample { public static void main(String[] args) { KendraClient kendra = KendraClient.builder().build(); String query = "search string"; String indexId = "index-id"; QueryRequest queryRequest = QueryRequest .builder() .queryText(query) .indexId(indexId) .build(); QueryResponse queryResponse = kendra.query(queryRequest); System.out.println(String.format("\nSearch results for query: %s", query)); for(QueryResultItem item: queryResponse.resultItems()) { System.out.println("----------------------"); System.out.println(String.format("Type: %s", item.type())); System.out.println(String.format("Format: %s", item.format())); switch(item.format()) { case TABLE: String answerTable = item.TableExcerpt(); System.out.println(answerTable); break; } switch(item.format()) { case TEXT: String answerText = item.DocumentExcerpt(); System.out.println(answerText); break; } switch(item.type()) { case QUESTION_ANSWER: String questionAnswerText = item.documentExcerpt().text(); System.out.println(questionAnswerText); break; case DOCUMENT: String documentTitle = item.documentTitle().text(); System.out.println(String.format("Title: %s", documentTitle)); String documentExcerpt = item.documentExcerpt().text(); System.out.println(String.format("Excerpt: %s", documentExcerpt)); break; default: System.out.println(String.format("Unknown query result type: %s", item.type())); } System.out.println("-----------------------\n"); } } }