문서 심화검색

딥서치 문서데이터를 보다 정교하게 검색할 수 있는 방법에 대해서 기술합니다.

Field Names

입력한 쿼리의 검색 대상은 기본적으로 문서의 제목과 본문이지만, 다음과 같이 특정한 필드를 지정하는 것도 가능합니다. 딥서치의 문서데이터 구조는 아래와 같습니다.

pageResult : DocumentSearchResult

항목

내용

type

비고

publisher

출처

string

author

작성자

string

title

제목

string

content

내용

string

문서 요약 정보

securities

관련 종목

array

다수개의 관련 종목(json object) 를 array 로 리턴

entities

관련 엔티티

array

다수개의 관련 엔티티(json object) 를 array 로 리턴

tags

태그 정보

array

문서에 따라 필요한 부가 정보

industry

산업 정보

json object

label:산업 코드, name:산업명, score:신뢰점수

polarity

긍부정 정보

json object

label:긍부정점수(0,1,-1), name:긍부정여부,score:신뢰점수

esg

esg 정보

json object

category: ESG 분류 정보(json object)

  • label: 환경(E), 사회(S), 지배구조(G), 해당없음(U)에 대한 코드값

  • name: ESG 명칭

  • score: 신뢰점수(0.0~1.0)

polarity: ESG에 따른 긍부정 정보(json object)

  • label: 부정(-1), 중립(0), 긍정(1)에 대한 코드값

  • name: 극성 명칭

  • score: 신뢰점수(0.0~1.0)

제목(Title)에서 `삼성전자`를 검색하는 경우

title:삼성전자

// 경제섹션 뉴스제목이 삼성전자인 문서를 찾는 명령어

DocumentSearch(["news"],["economy"],"title:삼성전자")

제목(Title)에서 `삼성전자` 혹은 `구글`을 검색하는 경우

title:(삼성전자 or 구글)

// 경제섹션 뉴스제목에 삼성전자 혹은 구글이 들어간 문서를 찾는 명령어

DocumentSearch(["news"],["economy"],"title:(삼성전자 or 구글)")

언론사(Publisher) 이름으로 검색하는 경우

publisher:한겨레

// 경제섹션 뉴스 언론사이름이 한겨레인 문서를 찾는 명령어

DocumentSearch(["news"],["economy"],"publisher:한겨레")

관련종목(Securities)으로 검색하는 경우

연관종목 : 상장기업명이 해당 문서에 포함되어 있으면서, 특정 상장 기업에 대한 뉴스인 것으로 판단할 때에만 맵핑됩니다.

참고 ) 관련종목은 상장기업만 맵핑됩니다.

securities.name:삼성전자
securities.symbol:005930 // 삼성전자 종목코드

// 활용예시

DocumentSearch(["news"],["economy"],"securities.name:삼성전자") 
DocumentSearch(["news"],["economy"],"securities.symbol:005930")
DocumentTrends(["news"],["economy"],"securities.name:대한항공") // 대한항공으로 맵핑된 뉴스수의 추이

관련 회사(Named_entities)으로 검색하는 경우

언급 내용 : 해당 문서의 본문에서 언급하고 있는 기업, 조직, 브랜드 등이 문서데이터에 맵핑됩니다.

  1. 기업(Company) : 모든 문서데이터에 맵핑되어 있으며, securities와 달리 비상장기업까지 맵핑되어 있습니다.

  2. 사람(Person) : 뉴스데이터에만 맵핑되어있습니다.

  3. 브랜드(Brand) : 뉴스데이터에만 맵핑되어있습니다.

  4. 사업자 등록번호(Business_rid)

  5. 법인 등록번호(Company_rid)

named_entities.entities.company.name:삼성전자
named_entities.entities.person.name:이재용
named_entities.entities.brand.name:갤럭시S21
named_entities.entities.company.business_rid:'124-81-00998'

// 예시

DocumentSearch(["news"],["economy"],"named_entities.entities.brand.name:갤럭시S2")  // 갤럭시21 브랜드와 관련된 경제뉴스 검색
DocumentSearch(["news"],["economy"],"named_entities.entities.person.name:이재용")  // 이재용 인물과 관련된 경제뉴스 검색
DocumentSearch(["news"],["economy"],"named_entities.entities.company.business_rid:'124-81-00998'")  // 삼성전자 사업자 등록번호로 검색
DocumentSearch(["news"],["economy"],"named_entities.entities.company.business_rid:('124-81-00998' or '107-86-14075')")  // 삼성전자 포함 두 개의 사업자 등록번호로 검색
DocumentSearch(["news"],["economy"],"named_entities.entities.person.name:한종희" and "named_entities.entities.company.name:'삼성전자'") // 대표명과 회사명으로 검색

// 기타
DocumentAggregation(["news"],["economy"],"named_entities.entities.company.name:삼성전자", "named_entities.entities.brand.name:100")  // 삼성전자를 언급한 경제뉴스상에서 brand명을 언급한 횟수

극성(polarity)기준으로 검색하는 경우

만약 특정 뉴스가 securities가 맵핑되어 있는 경우, 긍부정 판단을 위한 분석을 시행합니다. 따라서, 삼성전자와 긍정적인 뉴스를 검색하는 등의 작업을 할 수 있습니다.

named_entities.entities.brand.name:갤럭시S21

// 예시

DocumentSearch(["news"],["economy"],"named_entities.entities.brand.name:갤럭시S2")  // 갤럭시21 브랜드와 관련된 경제뉴스 검색
DocumentSearch(["news"],["economy"],"named_entities.entities.person.name:이재용")  // 이재용 인물과 관련된 경제뉴스 검색

polarity.name:긍정
polarity.name:부정
polarity.name:중립

polarity.label:'1' // 긍정 - 1을 숫자로 인식하지 않기 위해서 ''를 붙여야함.
polarity.label:'-1' // 부정
polarity.label:'0' // 중립

// 예시

DocumentSearch(["news"],["economy"],"securities.name:삼성전자 and polarity.name:긍정")
DocumentSearch(["news"],["economy"],"securities.name:삼성전자 and polarity.label:'1'")

DocumentTrends(["news"],["economy"],"securities.name:삼성전자 and polarity.name:긍정")

ESG 기준으로 검색하는 경우

만약 특정 뉴스가 securities가 맵핑되어 있는 경우, ESG 판단을 위한 분석을 시행합니다. 따라서, 삼성전자의 ESG와 관련된 뉴스를 검색하는 등의 작업을 할 수 있습니다.

// ESG 검색 조건 예시

esg.category.name:환경
esg.category.name:사회
esg.category.name:지배구조

esg.category.label:E
esg.category.label:S
esg.category.label:G

esg.polarity.name:긍정
esg.polarity.name:부정
esg.polarity.name:중립

esg.polarity.label:'1' // 긍정 - 1을 숫자로 인식하지 않기 위해서 ''를 붙여야함.
esg.polarity.label:'-1' // 부정
esg.polarity.label:'0' // 중립

// 예시

DocumentSearch(["news"],["economy"],"securities.name:삼성전자 and esg.category.name:환경")
DocumentSearch(["news"],["economy"],"securities.name:삼성전자 and esg.category.label:E")
DocumentSearch(["news"],["economy"],"securities.name:삼성전자 and esg.polarity.name:긍정")
DocumentSearch(["news"],["economy"],"securities.name:삼성전자 and esg.polarity.label:'1'")

DocumentSearch(["news"],["economy"],"securities.name:삼성전자 and esg.category.name:환경 and esg.polarity.name:긍정")
DocumentSearch(["news"],["economy"],"securities.name:삼성전자 and esg.category.label:E and esg.polarity.name:긍정")

Proximity Searches

"로 묶인 문장 쿼리의 경우 나열된 두 개 이상의 단어가 정확히 같은 순서로 일치하는 문서만 검색 결과에 나타납니다. 이와 달리 Proximity Query를 사용하면 쿼리에 나열된 단어가 지정한 범위 내에서 일치하는 경우에도 검색 결과에 나타납니다.

"삼성전자 아이폰"~5
"반도체 공장 사고"~15
"침수 사고"~15


// DocumentSearch를 이용한 Proximity Searches 사례
// "를 입력하기 위하여 앞에 \( 백슬래시 )를 앞에 넣어주어야 합니다.

DocumentSearch("news","economy","\"삼성전자 아이폰\"~15")
DocumentSearch("news","economy","\"반도체 공장 사고\"~15")
DocumentSearch("news","economy","\"침수 사고\"~15")

이 경우 `삼성전자`와 `아이폰`이란 단어가 문서 내에서 5단어 이내의 거리에서 함께 나타날 경우 입력 쿼리와 일치한다고 판단하게 됩니다. 아래 예시는 Proximity Searches 기능으로 검색할 수 있는 문장의 예시입니다.:

소장에는 삼성전자가 아이폰의 둥근 모서리와 베젤 디자인 특허를 침해했다는 내용이 담겼다.

삼성전자는 항소심에서 아이폰 특허 중 일부가 무효판정을 받으면서 삼성의 손해배상액은 5억4817만6477달러로 줄어들었다.

Boolean Operators

기본적으로 모든 단어는 AND 연산으로 처리되므로 쿼리에 나열된 모든 단어가 일치하는 문서가 검색 결과에 나타나게 됩니다. 하지만 딥서치는 보다 정교한 검색을 위해서 AND, OR, NOT 등의 기본적인 boolean 연산자와 쿼리 그룹핑 기능을 제공합니다.

예를 들어 삼성전자 관련 뉴스 중에서도 갤럭시 혹은 아이폰에 관련된 뉴스만을 검색하고자 하면 다음과 같은 쿼리를 사용하면 됩니다:

삼성전자 and (갤럭시 or 아이폰)

연산자를 명시하지 않은 모든 단어들은 기본적으로 AND로 처리되므로 상기 쿼리는 다음과 같이 재작성할 수 있습니다:

삼성전자 (갤럭시 or 아이폰)

이렇게 검색된 뉴스들 중에 애플 관련 소송 뉴스를 제외하고자 한다면 다음과 같이 쿼리를 개선할 수 있습니다:

삼성전자 (갤럭시 or 아이폰) !소송

상기 쿼리 그대로 제목만을 대상으로 검색하고자 하는 경우는 다음과 같이 쿼리를 재작성할 수 있습니다:

title:(삼성전자 (갤럭시 or 아이폰) !소송)

제목에서 `소송`이 언급된 경우만을 제외하고자 한다면 다음과 같이 쿼리를 재작성할 수 있습니다:

삼성전자 (갤럭시 or 아이폰) !title:소송

날짜 + 시간단위로 문서를 조회하는 방법

정식으로 지원하는 date_from, date_to 파라미터는 연월일만 조회할 수 있을 뿐, 시간단위로는 조회할 수 없는 단점이있습니다. 아래 기능을 이용하시면, 연월일 뿐만아니라 시간까지 넣어서 조회할 수 있습니다.

// date_from, date_to를 사용하지않고, created_at을 사용합니다.

DocumentSearch(["news"], [], "삼성전자 and created_at:[\"2022-07-12T00:00:00\" to \"2022-07-12T09:00:00\"]", page=1, count=10, highlight=True)

Last updated