KR20240011718A - 오프셋 매핑을 사용한 워드브레이크 알고리즘 - Google Patents

오프셋 매핑을 사용한 워드브레이크 알고리즘 Download PDF

Info

Publication number
KR20240011718A
KR20240011718A KR1020237040866A KR20237040866A KR20240011718A KR 20240011718 A KR20240011718 A KR 20240011718A KR 1020237040866 A KR1020237040866 A KR 1020237040866A KR 20237040866 A KR20237040866 A KR 20237040866A KR 20240011718 A KR20240011718 A KR 20240011718A
Authority
KR
South Korea
Prior art keywords
string
character
index value
target
offset index
Prior art date
Application number
KR1020237040866A
Other languages
English (en)
Inventor
마노즈 굽타
카빈 모트라니
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/444,347 external-priority patent/US11899698B2/en
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20240011718A publication Critical patent/KR20240011718A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/109Font handling; Temporal or kinetic typography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/163Handling of whitespace
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/53Processing of non-Latin text

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Bioethics (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Machine Translation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

명령어를 저장하는 대용량 저장 디바이스에 결합된 프로세서를 포함하는 컴퓨터 시스템이 제공되는데, 명령어는 프로세서에 의해 실행되면, 프로세서로 하여금 복수의 문자로 구성된 원본 문자열을 저장하고, 원본 문자열에 대해 워드브레이크 알고리즘을 수행하고, 공백으로 구분된 복수의 단어 토큰을 포함하는 처리된 문자열을 생성하기 위해 원본 문자열을 토큰화하도록 한다. 프로세서는 처리된 문자열의 단어 토큰 내의 위치와 원본 문자열의 대응하는 위치 사이의 오프셋 맵을 생성하고, 처리된 문자열의 일부를 타겟으로 분류하도록 더 구성된다. 프로세서는 오프셋 맵을 사용하여 타겟에 대응하는 원본 문자열에서의 타겟 문자를 식별하며, 원본 문자열에서의 타겟 문자에 대해 사전결정된 액션을 수행하도록 더 구성될 수 있다.

Description

오프셋 매핑을 사용한 워드브레이크 알고리즘
워드브레이크 알고리즘(wordbreak algorithms)은 컴퓨팅의 다양한 맥락에서 사용된다. 워드브레이크 알고리즘이 사용되는 특정 애플리케이션 중 하나는 데이터 손실 방지(DLP)이다. DLP 시스템은 컴퓨터 및 컴퓨터 네트워크와 같이 민감한 데이터를 저장하거나 전송할 때 도난 및 우발적인 공개와 같은 데이터 손실의 위협으로부터 보호하도록 설계되었다. 예를 들어, 이러한 DLP 시스템에 의해 단어 분류 프로그램이 사용되어 이메일 및 메시징과 같은 전자 통신에 포함된 민감한 정보를 모니터링하고 검출하여 민감한 정보가 회사 네트워크 외부로 전송되는 것을 방지할 수 있다. DLP 기술은 중국어, 한국어, 일본어와 같은 언어에 포함된 멀티바이트 문자를 지원한다. 이러한 멀티바이트 문자로 구성된 문자열의 경우, 워드브레이크 알고리즘을 사용하여 원본 문자열을 일반적으로 공백으로 구분된 개별 단어로 분리하고 토큰화된 단어를 포함한 처리된 문자열을 생성할 수 있다.
그러나, 이러한 다중 바이트 언어의 경우, 많은 상황에서 워드브레이크 알고리즘에 의해 생성된 처리된 문자열은 원본 문자열과 다른 길이를 가질 수 있으며, 또한 쉼표 및 구두점 등 원본 문자열에 있는 일부 문자를 분실할 수 있고 원본 문자열과 다를 수 있는 공백, 탭 및 기타 공백 문자를 가질 수 있다. 이와 같이, 원본 문자열과 처리된 문자열 간에 불일치가 있는 경우, DLP 시스템의 단어 분류 프로그램은 원본 문자열에서 민감한 정보를 올바르게 식별하지 못할 수 있으며, 이로 인해 중요한 민감한 정보가 도난당하거나 실수로 공개될 수 있다.
본 개시의 일 측면에 따르면, 명령어를 저장하는 대용량 저장 디바이스에 결합된 프로세서를 포함하는 컴퓨터 시스템이 제공된다. 프로세서에 의해 실행되면, 명령어는 프로세서로 하여금 복수의 문자로 구성된 원본 문자열을 저장하고, 원본 문자열에 대해 워드브레이크 알고리즘을 수행하고, 공백으로 구분된 복수의 단어 토큰을 포함하는 처리된 문자열을 생성하기 위해 원본 문자열을 토큰화하도록 한다. 프로세서는 처리된 문자열의 단어 토큰 내의 위치와 원본 문자열의 대응하는 위치 사이의 오프셋 맵을 생성하고, 처리된 문자열의 일부를 타겟으로 분류하고, 오프셋 맵을 사용하여 타겟에 대응하는 원본 문자열에서의 타겟 문자를 식별하며, 원본 문자열에서의 타겟 문자에 대해 사전결정된 액션을 수행하도록 더 구성될 수 있다.
이 구성의 잠재적 장점 중 하나는, 워드브레이크 알고리즘이 원본 문자열과 처리된 문자열 간에 불일치가 있더라도 처리된 문자열을 기반으로 멀티바이트 언어 문자로 구성된 원본 문자열에서의 타겟 문자를 정확하게 식별할 수 있다는 점이다. 따라서, 이러한 알고리즘을 적용한 단어 분류 프로그램은 민감한 정보를 정확하게 식별하고 해당 정보의 도난이나 우발적인 유출을 방지할 수 있다.
이 요약은 아래 상세 설명에서 자세히 설명하는 몇 가지 개념을 간소화된 형태로 소개하기 위해 제공된다. 본 요약은 청구된 주제의 주요 특징이나 필수적인 특징을 식별하기 위한 것이 아니며, 청구된 주제의 범위를 제한하기 위한 목적으로 사용되지 않는다. 또한, 청구된 주제는 본 개시의 임의의 부분에서 언급된 임의의 또는 모든 단점을 해결하는 구현에 한정되지 않는다.
도 1은 검색 프로그램에 의해 검색될 수 있는 처리된 문자열을 생성하고, 검색 프로그램에 의해 일치하는 것이 발견되면 오프셋 맵을 활용하여 처리된 문자열에서 일치하는 타겟에 대응하는 원본 문자열의 타겟 문자를 식별하도록 워드브레이크 알고리즘을 수행하도록 구성된 컴퓨팅 디바이스를 포함하는 컴퓨팅 시스템의 개략도이다.
도 2는 정책 및 민감 데이터 정의를 설정하는 컴플라이언스 및 보안 프로그램으로 구성된 제1 컴퓨팅 디바이스와, 제1 컴퓨팅 디바이스에 의해 설정된 정의 및 정책에 따라 각각이 검색 프로그램을 실행하는 제2 컴퓨팅 디바이스 및 제3 컴퓨팅 디바이스를 포함하는 서버 시스템을 포함하는 도 1의 컴퓨팅 시스템의 다른 구성의 개략도이다.
도 3은 오프셋 매핑을 갖는 워드브레이크 알고리즘을 수행할 때, 도 1의 컴퓨팅 시스템에 의해 조작되는 복수의 데이터 구조의 개략도를 나타낸다.
도 4는 도 2의 컴플라이언스 및 보안 프로그램 정책의 설정에 활용되는 예시적인 GUI의 개략도이다.
도 5a-5d는 원본 문자열에서의 타겟 문자에 대해 사전 결정된 동작을 수행하는 데 활용된 네 가지 다른 GUI 예시를 보여준다.
도 6은 원본 문자열의 다른 예에 대해 오프셋 매핑을 갖는 워드브레이크 알고리즘을 수행할 때 도 1의 컴퓨팅 시스템에 의해 조작되는 복수의 데이터 구조의 개략도를 도시한다.
도 7은 본 개시의 일 실시예에 따른 방법의 순서도를 도시한다.
도 8은 도 1의 방법이 실시될 수 있는 예시적인 컴퓨팅 환경의 개략도를 도시한다.
위에서 논의한 바와 같이, 워드브레이크 알고리즘은 다양한 언어에서 민감한 정보를 모니터링하고 탐지하는 데 사용되는 DLP 시스템을 포함하여 다양한 소프트웨어 애플리케이션에 유용하다. 워드브레이크 알고리즘은 현대의 개인용 컴퓨터 및 서버에서 실행되는 검색 엔진 및 인덱싱 프로그램과 같은 검색 프로그램에도 사용된다. 이러한 검색 프로그램에서, 워드브레이크 알고리즘은 문자열 데이터 세트를, 토큰화된 단어를 포함한 처리된 문자열 데이터 세트로 처리하는 데 사용된다. 검색 프로그램에 의해 일치하는 항목이 발견되면, 데이터 세트의 일치 항목은 사용자가 볼 수 있도록 강조 표시된 형태로 표시되거나 데이터 세트에서 추출되거나 난독화될 수 있다. 이러한 조치를 취하기 위해, 워드브레이크 알고리즘은 검색 프로그램이 토큰화된 처리된 문자열에서 단어 토큰을 식별한 위치를 결정하고, 단어 토큰이 원본 문자열의 문자와 약간 다르기 때문에 일치하는 단어 토큰이 원본 문자열의 문자와 일치하는 위치를 결정하는 것이 이해될 것이다. 이는 아래에서 설명하는 것처럼 까다로운 작업이 될 수 있다.
영어, 프랑스어, 스페인어와 같은 언어에는 단어 사이에 공백이 단어 경계로 존재한다. 이러한 언어의 경우, 단어 분류 프로그램이 출력하는 처리된 문자열의 단어 경계는 원본 문자열의 단어 경계와 일치한다. 따라서, 검색 프로그램이 단어를 구분하는 공백이 포함된 문자열의 데이터 세트에 대해 검색을 수행하여, 원본 문자열에서 대응하는 단어의 위치를 식별하는 것은 비교적 쉬운 일이다.
그러나, 중국어, 한국어, 일본어와 같은 다중 바이트 인코딩 언어에는 공백으로 구분된 단어 경계가 없다. 이러한 다중 바이트 인코딩 언어의 원본 문자열에 기존의 워드브레이크 알고리즘을 적용하면 단어 경계가 있는 처리된 문자열을 생성할 수 있다. 그러나 많은 상황에서 워드브레이크 알고리즘에 의해 생성된 처리된 문자열은 단어 토큰을 구분하기 위해 추가된 공백으로 인해 원본 문자열과는 다른 딜이를 가질 수 있다. 또한 처리된 문자열은 쉼표 및 구두점과 같이 원본 문자열에 있는 일부 문자를 분실할 수 있으며 원본 문자열과 다른 공백, 탭 및 기타 공백 문자를 가질 수도 있다. 이와 같이 원본 문자열과 처리된 문자열 간에 불일치가 있는 경우, 검색 프로그램은 처리된 문자열에서 일치하는 단어 토큰에 대응하는 원본 문자열의 문자를 올바르게 식별하지 못할 수 있다.
이러한 문제를 해결하기 위해, 컴퓨터 시스템 및 이를 사용하기 위한 컴퓨터화된 방법이 본원에 개시된다. 도 1은 본 개시의 일 양상에 따라, 검색 프로그램(54)에 의해 검색될 수 있는 처리된 문자열(36)을 생성하고, 검색 프로그램(54)에 의해 일치하는 것이 발견되면, 오프셋 맵(48)을 활용하여 처리된 문자열(36)에서 일치하는 타겟에 대응하는 원본 문자열(34)의 타겟 문자(74)를 식별하도록 워드브레이크 알고리즘 프로그램(42)을 수행하도록 구성된 컴퓨팅 디바이스(12)를 포함하는 컴퓨팅 시스템(10)을 도시한다. 도시된 구성에서, 컴퓨팅 디바이스(12)는 프로세서(14), 메모리(16) 및 대용량 저장 디바이스(18)를 포함할 수 있으며, 이들은 통신 버스에 의해 서로 작동적으로 결합될 수 있다. 프로세서(14), 메모리(16) 및 대용량 저장 디바이스(18) 각각은 하나 이상의 프로세서 코어 및/또는 하나 이상의 물리적 메모리 모듈과 같은 물리적 구성요소로 구성될 수 있다. 대용량 저장 디바이스(18)는 프로세서(14)에 의해 실행되는 것으로서 본 명세서에 설명된 다양한 소프트웨어 컴포넌트들에 대한 명령어를 저장하고, 또한 이러한 소프트웨어 컴포넌트에 의해 사용되는 데이터 세트(30)도 저장한다. 컴퓨팅 디바이스(12)는 키보드, 마우스, 터치스크린, 트랙패드, 가속도계, 마이크, 또는 다른 적절한 유형의 입력 디바이스일 수 있는 입력 디바이스(26)를 더 포함할 수 있다. 또한, 컴퓨팅 디바이스(12)는 디스플레이, 스피커 또는 다른 적합한 유형의 출력 디바이스일 수 있는 출력 디바이스(22)를 더 포함할 수 있다. 컴퓨팅 디바이스(12)는 노트북, 데스크톱, 또는 서버와 같은 다양한 유형의 컴퓨팅 디바이스 중 임의의 유형일 수 있다. 컴퓨팅 디바이스(12)는 또한 휴대용 태블릿 또는 스마트폰 디바이스와 같은 모바일 컴퓨팅 디바이스일 수도 있다.
프로세서(14)에 의해 실행될 때, 대용량 저장 디바이스(18)에 저장된 명령어들은 프로세서(14)로 하여금 복수의 문자로 형성된 원본 문자열(34)을 저장하게 한다. 이것은 예를 들어, 인덱싱 프로그램이 사용자의 하드 드라이브에 있는 파일을 인덱싱하는 경우, 서버가 웹을 크롤링하여 웹으로부터 수집된 인덱싱된 파일 모음을 저장하는 경우, 소프트웨어 프로그램이 데이터베이스에 기록물을 저장하는 경우, 또는 소프트웨어 프로그램이 이메일 또는 채팅 메시지와 같은 통신문 또는 문서에 대한 작업 데이터를 저장하는 경우 등일 때 발생할 수 있다. 다음 예시에서는, 도 2에 도시되어 있는 바와 같이, 사용자가 출장을 위해 여행사와 사용자의 여권 번호에 대해 통신하고 있으며, 사용자 조직에서 설정한 보안 정책에 의해 통신에 플래그가 지정되어 있다. 원본 문자열(34)은 애플리케이션에 따라, 대용량 저장 장치(18)에 저장된 수십, 수백, 수천 또는 수백만 개의 원본 문자열 중 하나일 수 있음을 이해할 수 있을 것이다. 도 1에 도시된 구성에서, 저장된 원본 문자열(34)은 "이것은 나의 여권 번호 AA1XXXXXX7입니다"로 번역되는 일본어 문자로 형성된다. 일본어로 작성된 원본 문자열(34)에는 단어 사이에 공백이 없는데, 이는 일본어가 단어를 명명함에 있어 공백을 사용하지 않기 때문이다. 원본 문자열(34)은 예시된 예에서 사용자가 여행사에게 전송하는 이메일 또는 워드 프로세싱 문서와 같은 전자 문서 또는 전자 메시지에서 추출되거나 그 전자 문서 또는 전자 메시지 내에 포함될 수 있다. 대용량 저장 디바이스(18)는 원본 문자열(34)의 일부로서 민감한 데이터(38)를 추가로 저장할 수 있다. 민감한 데이터(38)에 대한 정의 및 민감한 데이터(38)를 처리하기 위한 정책은 아래에서 도 2를 참조하여 설명되는 바와 같이 사용자 또는 관리자에 의해 정의될 수 있다. 도 1에 도시된 예에서, 민감 데이터(38)는 일본어로 '여권 번호'를 포함한다. 원본 문자열(34)은 중국어, 한국어 및 태국어와 같은 다른 멀티 바이트 인코딩된 언어로 형성될 수 있음을 이해할 수 있을 것이다.
원본 문자열(34)을 저장한 후, 일반적으로 도 1에 도시된 바와 같이 (1) 내지 (9)의 순서로 진행되는 프로세스 흐름이 이어진다. (1) 및 (2)에서, 시스템(10)의 워드브레이크 알고리즘 프로그램(42)은 저장된 원본 문자열(34)을 입력으로 수신하여 처리된 문자열(36)을 출력한다. 프로세서(14)는 워드브레이크 알고리즘 프로그램(42)을 통해 워드브레이크 알고리즘을 수행하도록 구성된다. 워드브레이크 알고리즘 프로그램(42)은 원본 문자열(34)에 대해 워드브레이크 알고리즘을 수행하고 공백으로 구분된 복수의 단어 토큰을 포함하는 처리된 문자열(36)을 생성하기 위해 원본 문자열(34)을 토큰화하도록 구성되는 토큰화 모듈(44)을 갖는 처리된 문자열 생성기(40)를 포함할 수 있다. 토큰화 모듈(44)을 통한 원본 문자열(34)의 토큰화는 처리된 문자열(36)을 그 출력으로 생성하는 것으로 이해될 것이다. 따라서, 처리된 문자열의 생성은 토큰화를 통해 이루어진다. 원본 문자열(34)과 처리된 문자열(36)의 차이점은 아래에 자세히 설명되어 있다. 이 예에서, 원본 문자열(34)은 일본어로 작성되었으며, 원본 문자열의 영어 번역은 "이것은 내 여권 번호 AA1XXXXXX7이다."이다. 일본어로, 이 원본 문자열(34)에는 24개의 문자가 있다. 도시된 실시예에서, 워드브레이크 알고리즘 프로그램(42)의 처리된 문자열 생성기(40)에 의해 생성된 처리된 문자열(36)에는 7개의 공백으로 구분된 단어 토큰이 포함되며, 원본 문자열(34)의 10번째 및 11번째 위치에 있는 2개의 점이 제거되므로, 워드브레이크 알고리즘 수행 후 처리된 문자열(36)에는 2개의 점이 생략되어 있다. 그 결과, 처리된 문자열(36)은 도 1에 도시된 바와 같이 공백을 포함하여 29개의 문자를 가지게 된다.
전술한 바와 같이, 처리된 문자열(36)은 검색 프로그램(54)과 호환 가능한 형태이므로 검색에 효율적이다. 예를 들어, 처리된 문자열(36)은 전술한 데이터 세트(30)의 소스 중 하나로부터 생성된 검색 가능한 인덱스로 색인된 데이터일 수 있다. 따라서, 처리된 문자열(36)은 검색하기는 쉽지만, 사용자가 사용하기에 적합한 자연스러운 형태는 아니다. 이러한 이유로, 원본 문자열(34)의 일부를 사용하여 처리된 문자열(36)에서 발견되는 타겟(56)을 사용자에게 표시하기 위해, 오프셋 맵(48)이 생성된다.
구체적으로, (3) 및 (4)에 도시된 바와 같이, 처리된 문자열(36)의 단어 토큰 내의 위치와 원본 문자열(34)의 대응하는 위치 사이의 오프셋 맵(48)은 오프셋 맵 생성기(46)를 통해 생성될 수 있다. 오프셋 맵(48)은 원본 문자열(34) 및 처리된 문자열(36)에 기초하여 생성되는 제1 데이터 구조(50) 및 제2 데이터 구조(52)를 포함할 수 있다. 제1 데이터 구조(50)는 워드브레이크 알고리즘 동안 원본 문자열(34)에서 검출된 각 토큰 단어의, 원본 문자열(34)에서의 시작 문자 오프셋 인덱스 값 및 문자 길이를 포함하고, 제2 데이터 구조(52)는 처리된 문자열(36)에서 각 토큰의 종료 문자 오프셋 인덱스 값을 포함하며, 제1 및 제2 데이터 구조 각각은 동일한 수의 요소를 갖는데, 즉 동일한 수의 토큰 인덱스 값(57)을 저장한다(비록 각각에 대해 대응하는 데이터(시작 문자 오프셋 인덱스 값 및 문자 길이 OR 종료 문자 오프셋 인덱스 값)를 갖더라고). 아래 도 3에 더 설명된 바와 같이, 오프셋 맵 생성기(46)는 [0](0, 2), [1](2, 1), [2](3, 1)... [6](14, 2) 및 [7](16, 9)의 제1 데이터 구조(50)를 원본 문자열(34)로부터 획득하고, 처리된 문자열(36)로부터 [0](3), [1](5), [2](7) ... [6](21) 및 [7](31)의 제2 데이터 구조(52)를 획득한다.
(5) 및 (6)에서, 프로세서(14)는 검색 프로그램(54)을 통해 처리된 문자열(36)의 일부를 타겟(56)으로서 검출 및 분류하도록 더 구성될 수 있다. 타겟(56)은 아래 도 2에 설명된 바와 같이, 사용자 또는 관리자에 의해 정의된 사전결정된 민감한 정보 데이터 타입의 민감한 정보이다. 검색 프로그램(54)은 처리된 문자열(36)에서 민감한 데이터(38)를 검색하고, 민감한 데이터(38)에 포함된 문자에 대응하여 관리자 또는 사용자가 설정한 민감한 데이터 정의(94)(예컨대, 도 2 참조)와 일치하는 타겟(56)을 찾는다. 도시된 예에서, 일본어로 된 "여권 번호"는 민감한 데이터(38)에 포함되고, 처리된 문자열(36)에서 일본어로 된 타겟(56) "여권 번호"를 검색 프로그램(54)을 통해 타겟(56)을 찾는다. 검색 프로그램(54)은 타겟(56)의 타겟 단어 토큰(58) 및/또는 연관된 시작 문자 오프셋 인덱스 값(56A) 및/또는 종료 문자 오프셋 인덱스 값(56B)을 획득하여 원본 문자열 타겟 로케이터(60)로 전송한다.
도시된 예에서, 처리된 문자열(36)의 "여권 번호"에 대한 타겟 단어 토큰(58)("여권 번호") 및 시작 문자 오프셋 인덱스 값(56A)(도 1의 "9") 및 종료 문자 오프셋 인덱스 값(56B)(도 1의 "16")은 원본 문자열 타겟 로케이터(60)로 전송된다. (7) 및 (8)에서, 프로세서는 오프셋 맵(48) 및 타겟 단어 토큰(58) 및/또는 검색 프로그램(54)에 의해 제공되는 연관된 시작 문자 오프셋 인덱스 값(56A) 및 종료 문자 오프셋 인덱스 값(56B)을 사용하여 타겟(56)에 대응하는 원본 문자열(34)의 타겟 문자(74)를 식별하도록 더 구성될 수 있다. 원본 문자열(34)의 타겟 문자(74)는 타겟 문자(74)의 시작 문자 오프셋 인덱스 값(64A) 및 문자 길이를 식별하고; 및/또는 타겟 문자(74)의 시작 문자 오프셋 인덱스 값(64A) 및 종료 문자 오프셋 인덱스 값(64B)을 식별하여 위치를 확인할 수 있다. 아래 도 3에 더 설명된 바와 같이, 워드브레이크 알고리즘 프로그램(42)의 원본 문자열 타겟 로케이터(60)의 오프셋 변환 모듈(62)은 오프셋 맵(48)의 제1 데이터 구조(50) 및 제2 데이터 구조(52)를 사용하여 타겟 단어 토큰(58) 및 연관된 시작 문자 오프셋 인덱스 값(56A) 및 종료 문자 오프셋 인덱스 값(56B)(도 1의 "9" 및 "16")을 원본 문자열(34)의 타겟 문자(74)의 시작 문자 오프셋 인덱스 값(64A) 및 종료 문자 오프셋 인덱스 값(64B)으로 변환한다. 그런 다음, 원본 문자열 타겟 로케이터(60)는 원본 문자열(34)의 타겟 문자(74)의 시작 문자 오프셋 인덱스 값(64A) 및 종료 문자 오프셋 인덱스 값(64B)을 워드브레이크 알고리즘 프로그램(42)의 액션 모듈(66)로 전송한다. 도시된 예에서, 원본 문자열 타겟 로케이터(60)는 오프셋 맵(48)을 이용하여 타겟 단어 토큰의 시작 문자 오프셋 인덱스 값(56A)("9") 및 종료 문자 오프셋 인덱스 값(56B)("16")를 원본 문자열(34)의 시작 문자 오프셋 인덱스 값(64A) 및 종료 문자 오프셋 인덱스 값(64B)으로서 (5, 13)으로 변환하여, 액션 모듈(66)이 원본 문자열(34)의 타겟 문자(74) "여권..번호"(일본어 타겟 문자의 영문 번역)를 식별할 수 있도록 한다.
(9)에서, 프로세서(14)는 워드브레이크 알고리즘 프로그램(42)의 액션 모듈(66)을 통해 원본 문자열(34)의 타겟 문자(74)에 대해 사전결정된 액션을 수행하도록 더 구성될 수 있다. 액션 모듈(66)은 타겟 문자(74)의 시작 문자 오프셋 인덱스 값(64A) 및 종료 문자 오프셋 인덱스 값(64B)에 기초하여 원본 문자열(34)의 타겟 문자(74)를 식별하고, 타겟 문자(74)에 대해 사전결정된 액션(68)을 수행한다. 이 예에서, 액션 모듈(66)은 타겟 문자(74) "여권..번호"를 식별하고 GUI(70)에 강조 표시하여 표시한다. 도 5a, 5b, 5c 및 5d를 간략히 참조하면, 사용자 또는 관리자에 의해 다양한 동작이 프로그래밍되어 타겟 문자(74)에 대해 수행될 수 있다. 도 5a에 도시된 제1 구성에서, 타겟 문자(74)는 강조, 밑줄, 굵은 문자, 이탤릭 문자, 변경된 색상, 더 크거나 더 작은 글꼴 크기 등과 같이 강조 표시될 수 있다. 도 5b에 도시된 제2 구성에서, 타겟 문자(74)는 난독화되거나 삭제될 수 있다. 도 5c에 도시된 제3 구성에서, 타겟 문자(74)에 관한 경고 메시지가 표시될 수 있다. 도 5d에 도시된 제4 구성에서, 타겟 문자(74)가 추출될 수 있다. 워드브레이크 알고리즘 프로그램(42)의 액션 모듈(56)에 의해 실행되는 이러한 동작으로 인해, 예시적인 실시예에서, 사용자는 사용자의 민감한 데이터(38)를 공유하지 못하도록 방지될 수 있다.
도 2는 서버 시스템(11) 및 복수의 컴퓨팅 디바이스(12A-12C)을 포함하는, 도 1의 컴퓨팅 시스템(10)의 다른 구성의 개략도이다. 컴퓨팅 디바이스(12A-12C)는 아래에 다르게 설명되는 것을 제외하고, 전술한 컴퓨팅 디바이스(12)와 유사하게 구성된다. 컴퓨팅 디바이스(12B) 및 컴퓨팅 디바이스(12A)는 동일한 서버 시스템(11)에, 예를 들어 동일한 데이터 센터에 있는 것으로 도시되고, 따라서 고속 통신을 위해 근거리 통신망에 의해 연결되고, 컴퓨팅 디바이스(12C)는 인터넷과 같은 WAN(98)을 통해 서버 시스템(11)과 통신하는 것으로 이해될 수 있을 것이다. 이러한 방식으로, 관리 사용자는 데이터 센터 내 및 인터넷을 통해 컴퓨터에 대한 보안 정책을 제어할 수 있다.
서버 시스템(11)은 민감한 데이터 정의(94) 및 정책(96)을 설정하는 컴플라이언스 및 보안 프로그램으로 구성된 관리 서버의 역할을 수행하는 제1 컴퓨팅 디바이스(12A), 및 제2 컴퓨팅 디바이스(12B) 및 제3 컴퓨팅 디바이스(12C)를 포함하며, 이들 제2 및 제3 컴퓨팅 디바이스 각각은 제1 컴퓨팅 디바이스(12A)가 설정한 정의(94) 및 정책(96)에 따라 검색 프로그램(54)을 실행한다. 서버 시스템(11)의 컴퓨팅 디바이스(12B, 12C)는 각각 검색 프로그램(54)의 각 인스턴스를 실행하도록 구성되며, 각 인스턴스는 관리 서버의 역할을 하는 컴퓨팅 디바이스(12A)로부터 민감 데이터 정의(94) 및 하나 이상의 정책(96)을 입력으로 수신하고, 각각의 컴퓨팅 디바이스(12B, 12C)에 저장된 민감한 데이터 정의에 따라 복수의 원본 문자열을 포함하는 데이터 세트에서 민감한 데이터를 검색하도록 구성된다. 또한, 도시되지는 않았지만, 컴퓨팅 디바이스(12A)는 컴퓨팅 디바이스(12A)가 액세스하는 데이터 세트에 대한 검색 프로그램을 구현할 수도 있음이 이해될 것이다.
이를 달성하기 위해, 컴플라이언스 및 보안 프로그램(92)이 컴퓨팅 디바이스(12A)에서의 사용자 또는 관리자에 의해 실행되어 민감한 데이터(94)에 대한 정의 및 조직 내의 민감한 데이터를 처리하기 위한 정책(96)을 설정할 수 있다. 도 4를 간략히 참조하면, 사용자 또는 관리자는 컴플라이언스 및 보안 프로그램(92)의 컴플라이언스 및 보안 프로그램 GUI(96)에서 민감한 데이터 정의(94) 및 정책(96)을 생성 및 편집할 수 있다. 도시된 실시예에서, 사용자 또는 관리자는 민감 데이터 정의(94) 또는 정책(96)에 따라 적용되고 있는 활성 민감 데이터 정의(94)에 여권 번호, 사회 보장 번호 및 신용카드 번호와 같은 민감 데이터 유형을 추가할 수 있다. 정책(96)에 따라, 사용자 또는 관리자는 메일 서버, 클라우드 스토리지 및 파일 서버를 포함하여, 검색 프로그램(54)에 의해 검색될 위치를 설정할 수 있고, 각 리소스에 대한 데이터 경로를 나타낼 수 있다. 사용자 또는 관리자는 전술한 도 5a-d에 설명된 바와 같이, 원본 문자열(34)의 타겟 문자(74)에 대해 사전결정된 액션을 추가로 설정할 수 있다.
도 3은 오프셋 매핑을 갖는 워드브레이크 알고리즘을 수행할 때, 도 1의 컴퓨팅 시스템에 의해 조작되는 복수의 데이터 구조의 개략도를 도시한다. 도 1에 도시된 예에서, 오프셋 맵 생성기(46)는 원본 문자열(34)로부터 [0](0, 2), [1](2, 1), [2] (3, 1)...[6](14, 2) 및 [7](16, 9)의 제1 데이터 구조(50)를 획득하고, 처리된 문자열(36)로부터 [0](3), [1](5), [2](7) ... [6](21) 및 [7](31)의 제2 데이터 구조(52)를 획득하여 오프셋 맵(48)을 생성한다. 제1 데이터 구조(50)는 워드브레이크 알고리즘 동안 원본 문자열(34)에서 검출된 각 토큰 단어의, 원본 문자열(34)에서의 시작 문자 오프셋 인덱스 값과 문자 길이를 저장한다. 이 예에서, 제1 단어는 "0"에서 시작하고 2개의 문자를 갖기 때문에, 제1 토큰 [0]의 시작 문자 오프셋 인덱스 값과 문자 길이는 (0, 2)이다. 다음 단어는 "2"에서 시작하고 하나의 문자를 갖기 때문에, 제2 토큰 [1]의 시작 문자 오프셋 인덱스 값과 문자 길이는 (2, 1)이다. 마지막 토큰 [7]의 시작 문자 오프셋 인덱스 값과 문자 길이는 (16, 9)이다. 나머지 토큰 단어의 시작 문자 오프셋 인덱스 값과 문자 길이도 같은 방식으로 얻는다.
한편, 제2 데이터 구조(52)는 처리된 문자열(36)에서 각 토큰의 종료 문자 오프셋 인덱스 값을 저장하는데, 이는 도 3의 제1 수식(83)을 사용하여 구할 수 있다. 제1 토큰 [0]의 종료 문자 오프셋 인덱스 값은 제 1 공식(83)에 따라 "(3)"("0 + 2 + 1 = 3")인데, 이는 앞의 종료 문자 오프셋 인덱스 값이 "0"이고 위에서 계산한 바와 같이 원본 문자열의 제1 토큰 단어의 길이가 "2"이고 추가 공백의 길이가 1이기 때문이다. 그런 다음, 제2 토큰 [1]의 종료 문자 오프셋 인덱스 값은 제1 공식(83)에 따라 "(5)"("3 + 1 + 1 = 5")이며, 이는 이전 종료 문자 오프셋 인덱스 값이 "3"이고 원본 문자열의 제2 토큰 단어의 길이가 "1"이고 추가 공백의 길이가 1이기 때문이다. 마지막 토큰 [7]의 종료 문자 오프셋 인덱스 값은 제1 공식(83)에 따라 "(31)"("21 + 9 + 1 = 31")이며, 이는 이전 종료 문자 오프셋 인덱스 값이 "21"이고 원본 문자열의 제2 토큰 단어에 대한 길이가 "9"이며 추가 공백의 길이는 1이기 때문이다. 처리된 문자열(36)의 나머지 토큰 워드의 종료 문자 오프셋 인덱스 값도 같은 방식으로 구할 수 있다. 여기서, 제1 및 제2 데이터 구조(50 및 52) 각각은 동일한 수의 요소를 갖는데, 즉 동일한 수의 토큰 인덱스 값(57)을 저장하지만, 각각에 대응하는 데이터(시작 문자 오프셋 인덱스 값 및 문자 길이 OR 종료 문자 오프셋 인덱스 값)를 가진다.
도 1의 검색 프로그램(54)은 처리된 문자열(36)에서 타겟(56)을 식별하고, 타겟 단어 토큰(58)이 결정된다. 타겟 단어 토큰(58) 각각은 괄호 안에 표시된 연관된 토큰 인덱스 값(57)을 갖는다. 타겟 단어 토큰(58)은 또한 처리된 문자열(36)에서 연관된 시작 문자 오프셋 인덱스 값(56A) 및 종료 문자 오프셋 인덱스 값(56B)("9" 및 "16")을 갖는다. 타겟 단어 토큰(58) 및/또는 연관된 시작 문자 오프셋 인덱스 값(56A) 및/또는 종료 문자 오프셋 인덱스 값(56B)은 도 1의 원본 문자열 타겟 로케이터(60)로 전송된다. 또는, 시작 문자 오프셋 인덱스 값(56A) 및 종료 문자 오프셋 인덱스 값(56B)의 결정을 위해, 토큰(59A, 59B) 자체가 원본 문자열 타겟 로케이터(60)로 전송될 수도 있다.
워드브레이크 알고리즘 프로그램(42)의 원본 문자열 타겟 로케이터(60)의 오프셋 변환 모듈(62)은 오프셋 맵(48)의 제1 데이터 구조(50)와 제2 데이터 구조(52)를 사용하여 타겟 단어 토큰(58)("9" 및 "16")을 원본 문자열(34)의 타겟 문자(74)의 시작 문자 오프셋 인덱스 값(64A) 및 종료 문자 오프셋 인덱스 값(64B)(도 1의 "5" 및 "13")로 변환한다. 이러한 변환을 위해 제2 공식(84) 및 제3 공식(86)을 사용하는 두 가지 다른 단계가 사용되어 타겟 문자(74)의 시작 문자 오프셋 인덱스 값(64A) 및 종료 문자 오프셋 인덱스 값(64B)(도 1의 "5" 및 "13")을 식별할 수 있다.
먼저, 제2 공식(84)이 사용되어, 처리된 문자열(36)에서 타겟의 시작 토큰(59A)의 시작 문자 오프셋 인덱스 값(56A) 및 종료 토큰(59B)의 종료 문자 오프셋 인덱스 값(56B) 각각에 대한 토큰 인덱스 값(57)(도 1의 "9" 및 "16") 각각에 대한 토큰 인덱스 값(57)을 결정한다. 도시된 예에서, 시작 문자 오프셋 인덱스 값(56A)("9")에 대한 토큰 인덱스 값(57)은, 시작 문자 오프셋 인덱스 값(56A)("9")이 처리된 문자열(36)의 제4 토큰 [3]의 종료 문자 오프셋 인덱스 값("(9)")보다 크거나 같고, 처리된 문자열(4)의 제5 토큰[4]의 종료 문자 오프셋 인덱스 값("(15)")보다 작으므로, 제2 공식(84)을 사용하여 "4"로 결정된다. 종료 문자 오프셋 인덱스 값(56B)("16")에 대한 토큰 인덱스 값(57)은, 종료 문자 오프셋 인덱스 값(56B)("16")이 처리된 문자열(36)의 제6 토큰 인덱스 [5]의 종료 문자 오프셋 인덱스 값("(18)")보다 작거나 같고, 제5 토큰 [4]의 종료 문자 오프셋 인덱스 값("(15)")보다 크므로, 제2 공식(84)을 사용하여 "5"로 결정된다. 따라서, 처리된 문자열(36)에서 타겟(56)의 시작 문자 오프셋 인덱스 값(56A) 및 종료 문자 오프셋 인덱스 값(56B) 각각에 대한 토큰 인덱스 값(57)은 각각 "4" 및 "5"이다.
마지막으로, 인덱스 값("4" 및 "5")을 제3 공식(86)에 대입하여, 오프셋 맵(48)의 제1 데이터 구조에 저장된 시작 문자 오프셋 인덱스 값을 이용한 원본 문자열(34)의 시작 토큰(59A')의 시작 문자 오프셋 인덱스 값(64A)과 오프셋 맵(48)의 제2 데이터 구조에 저장된 종료 문자 오프셋 인덱스 값을 이용한 종료 토큰(59B')의 종료 문자 오프셋 인덱스 값(64B)이 결정된다. 도시된 예에서, 제5 토큰 [4]의 시작 문자 오프셋 인덱스 값이 원본 문자열(34)에서 [4](5, 5)의 [5]이므로, 원본 문자열(34)의 시작 토큰의 시작 문자 오프셋 인덱스 값은 "5"이다. 반면, 제6 토큰[5]의 시작 문자 오프셋 인덱스 값이 "12"이고 그 길이가 원본 문자열(34)에서 "2"이며, 도 3에 설명된 대로 "12" + "2" - "1" = "13"이므로, 종료 토큰의 종료 문자 오프셋 인덱스 값은 "13"이다. 그 결과, 타겟 문자(74)의 시작 문자 오프셋 인덱스 값(64A)과 종료 문자 오프셋 인덱스 값(64B)이 (5, 13)으로 식별되고, 원본 문자열(34)에서 해당 타겟 문자 "여권.. 번호"(영어 번역)가 식별된다.
도 6은 원본 문자열(34)의 다른 예에 대해 오프셋 매핑을 갖는 워드브레이크 알고리즘을 수행할 때, 도 1의 컴퓨팅 시스템에 의해 조작되는 복수의 데이터 구조의 개략도를 도시한다. 이 예에서, 원본 문자열(34)은 일본어로 작성되어 있으며, 원본 문자열의 영어 번역은 "구매 내역은 로그인할 때만 곧 사용할 수 있으며, 나의 번호 카드 내에서 중앙에서 관리될 것이다"이다. 앞서 도 3에 설명된 것과 동일한 절차에 따라, 도 1의 오프셋 맵(48)을 사용하여 원본 문자열(34)의 타겟 문자 "번호 카드"(일본어 타겟 문자의 영어 번역)를 식별한다. 이 예에서는, "번호 카드"라는 용어가 관리자에 의해 민감 데이터 정의에 입력되어 있고, 처리된 문자열(36)의 타겟(56)의 대응하는 단어 토큰이 검색 프로그램(54)에 의해 식별되어 있다.
도 6에 도시된 예에서, 도 1의 오프셋 맵 생성기(46)는 [0](0, 2), [1](2, 2), [2] (4, 1)...[20] (42, l) 및 [21] (43, 2)의 제1 데이터 구조(50)를 원본 문자열(34)로부터 획득하고, 제1 공식(83)을 사용하여 처리된 문자열(36)로부터 [0](3), [1](6), [2](8) ... [20](63) 및 [21](66)의 제2 데이터 구조(52)를 획득하여 오프셋 맵(48)을 생성한다. 다음으로, 도 1의 검색 프로그램(54)은 처리된 문자열(36)에서 타겟(56)을 식별하고, 타겟 단어 토큰(58)이 결정된다. 타겟 단어 토큰(58)은 또한 처리된 문자열(36)에서 연관된 시작 문자 오프셋 인덱스 값(56A)과 종료 문자 오프셋 인덱스 값(56B)("42" 및 "52")을 갖는다. 다음으로, 처리된 문자열(36)에서 타겟(56)의 시작 토큰(59A)의 시작 문자 오프셋 인덱스 값(56A) 및 종료 토큰(59B)의 종료 문자 오프셋 인덱스 값(56B) 각각에 대한 토큰 인덱스 값(57)("14" 및 "16")이 제2 공식(84)을 사용하여 타겟 단어 토큰(58)으로부터 획득된다. 마지막으로, 인덱스 값("14" 및 "16")을 제3 공식(86)에 대입함으로써, 원본 문자열(34)의 시작 토큰(28)의 시작 문자 오프셋 인덱스 값과 종료 토큰("36")의 종료 문자 오프셋 인덱스 값이 얻어진다. 그 결과, (28, 36)의 시작 문자 오프셋 인덱스 값(56A) 및 종료 문자 오프셋 인덱스 값(56B)과 원본 문자열(34)의 "숫자 카드 내"에 대응하는 타겟 문자(영어 번역문)가 식별된다. 도 7은 본 개시의 일 실시예에 따른 컴퓨터화된 방법(300)의 순서도를 도시한다. 단계(302)에서, 컴퓨터화된 방법(300)은 복수의 문자로 형성된 원본 문자열을 저장하는 단계를 포함할 수 있다. 단계(304)에서, 방법은 원본 문자열에 대해 워드브레이크 알고리즘을 수행하는 것을 더 포함할 수 있다. 단계(306)에서, 방법(300)은 공백으로 구분된 복수의 단어 토큰을 포함하는 처리된 문자열을 생성하기 위해 원본 문자열을 토큰화하는 것을 더 포함할 수 있다. 단계(306)에서, 방법은 2개의 병렬 워크플로우로 분기된다. 병렬 워크플로우의 첫 번째 분기 이후, 단계(308)에서, 방법(300)은 처리된 문자열의 단어 토큰 내의 위치와 원본 문자열의 대응하는 위치 사이에 오프셋 맵(48)을 생성하는 것을 더 포함할 수 있다. 단계(310)에서, 방법은 원본 문자열 및 처리된 문자열로부터의 워드브레이크 알고리즘 메타데이터를 데이터 구조에 저장하는 것을 포함할 수 있다. 메타데이터는 원본 문자열 및 처리된 문자열에서 타겟의 위치 및 길이를 나타낼 수 있다. 예를 들어, 312에 도시된 바와 같이, 오프셋 맵은 제1 데이터 구조를 포함할 수 있고, 방법은 워드브레이크 알고리즘 동안 원본 문자열에서 검출되는 각 토큰 단어의, 원본 문자열 내에서의 시작 문자 오프셋 인덱스 값 및 문자 길이를 제1 데이터 구조에 저장하는 것을 포함할 수 있다. 또한, 또는 대안적으로, 314에 도시된 바와 같이, 오프셋 맵은 제2 데이터 구조를 포함할 수 있고, 방법은 처리된 문자열에서 각 토큰의 종료 문자 오프셋 인덱스 값을 저장하는 것을 포함할 수 있다. 병렬 워크플로우의 제2 분기로 돌아가서, 단계(340)에서, 방법은 검색 프로그램을 통해 처리된 문자열의 일부를 타겟으로 분류하는 것을 더 포함할 수 있다. 단계(342)에서, 방법(300)은 타겟 단어 토큰 및 연관된 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값을 식별하는 것을 더 포함할 수 있다.
단계(318)에서, 방법(300)은 오프셋 맵과 타겟 단어 토큰 및 연관된 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값을 사용하여 원본 문자열에서 타겟에 대응하는 타겟 문자를 식별하는 것을 더 포함할 수 있다. 타겟 문자를 식별하기 위해, 320에서, 방법은 처리된 문자열에서 타겟의 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값 각각에 대한 토큰 인덱스 값을 결정하는 것을 포함할 수 있다. 322에서, 방법은 오프셋 맵의 제1 데이터 구조에 저장된 시작 문자 오프셋 인덱스 값을 사용하여 원본 문자열에서 시작 토큰의 시작 문자 오프셋 인덱스 값을 결정하는 것을 더 포함할 수 있다. 324에서, 방법은 오프셋 맵의 제 2 데이터 구조에 저장된 종료 문자 오프셋 인덱스 값을 사용하여 종료 토큰의 종료 문자 오프셋 인덱스 값을 결정하는 것을 더 포함할 수 있다. 타겟 문자가 식별되면, 단계(326)에서, 방법(300)은 타겟 단어를 강조표시와 함께 디스플레이하는 것, 타겟 단어를 난독화하는 것 및/또는 타겟 단어를 추출하는 것을 포함하여, 원본 문자열에서의 타겟 문자에 대해 사전결정된 액션(328)을 수행하는 것을 더 포함할 수 있다.
전술한 시스템 및 방법은, 최적화된 검색을 위해 토큰화된 처리된 문자열에서 민감한 데이터 정의와 일치하는 타겟 문자를 검색하고, 처리된 문자열이 생성된 원본 문자열에서 대응하는 문자를 식별하기 위해, 멀티바이트 인코딩된 언어의 문자열을 포함하는 데이터 세트와 함께 사용될 수 있음을 이해할 수 있을 것이다. 이러한 방식으로 식별된 대응하는 문자를 사용하면, 원본 문자열의 대응하는 문자에 대해 적절한 조치가 수행될 수 있다.
일부 실시예에서, 본 명세서에 기술된 방법 및 프로세스는 하나 이상의 컴퓨팅 디바이스의 컴퓨팅 시스템에 적용될 수 있다. 특히, 그러한 방법 및 프로세스는 컴퓨터 애플리케이션 프로그램 또는 서비스, 애플리케이션-프로그래밍 인터페이스(API), 라이브러리 및/또는 다른 컴퓨터 프로그램 제품으로 구현될 수 있다.
도 8은 전술된 방법 및 프로세스 중 하나 이상을 실행할 수 있는 컴퓨팅 시스템(400)의 비제한적 실시예를 개략적으로 도시한다. 컴퓨팅 시스템(400)은 단순화된 형태로 도시되어 있다. 컴퓨팅 시스템(400)은 전술하고 도 1에 도시된 컴퓨터 디바이스(12) 및 도 2에 도시된 다양한 컴퓨팅 디바이스를 구현할 수 있다. 컴퓨팅 시스템(400)은 하나 이상의 개인용 컴퓨터, 서버 컴퓨터, 태블릿 컴퓨터, 홈 엔터테인먼트 컴퓨터, 네트워크 컴퓨팅 디바이스, 게임 디바이스, 모바일 컴퓨팅 디바이스, 이동 통신 디바이스(예컨대, 스마트폰) 및/또는 다른 컴퓨팅 디바이스, 및 스마트 손목 시계 및 헤드 마운트 증강 현실 디바이스와 같은 웨어러블 컴퓨팅 디바이스의 형태를 취할 수 있다.
컴퓨팅 시스템(400)은 로직 프로세서(402), 휘발성 메모리(404) 및 비휘발성 저장 디바이스(406)를 포함한다. 컴퓨팅 시스템(400)은 선택적으로 디스플레이 서브시스템(408), 입력 서브시스템(410), 통신 서브시스템(412) 및/또는 도 8에 도시되지 않은 다른 구성요소를 포함할 수 있다. 로직 프로세서(402)는 명령어를 실행하도록 구성된 하나 이상의 물리적 디바이스를 포함한다. 예를 들어, 로직 프로세서는 하나 이상의 애플리케이션, 프로그램, 루틴, 라이브러리, 객체, 구성요소, 데이터 구조 또는 다른 논리 구조의 일부인 명령어를 실행하도록 구성될 수 있다. 이러한 명령어는 작업을 수행하거나, 데이터 유형을 구현하거나, 하나 이상의 구성요소의 상태를 변환하거나, 기술적 효과를 달성하거나, 원하는 결과에 도달하기 위해 구현될 수 있다.
로직 프로세서는 소프트웨어 명령어를 실행하도록 구성된 하나 이상의 물리적 프로세서(하드웨어)를 포함할 수 있다. 추가적으로 또는 대안적으로, 로직 프로세서는 하드웨어 구현 로직 또는 펌웨어 명령어를 실행하도록 구성된 하나 이상의 하드웨어 로직 회로 또는 펌웨어 디바이스를 포함할 수 있다. 로직 프로세서(402)의 프로세서는 단일 코어 또는 멀티 코어일 수 있으며, 여기서 실행되는 명령어는 순차, 병렬 및/또는 분산 처리를 위해 구성될 수 있다. 선택적으로, 로직 프로세서의 개별 구성요소들은 원격으로 위치되고 및/또는 조정된 처리를 위해 구성될 수 있는 둘 이상의 개별 디바이스 사이에서 분산될 수 있다. 로직 프로세서의 양태들은 가상화되고, 클라우드 컴퓨팅 구성으로 구성된 원격 액세스 가능한 네트워크 컴퓨팅 디바이스에 의해 실행될 수 있다. 이러한 경우, 이해되는 바와 같이, 이러한 가상화된 양태들은 다양한 다른 머신의 다른 물리적 로직 프로세서에서 실행된다.
비휘발성 저장 디바이스(406)는 본 명세서에 설명된 방법 및 프로세스를 구현하기 위해 로직 프로세서에 의해 실행 가능한 명령어를 보유하도록 구성된 하나 이상의 물리적 디바이스를 포함한다. 그러한 방법 및 프로세스가 구현될 때, 비휘발성 저장 디바이스(406)의 상태는 예컨대 다른 데이터를 보유하기 위해 변환될 수 있다.
비휘발성 저장 디바이스(406)는 이동식 및/또는 내장형인 물리적 디바이스를 포함할 수 있다. 비휘발성 저장 디바이스(406)는 광학 메모리(예컨대, CD, DVD, HD-DVD, 블루레이 디스크 등), 반도체 메모리(예컨대, ROM, EPROM, EEPROM, 플래시 메모리 등), 및/또는 자기 메모리(예컨대, 하드 디스크 드라이브, 플로피 디스크 드라이브, 테이프 드라이브, MRAM 등), 또는 다른 대용량 저장 디바이스 기술을 포함할 수 있다. 비휘발성 저장 디바이스(406)는 비휘발성, 동적, 정적, 판독/기록, 판독 전용, 순차 액세스, 위치 어드레서블, 파일 어드레서블, 및/또는 콘텐츠 어드레서블 디바이스를 포함할 수 있다. 비휘발성 저장 디바이스(406)는 비휘발성 저장 디바이스(406)에 전원이 차단된 경우에도 명령어를 보유하도록 구성되는 것이 이해될 것이다. 휘발성 메모리(404)는 랜덤 액세스 메모리를 포함하는 물리적 디바이스를 포함할 수 있다. 휘발성 메모리(404)는 일반적으로 소프트웨어 명령어를 처리하는 동안 정보를 일시적으로 저장하기 위해 로직 프로세서(402)에 의해 이용된다. 휘발성 메모리(404)에 대한 전원이 차단될 때 휘발성 메모리(404)는 일반적으로 명령어를 계속 저장하지 않는다는 것을 이해할 수 있을 것이다.
로직 프로세서(402), 휘발성 메모리(404), 및 비휘발성 저장 디바이스(406)의 양태는 하나 이상의 하드웨어-로직 구성요소에 함께 통합될 수 있다. 이러한 하드웨어-로직 구성요소는, 예를 들어, 필드 프로그래머블 게이트 어레이(field-programmable gate arrays: FPGA), 프로그램 및 애플리케이션 특정 집적 회로(program- and application-specific integrated circuits: PASIC/ASIC), 프로그램 및 애플리케이션 특정 표준 제품(program- and application-specific standard products: PSSP/ASSP), 시스템-온-칩(system-on-a-chip: SOC), 및 복합 프로그래머블 로직 디바이스(complex programmable logic devices: CPLD)를 포함할 수 있다.
"모듈", "프로그램", 및 "엔진"이라는 용어는 휘발성 메모리의 일부를 사용하여 특정 기능을 수행하기 위해 프로세서에 의해 일반적으로 소프트웨어로 구현되는 컴퓨팅 시스템(400)의 양태를 설명하는 데 사용될 수 있으며, 이러한 기능은 기능을 수행하도록 프로세서를 특별히 구성하는 변형 처리를 포함한다. 따라서, 모듈, 프로그램 또는 엔진은 휘발성 메모리(404)의 일부를 사용하여 비휘발성 저장 디바이스(406)에 의해 보유되는 명령어를 실행하는 로직 프로세서(402)를 통해 인스턴스화될 수 있다. 동일한 애플리케이션, 서비스, 코드 블록, 객체, 라이브러리, 루틴, API, 함수 등으로부터 상이한 모듈, 프로그램, 및/또는 엔진이 인스턴스화될 수 있다는 것이 이해될 것이다. 마찬가지로, 상이한 애플리케이션, 서비스, 코드 블록, 객체, 루틴, API, 함수 등에 의해 동일한 모듈, 프로그램 및/또는 엔진이 인스턴스화될 수 있다. "모듈", "프로그램" 및 "엔진"이라는 용어는 개별적인 실행 파일, 데이터 파일, 라이브러리, 드라이버, 스크립트, 데이터베이스 레코드 등 또는 이들의 그룹을 포함할 수 있다.
디스플레이 서브시스템(408)은 포함될 경우 비휘발성 저장 디바이스(406)에 의해 보유된 데이터의 시각적 표현을 제공하는 데 사용될 수 있다. 이러한 시각적 표현은 그래픽 사용자 인터페이스(graphical user interface: GUI)의 형태를 취할 수 있다. 본 명세서에 설명된 방법 및 프로세스는 비휘발성 저장 디바이스에 의해 보유된 데이터를 변경하고, 따라서 비휘발성 저장 디바이스의 상태를 변환시키므로, 디스플레이 서브시스템(408)의 상태도 마찬가지로 변환되어 기본 데이터의 변경을 시각적으로 나타낼 수 있다. 디스플레이 서브시스템(408)은 사실상 임의의 유형의 기술을 활용하는 하나 이상의 디스플레이 디바이스를 포함할 수 있다. 이러한 디스플레이 디바이스는 공유 인클로저에서 로직 프로세서(402), 휘발성 메모리(404), 및/또는 비휘발성 저장 디바이스(406)과 결합될 수도 있고, 또는 이러한 디스플레이 디바이스는 주변 디스플레이 디바이스일 수도 있다.
입력 서브시스템(410)은 포함될 경우 키보드, 마우스, 터치 스크린, 또는 게임 제어기와 같은 하나 이상의 사용자 입력 디바이스를 포함하거나 그와 인터페이스할 수 있다. 일부 실시예에서, 입력 서브시스템은 선택된 자연 사용자 입력(natural user input: NUI) 구성요소를 포함하거나 그와 인터페이스할 수 있다. 이러한 구성요소는 통합되거나 주변장치일 수 있으며, 입력 작업의 변환 및/또는 처리는 온보드 또는 오프보드에서 처리될 수 있다. 예시적 NUI 구성요소는, 스피치 및/또는 음성 인식을 위한 마이크; 머신 비전 및/또는 제스처 인식을 위한 적외선, 컬러, 스테레오스코픽 및/또는 심도 카메라; 움직임 검출 및/또는 의도 인식을 위한 헤드 트래커, 시선 트래커, 가속도계 및/또는 자이로스코프; 뇌 활동을 평가하기 위한 전기장 감지 구성요소; 및/또는 임의의 다른 적절한 센서를 포함할 수 있다.
통신 서브시스템(412)은 포함될 경우 본원에 설명된 다양한 컴퓨팅 디바이스들을 서로 및 다른 디바이스들과 통신적으로 결합하도록 구성될 수 있다. 통신 서브시스템(412)은 하나 이상의 상이한 통신 프로토콜과 호환되는 유선 및/또는 무선 통신 디바이스를 포함할 수 있다. 비제한적인 예로서, 통신 서브시스템은 무선 전화 네트워크, 또는 유선 또는 무선 로컬 또는 광역 네트워크, 예컨대 Wi-Fi 연결을 통한 HDMI를 통한 통신을 위해 구성될 수 있다. 일부 실시예에서, 통신 서브시스템은 컴퓨팅 시스템(400)이 인터넷과 같은 네트워크를 통해 다른 디바이스로 및/또는 그로부터 메시지를 송신 및/또는 수신하도록 허용할 수 있다.
다음 단락에서는 본 개시의 여러 양태에 대해 논의한다. 본 개시의 일 양태에 따르면, 컴퓨터 시스템이 제공된다. 이 컴퓨터 시스템은 명령어를 저장하는 대용량 저장 디바이스에 결합된 프로세서를 포함할 수 있으며, 명령어는 프로세서에 의해 실행될 때, 프로세서로 하여금 복수의 문자로 형성된 원본 문자열을 저장하게 한다. 프로세서는 원본 문자열에 대해 워드브레이크 알고리즘을 수행하도록 추가로 구성될 수 있다. 프로세서는 공백으로 구분된 복수의 단어 토큰을 포함하는 처리된 문자열을 생성하기 위해 원본 문자열을 토큰화하도록 추가로 구성될 수 있다. 프로세서는 처리된 문자열의 단어 토큰 내의 위치와 원본 문자열의 대응하는 위치 사이에 오프셋 맵을 생성하도록 추가로 구성될 수 있다. 프로세서는 처리된 문자열의 일부를 타겟으로 분류하도록 추가로 구성될 수 있다. 프로세서는 오프셋 맵을 사용하여 타겟에 대응하는 원본 문자열에서의 타겟 문자를 식별하도록 추가로 구성될 수 있다. 프로세서는 원본 문자열에서의 타겟 문자에 대해 사전결정된 액션을 수행하도록 더 구성될 수 있다.
이 양태에 따르면, 사전결정된 액션을 수행하기 위해, 프로세서는 타겟 문자를 강조표시와 함께 디스플레이하거나, 타겟 문자를 난독화하거나, 및/또는 타겟 문자를 추출하도록 더 구성될 수 있다.
이 양태에 따르면, 원본 문자열에서의 타겟 문자를 식별하기 위해, 프로세서는 타겟 문자의 시작 문자 오프셋 인덱스 값 및 문자 길이를 식별하고, 및/또는 타겟 문자의 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값을 식별하도록 추가로 구성될 수 있다.
이러한 양태에 따르면, 원본 문자열에서의 타겟 문자를 식별하기 위해, 프로세서는 처리된 문자열에서 타겟의 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값을 결정하고, 처리된 문자열에서 타겟의 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값 각각에 대한 토큰 인덱스 값을 결정하고, 오프셋 맵의 제1 데이터 구조에 저장된 시작 문자 오프셋 인덱스 값을 이용하여 원본 문자열의 시작 토큰의 시작 문자 오프셋 인덱스 값을 결정하고, 오프셋 맵의 제2 데이터 구조에 저장된 종료 문자 오프셋 인덱스 값을 이용하여 종료 토큰의 종료 문자 오프셋 인덱스 값을 결정하도록 추가로 구성될 수 있다.
이 양태에 따르면, 타겟은 사전결정된 민감한 정보 데이터 타입의 민감한 정보일 수 있다.
이 양태에 따르면, 원본 문자열은 일본어, 중국어, 한국어 또는 태국어 문자를 포함할 수 있다.
이 양태에 따르면, 원본 문자열은 전자 문서 또는 전자 메시지에서 추출될 수 있다.
이 양태에 따르면, 원본 문자열은 워드브레이크 알고리즘을 수행한 후 처리된 문자열에서 생략되는 문자를 포함할 수 있다.
이러한 양태에 따르면, 오프셋 맵은 워드브레이크 알고리즘 동안 원본 문자열에서 검출된 각 토큰 단어의, 원본 문자열 내의 시작 문자 오프셋 인덱스 값 및 문자 길이를 저장하는 제1 데이터 구조와, 처리된 문자열에서 각 토큰의 종료 문자 오프셋 인덱스 값을 저장하는 제 2 데이터 구조를 포함할 수 있되, 여기서, 제1 및 제2 데이터 구조 각각은 동일한 개수의 요소를 갖는다.
본 개시의 다른 양태에 따르면, 컴퓨터화된 방법이 제공된다. 컴퓨터화된 방법은 복수의 문자로 구성된 원본 문자열을 저장하는 단계를 포함할 수 있다. 컴퓨터화된 방법은 원본 문자열에 대해 워드브레이크 알고리즘을 수행하고, 공백으로 구분된 복수의 단어 토큰을 포함하는 처리된 문자열을 생성하기 위해 원본 문자열을 토큰화하는 것을 단계를 포함할 수 있다. 컴퓨터화된 방법은 처리된 문자열의 단어 토큰 내의 위치와 원본 문자열의 대응하는 위치 사이의 오프셋 맵을 생성하는 단계를 더 포함할 수 있다. 컴퓨터화된 방법은 처리된 문자열의 일부를 타겟으로 분류하는 단계를 더 포함할 수 있다. 컴퓨터화된 방법은 오프셋 맵을 사용하여 타겟에 대응하는 원본 문자열에서의 타겟 문자를 식별하는 단계를 더 포함할 수 있다. 컴퓨터화된 방법은 원본 문자열에서의 타겟 문자에 대해 사전결정된 액션을 수행하는 단계를 더 포함할 수 있다.
이 양태에 따르면, 사전결정된 액션을 수행하는 단계는 타겟 문자를 강조표시와 함께 디스플레이하는 것, 타겟 문자를 난독화하는 것, 및/또는 타겟 문자를 추출하는 것 중 하나 이상을 포함할 수 있다.
이 양태에 따르면, 원본 문자열에서의 타겟 문자를 식별하는 단계는 타겟 문자의 시작 문자 오프셋 인덱스 값 및 문자 길이를 식별하는 것, 및/또는 타겟 문자의 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값을 식별하는 것 중 하나 이상을 포함할 수 있다.
이러한 양태에 따르면, 원본 문자열에서의 타겟 문자를 식별하는 단계는 적어도 부분적으로, 처리된 문자열에서 타겟의 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값을 결정하고, 처리된 문자열에서 타겟의 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값 각각에 대한 토큰 인덱스 값을 결정하고, 오프셋 맵의 제1 데이터 구조에 저장된 시작 문자 오프셋 인덱스 값을 이용하여 원본 문자열의 시작 토큰의 시작 문자 오프셋 인덱스 값을 결정하며, 오프셋 맵의 제2 데이터 구조에 저장된 종료 문자 오프셋 인덱스 값을 이용하여 종료 토큰의 종료 문자 오프셋 인덱스 값을 결정함으로써 달성될 수 있다.
이 양태에 따르면, 타겟은 사전결된 민감한 정보 데이터 타입의 민감한 정보일 수 있다.
이 양태에 따르면, 원본 문자열은 일본어, 중국어, 한국어 또는 태국어 문자를 포함할 수 있다.
이 양태에 따르면, 원본 문자열은 전자 문서 또는 전자 메시지에서 추출될 수 있다.
이 양태에 따르면, 원본 문자열은 워드브레이크 알고리즘을 수행한 후 처리된 문자열에서 생략된 문자를 포함할 수 있다.
이러한 양태에 따르면, 오프셋 맵은 워드브레이크 알고리즘 동안 원본 문자열에서 검출된 각 토큰 단어의, 원본 문자열에서의 시작 문자 오프셋 인덱스 값 및 문자 길이를 저장하는 제1 데이터 구조와, 처리된 문자열에서 각 토큰의 종료 문자 오프셋 인덱스 값을 저장하는 제 2 데이터 구조를 포함할 수 있되, 여기서, 제1 및 제2 데이터 구조 각각은 동일한 개수의 요소를 갖는다.
이러한 양상에 따르면, 처리된 문자열에서 각 토큰의 종료 문자 오프셋 인덱스 값은 처리된 문자열에서 각 토큰의 이전 종료 문자 오프셋 인덱스 값 및 원본 문자열에서 각 토큰의 길이를 사용하여 계산될 수 있다.
본 개시의 다른 양태에 따르면, 단어를 분류하도록 구성된 컴퓨터 시스템이 제공된다. 컴퓨터 시스템은 민감한 데이터 정의 및 하나 이상의 정책을 입력으로 수신하고, 민감한 데이터 정의에 따라 민감한 데이터에 대해 복수의 원본 문자열을 포함하는 데이터 세트를 검색하도록 구성된 검색 프로그램을 실행하도록 구성된 서버 컴퓨팅 디바이스를 포함할 수 있다. 서버 컴퓨팅 디바이스는 복수의 원본 문자열 중에서 선택된 원본 문자열에 대해 워드브레이크 알고리즘을 수행하도록 더 구성될 수 있다. 서버 컴퓨팅 디바이스는 선택된 원본 문자열을 토큰화하여 공백으로 구분된 복수의 단어 토큰을 포함하는 처리된 문자열을 생성하도록 더 구성될 수 있다. 서버 컴퓨팅 디바이스는 처리된 문자열의 단어 토큰 내의 위치와 원본 문자열의 대응하는 위치 사이의 오프셋 맵을 생성하도록 더 구성될 수 있다. 서버 컴퓨팅 디바이스는 처리된 문자열의 일부를 타겟으로 분류하도록 더 구성될 수 있다. 서버 컴퓨팅 디바이스는 오프셋 맵을 사용하여 원본 문자열에서 타겟에 대응하는 타겟 문자를 식별하도록 더 구성될 수 있다. 서버 컴퓨팅 디바이스는 원본 문자열에서의 타겟 문자에 대해 사전결정된 액션을 수행하도록 더 구성될 수 있다.
본 명세서에 설명된 구성 및/또는 접근 방식은 본질적으로 예시적인 것이며, 또한 수많은 변형이 가능하기 때문에 이러한 특정 실시예 또는 예는 제한적 의미로 간주되어서는 안 된다는 것이 이해될 것이다. 본 명세서에 설명된 특정 루틴 또는 방법은 임의의 수의 처리 전략 중 하나 이상을 나타낼 수 있다. 따라서, 도시되고/되거나 설명된 다양한 행위는 도시되고/되거나 설명된 순서로, 또는 다른 순서로, 또는 병렬로 수행될 수 있고, 생략될 수도 있다. 마찬가지로, 위에서 설명된 프로세스들의 순서는 변경될 수 있다.
본 개시의 주제는 본원에 개시된 다양한 프로세스, 시스템 및 구성, 기타 특징, 기능, 행위 및/또는 속성의 모든 신규하고 명백하지 않은 조합 및 하위 조합뿐만 아니라, 이에 대한 임의의 및 모든 균등물을 포함한다.

Claims (15)

  1. 컴퓨터 시스템으로서,
    명령어를 저장하는 대용량 저장 디바이스에 결합된 프로세서를 포함하되,
    상기 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금,
    복수의 문자로 구성된 원본 문자열을 저장하고,
    상기 원본 문자열에 대해 워드브레이크 알고리즘을 수행하고,
    상기 원본 문자열을 토큰화하여, 공백으로 구분된 복수의 단어 토큰을 포함하는 처리된 문자열을 생성하고,
    상기 처리된 문자열의 상기 단어 토큰 내의 위치와 상기 원본 문자열의 대응하는 위치 사이의 오프셋 맵을 생성하고,
    상기 처리된 문자열의 일부를 타겟으로 분류하고,
    상기 오프셋 맵을 사용하여 상기 타겟에 해당하는 상기 원본 문자열에서의 타겟 문자를 식별하며,
    상기 원본 문자열에서의 상기 타겟 문자에 대해 사전결정된 액션을 수행하도록 구성된,
    컴퓨터 시스템.
  2. 제1항에 있어서,
    상기 사전결정된 액션을 수행하기 위해, 상기 프로세서는
    상기 타겟 문자를 강조표시와 함께 디스플레이하고,
    상기 타겟 문자를 난독화하고, 및/또는
    상기 타겟 문자를 추출하도록 더 구성된,
    컴퓨터 시스템.
  3. 제1항에 있어서,
    상기 원본 문자열에서의 상기 타겟 문자를 식별하기 위해, 상기 프로세서는
    상기 타겟 문자의 시작 문자 오프셋 인덱스 값 및 문자 길이를 식별하고, 및/또는
    상기 타겟 문자의 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값을 식별하도록 더 구성된,
    컴퓨터 시스템.
  4. 제1항에 있어서,
    상기 원본 문자열에서의 타겟 문자를 식별하기 위해, 상기 프로세서는,
    상기 처리된 문자열에서 상기 타겟의 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값을 결정하고,
    상기 처리된 문자열에서 상기 타겟의 상기 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값 각각에 대한 토큰 인덱스 값을 결정하고,
    상기 오프셋 맵의 상기 제1 데이터 구조에 저장된 상기 시작 문자 오프셋 인덱스 값을 이용하여 상기 원본 문자열의 상기 시작 토큰의 시작 문자 오프셋 인덱스 값을 결정하고,
    상기 오프셋 맵의 상기 제2 데이터 구조에 저장된 상기 종료 문자 오프셋 인덱스 값을 이용하여 종료 토큰의 종료 문자 오프셋 인덱스 값을 결정하도록 구성된,
    컴퓨터 시스템.
  5. 제1항에 있어서,
    상기 타겟은 사전결정된 민감한 정보 데이터 타입의 민감한 정보인,
    컴퓨터 시스템.
  6. 제1항에 있어서,
    상기 원본 문자열은 일본어, 중국어, 한국어 또는 태국어 문자를 포함하는,
    컴퓨터 시스템.
  7. 제1항에 있어서,
    상기 원본 문자열은 전자 문서 또는 전자 메시지에서 추출되는,
    컴퓨터 시스템.
  8. 제1항에 있어서,
    상기 원본 문자열은 상기 워드브레이크 알고리즘을 수행한 후 상기 처리된 문자열에서 생략되는 문자를 포함하는,
    컴퓨터 시스템.
  9. 제1항에 있어서,
    상기 오프셋 맵은 상기 워드브레이크 알고리즘 동안 상기 원본 문자열에서 검출된 각 토큰 단어의, 상기 원본 문자열에서의 시작 문자 오프셋 인덱스 값 및 문자 길이를 저장하는 제1 데이터 구조와,
    상기 처리된 문자열에서 각 토큰의 종료 문자 오프셋 인덱스 값을 저장하는 제2 데이터 구조를 포함하되,
    상기 제1 및 제2 데이터 구조 각각은 동일한 개수의 요소를 갖는,
    컴퓨터 시스템.
  10. 컴퓨터화된 방법으로서,
    복수의 문자로 구성된 원본 문자열을 저장하는 단계와,
    상기 원본 문자열에 대해 워드브레이크 알고리즘을 수행하는 단계와,
    공백으로 구분된 복수의 단어 토큰을 포함하는 처리된 문자열을 생성하기 위해 상기 원본 문자열을 토큰화하는 단계와,
    상기 처리된 문자열의 상기 단어 토큰 내의 위치와 상기 원본 문자열의 대응하는 위치 사이의 오프셋 맵을 생성하는 단계와,
    상기 처리된 문자열의 일부를 타겟으로 분류하는 단계와,
    상기 오프셋 맵을 사용하여 상기 타겟에 대응하는 상기 원본 문자열에서의 타겟 문자를 식별하는 단계와,
    상기 원본 문자열에서의 상기 타겟 문자에 대해 사전결정된 액션을 수행하는 단계를 포함하는,
    컴퓨터화된 방법.
  11. 제10항에 있어서,
    사전결정된 액션을 수행하는 단계는
    상기 타겟 문자를 강조표시와 함께 디스플레이하는 것,
    상기 타겟 문자를 난독화하는 것, 및/또는
    상기 타겟 문자를 추출하는 것 중 하나 이상을 포함하는,
    컴퓨터화된 방법.
  12. 제10항에 있어서,
    상기 원본 문자열에서의 타겟 문자를 식별하는 단계는,
    상기 타겟 문자의 시작 문자 오프셋 인덱스 값 및 문자 길이를 식별하는 것, 및/또는
    상기 타겟 문자의 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값을 식별하는 것 중 하나 이상을 포함하는,
    컴퓨터화된 방법.
  13. 제10항에 있어서,
    상기 원본 문자열에서의 타겟 문자를 식별하는 단계는 적어도 부분적으로,
    상기 처리된 문자열에서 상기 타겟의 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값을 결정하고,
    상기 처리된 문자열에서 상기 타겟의 상기 시작 문자 오프셋 인덱스 값 및 종료 문자 오프셋 인덱스 값 각각에 대한 토큰 인덱스 값을 결정하고,
    상기 오프셋 맵의 상기 제1 데이터 구조에 저장된 상기 시작 문자 오프셋 인덱스 값을 이용하여 상기 원본 문자열의 상기 시작 토큰의 시작 문자 오프셋 인덱스 값을 결정하고,
    상기 오프셋 맵의 상기 제2 데이터 구조에 저장된 상기 종료 문자 오프셋 인덱스 값을 이용하여 종료 토큰의 종료 문자 오프셋 인덱스 값을 결정함으로써 달성되는,
    컴퓨터화된 방법.
  14. 제10항에 있어서,
    상기 원본 문자열은 전자 문서 또는 전자 메시지에서 추출되는,
    컴퓨터화된 방법.
  15. 제10항에 있어서,
    상기 오프셋 맵은 상기 워드브레이크 알고리즘 동안 상기 원본 문자열에서 검출된 각 토큰 단어의, 상기 원본 문자열에서의 시작 문자 오프셋 인덱스 값 및 문자 길이를 저장하는 제1 데이터 구조와,
    상기 처리된 문자열에서 각 토큰의 종료 문자 오프셋 인덱스 값을 저장하는 제2 데이터 구조를 포함하되,
    상기 제1 및 제2 데이터 구조 각각은 동일한 개수의 요소를 갖는,
    컴퓨터화된 방법.
KR1020237040866A 2021-05-28 2022-05-05 오프셋 매핑을 사용한 워드브레이크 알고리즘 KR20240011718A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN202141023933 2021-05-28
IN202141023933 2021-05-28
US17/444,347 US11899698B2 (en) 2021-05-28 2021-08-03 Wordbreak algorithm with offset mapping
US17/444,347 2021-08-03
PCT/IB2022/000257 WO2022248933A1 (en) 2021-05-28 2022-05-05 Wordbreak algorithm with offset mapping

Publications (1)

Publication Number Publication Date
KR20240011718A true KR20240011718A (ko) 2024-01-26

Family

ID=82846495

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237040866A KR20240011718A (ko) 2021-05-28 2022-05-05 오프셋 매핑을 사용한 워드브레이크 알고리즘

Country Status (4)

Country Link
EP (1) EP4348490A1 (ko)
JP (1) JP2024521833A (ko)
KR (1) KR20240011718A (ko)
WO (1) WO2022248933A1 (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963893A (en) * 1996-06-28 1999-10-05 Microsoft Corporation Identification of words in Japanese text by a computer system
US20200334381A1 (en) * 2019-04-16 2020-10-22 3M Innovative Properties Company Systems and methods for natural pseudonymization of text

Also Published As

Publication number Publication date
EP4348490A1 (en) 2024-04-10
JP2024521833A (ja) 2024-06-04
WO2022248933A1 (en) 2022-12-01

Similar Documents

Publication Publication Date Title
US10552462B1 (en) Systems and methods for tokenizing user-annotated names
US9904673B2 (en) Conversation advisor
US10303689B2 (en) Answering natural language table queries through semantic table representation
US9787722B2 (en) Integrated development environment (IDE) for network security configuration files
US10528675B2 (en) Context-aware translation memory to facilitate more accurate translation
US8875302B2 (en) Classification of an electronic document
CN108090351B (zh) 用于处理请求消息的方法和装置
US10606957B1 (en) Method and system for translating natural language policy to logical access control policy
US10354078B2 (en) Multi-focused fine-grained security framework
US10108661B2 (en) Using synthetic events to identify complex relation lookups
US9971809B1 (en) Systems and methods for searching unstructured documents for structured data
US11062129B2 (en) Systems and methods for enabling search services to highlight documents
US20180113922A1 (en) Example management for string transformation
US11030393B2 (en) Estimation of document structure
CA2957674A1 (en) Testing insecure computing environments using random data sets generated from characterizations of real data sets
CN106030527B (zh) 将可供下载的应用程序通知用户的系统和方法
US10229156B2 (en) Using priority scores for iterative precision reduction in structured lookups for questions
KR20240011718A (ko) 오프셋 매핑을 사용한 워드브레이크 알고리즘
US11899698B2 (en) Wordbreak algorithm with offset mapping
US20150006498A1 (en) Dynamic search system
CN117396878A (zh) 带有偏移映射的分词算法
US11132400B2 (en) Data classification using probabilistic data structures