KR20150070171A - 스트링 변환의 귀납적 합성을 위한 랭킹 기법 - Google Patents

스트링 변환의 귀납적 합성을 위한 랭킹 기법 Download PDF

Info

Publication number
KR20150070171A
KR20150070171A KR1020157009902A KR20157009902A KR20150070171A KR 20150070171 A KR20150070171 A KR 20150070171A KR 1020157009902 A KR1020157009902 A KR 1020157009902A KR 20157009902 A KR20157009902 A KR 20157009902A KR 20150070171 A KR20150070171 A KR 20150070171A
Authority
KR
South Korea
Prior art keywords
representation
substring
string
input
output
Prior art date
Application number
KR1020157009902A
Other languages
English (en)
Other versions
KR102129640B1 (ko
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
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20150070171A publication Critical patent/KR20150070171A/ko
Application granted granted Critical
Publication of KR102129640B1 publication Critical patent/KR102129640B1/ko

Links

Images

Classifications

    • G06F17/2264
    • 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/151Transformation

Abstract

스트링 변환의 도메인에 대해 귀납적 프로그램 합성에서 사용할 원하는 랭킹 함수를 학습하도록 통계적 및 기계적 학습 기법을 사용하는 랭킹 기법의 실시예가 제공된다. 이것은 일반적으로 복수의 입력-출력 예를 각각 포함하는 주어진 태스크의 트레이닝 세트로부터 포지티브 및 네거티브 예의 트레이닝 데이터세트를 자동으로 생성하는 것을 포함한다. 트레이닝 데이터세트로부터, 랭킹 함수는 도메인 특정의 언어로 된 프로그램의 표현에 가능성 척도를 할당하는 랭킹 함수가 학습된다. 이 랭킹 함수는 새로운 태스크에 대해 매우 적은 수의 입력-출력 예로부터 학습 프로그램의 가능성을 연산하는데 사용된다.

Description

스트링 변환의 귀납적 합성을 위한 랭킹 기법{RANKING FOR INDUCTIVE SYNTHESIS OF STRING TRANSFORMATIONS}
전세계의 수백만의 사람들은 데이터를 저장하고 조작하기 위해 스프레드시트 등을 사용한다. 이들 데이터 조작 시나리오는 종종 원하는 출력을 생성하기 위해 하나의 포맷으로부터 다른 포맷으로 다량의 입력 정보를 변환하는 것을 포함한다. 통상적으로, 이들 태스크는 수동으로 성취되거나, 또는 엔드 유저에 의해 또는 엔드 유저를 위한 프로그래머에 의해 생성되는, 몇 번의, 종종 단 한번의 컴퓨터 프로그램을 사용하여 성취된다.
다른 방법은 원하는 데이터 변환을 성취하기 위해 컴퓨터를 이용하여 프로그램을 합성하도록 하는 것과 관련된다. 프로그램을 합성하는 2개의 주요한 방법, 즉, 연역적(deductive) 방법 및 귀납적(inductive) 방법이 존재한다. 연역적 프로그램 합성에서, 완전한 하이 레벨 사양은 각각의 변환 단계가 몇몇 공리를 이용하여 유효화되는 대응하는 로우 레벨 프로그램으로 변환된다. 이 방법은 사용자가 완전한 사양을 제공할 것을 필요로 하며, 몇몇 경우에 이는 잠재적으로 프로그램 자체를 기록하는 것보다 어려울 수 있다. 이것은 귀납적 합성 방법이 최근에 보다 대중적인 인기를 얻을 수 있게 하였다. 귀납적 프로그램 합성 방법에서, 프로그램은 입력-출력 예(input-output examples)의 세트로 구성되는 사양과 같은 불완전한 사양으로부터 합성된다. 이것은 최근에 로우 레벨 포인터 조작 코드로부터 스프레드시트 매크로에 걸치는 다양한 도메인으로부터 프로그램을 합성하는데 사용되고 있다.
귀납적 프로그램 합성 방법에서 사양은 불완전하고 종종 모호하므로, 주어진 사양과 일치하는 기본 도메인 특정의 언어(underlying domain-specific language)로 다수의 상이한 프로그램이 존재한다. 모호함을 제거하고 원하는 프로그램에 집중하기 위해, 사용자는 추가적인 입력-출력 예를 제공함으로써 사양을 강화할 필요가 있다. 예의 수는 도메인 특정의 언어의 표현력에 직접 비례하는데, 즉, 언어의 표현력이 높을수록, 원하는 프로그램에 집중하는데 요구되는 입력-출력 예가 많아진다.
도메인 특정의 언어는, 사용자가 원하지만, 이와 동시에 사용자가 원하는 프로그램을 학습하기 위한 상당한 수의 입력-출력 예를 제공하는 것이 예상될 수 없는 대부분의 태스크를 표현하도록 표현력이 풍부해질 필요가 있다.
본 명세서에서 기술된 랭킹 기법의 실시예는 일반적으로 단지 소수의 사용자가 공급하는 입력-출력 예(user-supplied input-output examples)를 이용하여 귀납적 프로그램 합성 프로시쥬어를 통해 생성된 후보 변환 프로그램(candidate transformation programs)의 랭킹과 관련된다. 일 실시예에서, 하나 이상의 변환 프로그램의 랭크된 그룹을 확립하기 위한 후보 변환 프로그램을 랭킹하기 위해 컴퓨터가 사용되고, 변환 프로그램의 각각은 하나 이상의 사용자 공급 입력-출력 예의 각각과 일치하는, 사용자에 의해 입력되는 각각의 입력 스트링으로부터 사용자가 원하는 형태로 출력 스트링을 생성한다.
보다 구체적으로, 후보 변환 프로그램의 세트가 입력된다. 각각의 변환 프로그램은 도메인 특정의 언어로 된 프로그램 표현으로 구성되고, 프로그램 표현은 다시 서브표현(sub-expressions)으로 구성된다는 것에 주목한다. 랭킹 방식은 후보 변환 프로그램에서 발견되는 서브표현에 대한 오프라인 트레이닝 데이터로부터 확립된다. 이들 랭킹 방식의 각각은 서브표현이, 사용자가 공급하는 입력-출력 예의 각각과 일치하는, 사용자에 의해 입력된 각각의 입력 스트링으로부터 사용자가 원하는 형태로 출력 스트링을 생성할 수 있는 프로그램의 일부인 가능성을 표시하는 가능성 스코어(likelihood score)를 생성한다. 랭킹 방식이 확립된 각각의 후보 변환 프로그램이 각각의 서브표현에 대해, 가능성 스코어는 해당 서브표현에 대해 확립된 랭킹 방식을 이용하여 확립된다. 가능성 스코어는 보다 작은 서브표현으로부터 보다 큰 서브표현으로의 순서로 연산된다. 전체 랭킹 스코어는 해당 후보 변환 프로그램에 대해 확립된 서브표현 가능성 스코어로부터 각각의 후보 변환 프로그램에 대해 연산된다.
일 실시예에서, 사전 규정된 수의 상위 랭킹의 후보 변환 프로그램을 선택하기 위해 후보 변환 프로그램의 각각과 연관된 전체 랭킹이 사용된다. 이들 상위 랭킹 프로그램은 하나 이상의 변환 프로그램의 상술한 랭크된 그룹으로서 지정된다. 일 구현예에서 사전 규정된 수는 1이므로 단지 최상위 랭킹의 후보 변환 프로그램이 선택되고 지정된다는 것에 주목한다.
본 요약부는 이하 발명의 상세한 설명에서 보다 자세히 기술될 개념들 중 선택된 것들을 단순화된 형식으로 소개하기 위해 제공되는 것이다. 본 요약부는 청구항에 기재된 청구대상의 주된 사항 또는 핵심 사항을 밝히기 위한 것이 아니며, 청구항에 기재된 청구대상의 범위를 한정하기 위한 것은 더더욱 아니다.
본 개시 내용의 특정의 특징, 측면, 및 장점은 후술하는 상세한 설명, 첨부되는 청구범위, 및 첨부 도면과 관련하여 가장 잘 이해될 것이다.
도 1은 후보 변환 프로그램을 랭크하기 위한 프로세스의 일 실시예의 일반적인 개요를 서술하는 흐름도이다.
도 2는 어토믹(atomic) 표현에 대해 랭킹 방식을 확립하는 것과 관련된 도 1의 프로세스의 일부의 구현예의 일반적인 개요를 서술하는 흐름도이다.
도 3은 태스크의 트레이닝 세트로부터 트레이닝 데이터를 생성하는 것과 관련된 도 2의 프로세스의 일부의 구현예의 일반적인 개요를 서술하는 흐름도이다.
도 4는 포지티브 및 네거티브 트레이닝 서브표현의 세트에서 각각의 서브스트링 표현으로부터 트레이닝 데이터를 생성하는 것과 관련된 도 3의 프로세스의 일부의 구현예의 일반적인 개요를 서술하는 흐름도이다.
도 5는 랭킹 방식이 해당 랭킹 방식을 이용하여 확립된 후보 변환 프로그램의 각각의 서브표현에 대한 가능성 스코어를 확립하는 것과 관련된 도 1의 프로세스의 일부의 구현예의 일반적인 개요를 서술하는 흐름도이다.
도 6은 최상위 랭킹의 후보 변환 프로그램을 이용하여 스트링 변환을 수행하는 프로세스의 일 실시예의 일반적인 개요를 서술하는 흐름도이다.
도 7은 사람의 성(last name)을 나타내는 입력 스트링을 포함하는 입력 컬럼과, 사람의 성 앞에 위치하는 스트링 "Mr"을 갖는 대응하는 입력 스트링 이름을 포함하는 일례의 출력 스트링을 갖는 출력 컬럼을 갖는 스프레드시트를 나타내는 표를 도시한다.
도 8은 도시 명칭을 포함하는 어드레스를 포함하는 입력 컬럼과, 도시 명칭에 대응하는 대응 입력 스트링의 일부를 포함하는 일례의 출력 스트링을 갖는 출력 컬럼을 갖는 스프레드시트를 나타내는 표를 도시한다.
도 9는 본 명세서에서 기술된 랭킹 기법의 실시예를 구현하는 예시적인 시스템을 구성하는 범용 컴퓨팅 디바이스를 도시하는 도면이다.
랭킹 기법의 실시예의 후술하는 설명에서, 그 일부를 형성하고, 기법이 실시될 수 있는 특정의 실시예가 예시로서 도시되어 있는 첨부 도면을 참조한다. 다른 실시예가 이용될 수 있으며, 기법의 범위로부터 벗어나지 않고 구조적인 변경이 행해질 수 있음을 이해할 것이다.
명확성을 위해 특정의 용어는 본 명세서에서 기술된 랭킹 기법의 실시예를 설명하는 것에 도움을 줄 것이며 이들 실시예가 그와 같이 선택된 특정의 용어로 제한되도록 의도하지 않는다는 것에 또한 주목한다. 또한, 각각의 특정의 용어는 유사한 목적을 달성하기 위해 대체로 유사한 방식으로 동작하는 모든 그 기술적인 등가물을 포함한다는 것을 이해해야 한다. 본 명세서에서 "일 실시예", 또는 "다른 실시예", 또는 "예시적인 실시예", 또는 "대안적인 실시예", 또는 "일 구현예", 또는 "다른 구현예", 또는 "예시적인 구현예", 또는 "대안적인 구현예"가 지칭하는 것은 실시예 또는 구현예와 관련하여 기술된 특정의 특징, 특정의 구조, 또는 특정의 특성이 적어도 하나의 랭킹 기법의 실시예에 포함될 수 있음을 의미한다. 명세서의 곳곳에 기재된 "일 실시예", "다른 실시예", "예시적인 실시예", "대안적인 실시예", "일 구현예", "다른 구현예", "예시적인 구현예", "대안적인 구현예"가 반드시 동일한 실시예 또는 구현예를 지칭하는 것은 아니며, 다른 실시예/구현예와 상호 배타적인 별도의 또는 대안적인 실시예/구현예도 아니다. 또한, 랭킹 기법의 하나 이상의 실시예 또는 구현예를 나타내는 프로세스 흐름의 순서는 임의의 특정의 순서를 본질적으로 나타내지도 않고 랭킹 기법의 임의의 제한을 암시하지도 않는다.
본 명세서에서 사용되는 바와 같은 "입력-출력 예"란 용어는 입력을 형성하는 문자 스트링과 출력을 형성하는 문자 스트링의 튜플(tuple)을 지칭한다는 것에 또한 주목해야 한다. 입력은 사용자가 변환하기를 원하는 입력의 예를 나타내는 반면, 출력 스트링은 사용자가 입력으로부터 생성되기를 원하는 출력의 예를 나타낸다.
1.0 귀납적 프로그램 합성을 위한 랭킹 기법
본 명세서에서 기술된 랭킹 기법의 실시예는 귀납적 프로그램 합성에 사용되는 원하는 랭킹 함수를 학습하기 위해 통계적 및 기계적 학습 기법을 사용한다. 일반적으로, 포지티브 및 네거티브 예의 트레이닝 데이터세트는 주어진 입력-출력 예의 세트로부터 자동으로 생성된다. 트레이닝 데이터세트로부터, 도메인 특정의 언어로 된 프로그램의 표현에 가능성 스코어를 할당하는 랭킹 함수가 학습된다. 그 다음에 이들 랭킹 함수는 매우 적은 수의 입력-출력 예로부터 학습된 프로그램의 가능성을 연산하는데 사용된다.
1.1 스트링 변환 언어 L s
이 섹션에는, 랭킹 기법의 실시예를 구현하는 스트링 변환 언어가 기술되어 있다. 스트링 변환 언어 Ls에 대한 신택스는 다음과 같다.
Figure pct00001
트레이스(또는 연결(concatenate)) 표현 e는 어토믹(atomic) 표현 f i , .., f n 의 연결을 표시한다. 어토믹 표현 f는 일정 스트링 표현 ConstStr(s) 또는 서브스트링 표현 SubStr(v i , p 1 , p 2 )을 표시한다. 일정 스트링 표현 ConstStr(s)은 일정 스트링 "s"를 생성하는 표현을 표시한다. 서브스트링 표현 SubStr(v i , p 1 , p 2 )은 왼쪽 및 오른쪽 위치가 위치 쌍 표현 p 1 p 2 로 각각 표현되는 컬럼 vi에 존재하는 입력 스트링의 서브스트링을 나타낸다. 위치 표현 CPos(k)은 정수가 양(또는 음)이면, 좌측(또는 우측)으로부터 주어진 스트링 내의 k번째 인덱스를 지칭한다. 위치 표현 Pos(r 1 , r 2 , c)은 좌측 및 우측이 정규 표현 r 1 r 2 에 각각 매칭하는 입력 스트링 내의 위치를 표시하고, 이것은 스트링 내의 정규 표현의 c번째 이러한 매칭이다. 공식적으로, 정규 표현 r 1 은 s[0..t -1]의 몇몇 서픽스(suffix)에 매칭하고 r 2 는 s[0..l +1]의 몇몇 서픽스에 매칭하고, 여기서 l=길이(들)이고, tc가 양(또는 음)인 경우 좌측(또는 우측)으로부터 c번째의 이러한 인덱스/위치 스트링이다.
1.2 L s 표현의 랭킹 세트
Ls 표현의 큰 세트를 나타내는 데이터 구조는 다음과 같다.
Figure pct00002
데이터 구조는 다항식 공간에서 표현의 지수를 독립적으로 나타내도록 표현의 독립적인 서브표현을 유지한다. 예를 들어, 서브스트링 표현
Figure pct00003
의 세트는 좌측
Figure pct00004
및 우측 위치 표현
Figure pct00005
의 세트를 독립적으로 유지한다. 매핑 W는 ξ의 각각의 에지를 SubStr 및 ConstStr 표현의 세트에 매핑하고, 이에 의해 상이한 길이의 연결 표현들 사이에서 공평하게 공유한다(개시 노드 ηs로부터 타겟 노드 ηt로의 지향형 비순환적 그래프(directed acyclic graph : DAG)의 각 경로는 경로 내의 각각의 에지로부터의 임의의 표현을 취하고 이들을 연결함으로써 획득된 연결 표현의 세트를 나타냄). 본 명세서에서 기술된 랭킹 기법의 실시예는 서브표현의 독립성을 유지하고 서브표현의 세트를 독립적으로 랭킹한다. 서브표현의 세트를 랭킹하는 3개의 기법이 사용되는데, 즉, (정규 표현 r 및 위치 표현 p을 랭킹하는) 빈도 기반 랭킹(frequency-based ranking), (Substr 표현을 랭킹하는) 특징 기반 랭킹(feature-based ranking), 및 (연결 표현을 랭킹하는) 경로 기반 랭킹(path-based ranking)이 사용된다.
1.2.1 빈도 기반 랭킹
(몇몇 유한 세트로부터 값을 취하는) 정규 표현 및 위치 표현에 대해, 이러한 표현을 랭킹하는데 빈도 기반 랭킹이 수행된다. 트레이닝 데이터로부터 추정되는 바와 같이 각각의 가능한 표현 값에 그 빈도를 매핑하는 딕셔너리(dictionary)
Figure pct00006
가 존재한다. 정규 표현의 가능성 스코어는 그 빈도 스코어에 직접 비례하는 것으로 정의되어 있다. 위치 표현의 가능성 스코어는 그 빈도 스코어와 그 구성의 정규 표현의 가능성 스코어의 제곱근의 임의의 선형 함수로 정의될 수 있다.
1.2.2 특징 기반 랭킹
무한 세트로부터 값을 취하는 어토믹 표현 f과 같은 표현에 대해, 특징 기반 랭킹이 수행된다. 기본 입력-출력 예로부터 특징 φ(e)의 세트가 연산되고 기계적 학습 프로시쥬어로부터 가능성이 획득된다. 일 실시예에서 어토믹 표현 f에 대한 일정 스트링 표현 및 서브스트링 표현 사이의 선택을 랭킹하기 위해, 서포트 벡터 머신(support vector machine : SVM) 이진 분류 프로시쥬어가 사용된다.
1.2.3 경로 기반 랭킹
어토믹 표현으로 구성되는 연결 표현에 대해, 경로 기반 랭킹이 수행된다. 일 실시예에서, 이 경로 기반 랭킹은 연결 표현에서 발견되는 개별적인 어토믹 표현에 대한 스코어를 결합하는 것과 관련된다. 일 구현예에서, 어토믹 표현에 대한 가능성 스코어는 이들을 승산함으로써 결합되고, 다른 구현예에서 이들이 함께 가산된다.
1.3 자동화된 트레이닝 데이터 생성
이 섹션에서, 빈도 기반 랭킹(또는 특징 기반 랭킹 각각)에 대해 입력-출력 예의 세트로부터 포지티브 예(또는, 포지티브 및 네거티브 예)로 구성되는 트레이닝 데이터를 자동으로 생성하는 방법의 일 실시예가 기술되어 있다. 복수의 입력-출력 예 {(o 1 , o 1 ),...,(i n , o n )}로 각각 구성되는 큰 태스크의 세트가 획득된다. 합성 프로시쥬어는 각각의 입력-출력 예 (i k , o k )와 일치하는 모든 프로그램
Figure pct00007
의 세트를 학습한다. 포지티브 및 네거티브 표현 값은 다음과 같이 획득된다. 즉, 포지티브 표현 값은 세트
Figure pct00008
에 존재하는 표현 값으로 구성되고, 네거티브 표현 값은 세트
Figure pct00009
에 존재하는 표현 값으로 구성된다.
1.3.1 포지티브 및 네거티브 표현 값
2개의 지향형 비순환적 그래프(directed acyclic graph : DAG)
Figure pct00010
을 고려하면, 포지티브 및 네거티브 표현 값을 연산하기 위해 2개의 DAG내의 에지를 정렬하는 것이 과제이다. DAG를 정렬한 후에, 이들 사이의 공통 에지는 포지티브 표현 값을 구성하고
Figure pct00011
에 존재하지만
Figure pct00012
에는 존재하지 않는 에지는 네거티브 표현 값을 구성한다.
DAG 프로그램
Figure pct00013
Figure pct00014
은 입력 스트링 ik상에서 실행되고 DAG 노드는 레이블 함수 L : η→int를 이용하여 출력 스트링 ok의 인덱스로 주석이 달려진다. DAG의 개시 노드 ηs는 L(ηs)=0이 되도록 인덱스 0으로 주석이 달려진다. DAG의 노드 η2는 L(η1)=l인 경우 인덱스 m(즉, L(η2)=m)로 주석이 달려지고 DAG 에지 (η1, η2)상의 표현은 입력 스트링 ik상에서 실행되는 스트링 ok[l..m]을 생성한다. 일단 양 DAG의 노드에 주석이 달려지면, 동일한 레이블을 갖는 노드들 사이에서 에지상의 표현이 비교를 위해 수집된다. DAG
Figure pct00015
의 스트링 ok[l..m]을 생성하는 표현의 세트는
Figure pct00016
로서 표시되며, 여기서
Figure pct00017
이다.
Figure pct00018
에 나타나는 표현은 포지티브 표현으로서 표시되고, 세트
Figure pct00019
에 나타나는 표현은 네거티브 표현으로서 표시된다. 포지티브 및 네거티브 표현 값의 세트는 각각의 입력-출력 예의 쌍에 대해 획득된다.
1.3.2 빈도 기반 트레이닝 데이터 생성
정규 표현 및 위치 표현을 랭킹하기 위해, 이들 표현 모두 유한 세트로부터 값을 취하므로 빈도 기반 랭킹 방법이 수행된다. 토큰 시퀀스 표현에 대한 그 빈도 스코어와 함께 토큰 시퀀스의 데이터베이스가 또한 생성된다. 포지티브 트레이닝 표현의 세트로부터 빈도가 추정된다. 빈도는 특정의 표현이 발생하는 각각의 상이한 컨텍스트에 대해 또한 추정될 수 있다. 예를 들어, 위치 표현은 (해당 위치 표현이 SubStr 표현의 제 1 또는 제 2 인수로서 발생하는지를 표시하는) 좌측 위치 표현 또는 우측 위치 표현일 수 있다. 정규 표현은 위치 표현 내부의 2개의 상이한 컨텍스트에서 또한 발생한다.
1.3.3 특징 기반 트레이닝 데이터 생성
스트링 변환을 학습함에 있어 주요한 모호함 중 하나는 출력 스트링 내의 서브스트링이 입력 스트링의 일정 스트링인지 서브스트링인지에 대해 결정을 행하는 것으로부터 나온다. 이러한 결정을 행하는 것은 위치 쌍 및 일정 스트링 표현에 대해 가능한 값 뿐만 아니라 입력 및 출력 스트링에도 의존하기 때문에, 무한하게 많은 가능한 입력 및 출력 스트링이 존재하므로 이 경우에 빈도 기반 랭킹을 사용하는 것이 불가능하다. 대신, 일 실시예에서, 특징 기반 랭킹 방법은 SubStr 및 ConstStr 표현 사이에서 선택하는데 사용된다. 보다 구체적으로, 각각의 SubStr 표현에 대해 특징의 세트가 정의되어 있다. 사용될 수 있는 특징의 예는 다음을 포함하되, 이들로만 제한되지 않는다.
a) IsOutputLeftTok: 출력 서브스트링의 좌측 위치가 토큰에 의해 인식될 수 있는지를 표시하는 불린(boolean) 값;
b) IsOutputLeftConstant: 출력 서브스트링의 좌측 위치에서의 문자가 일정한 지를 표시하는 불린 값;
c) IsOutputRightTok: 출력 서브스트링의 우측 위치가 토큰에 의해 인식될 수 있는지를 표시하는 불린 값;
d) IsOutputRightConstant: 출력 서브스트링의 우측 위치에서의 문자가 일정한 지를 표시하는 불린 값;
e) IsOutputTok: 출력 서브스트링이 토큰을 표시하는지를 표시하는 불린 값;
f) IsInputLeftTok: 입력 서브스트링의 좌측 위치가 토큰에 의해 인식될 수 있는지를 표시하는 불린 값;
g) IsInputRightTok: 입력 서브스트링의 우측 위치가 토큰에 의해 인식될 수 있는지를 표시하는 불린 값;
h) IsInputTok: 입력 서브스트링이 토큰인지를 표시하는 불린 값;
i) Casing: 출력 서브스트링을 획득하도록 수행되는 케이싱;
j) LenSubstring: 서브스트링의 길이;
k) RelLenlnSubstring: 입력 스트링의 길이에 대한 서브스트링의 상대 길이 (lenSubstring/lenlnputString); 및
1) RelLenOutSubstring: 출력 스트링의 길이에 대한 서브스트링의 상대 길이 (lenSubstring/lenOutputString);
m) 빈도 기반 랭킹 방식을 이용하여 추정된 구성 위치 표현의 가능성 스코어.
모든 이들 특징은 상수 0(1) 시간 내에 연산될 수 있다. 각각의 포지티브 및 네거티브 SubStr 표현에 대해, 특징 벡터는 클래스 레이블(예를 들어, 포지티브 표현에 대해 +1 및 네거티브 표현에 대해 0)과 함께 연산된다. 상업적으로 입수가능한(off-the-shelf) 서포트 벡터 머신(SVM) 프로시쥬어는 이진 분류기를 학습하는데 사용될 수 있다. 보다 구체적으로, 생성된 각각의 특성 벡터는 요소의 사전 규정된 순서를 가지며 여기서 (클래스 레이블에 대해 예비되는 것을 제외한) 각각의 요소는 상술한 특징 중 하나와 각각 연관된 특징 값에 대응한다. 상술한 특징의 각각에 대해 요소의 사전 규정된 순서에 대응하는 순서로, 고려 중인 SubStr 표현으로 특징이 표시되면, 제 1 이진 값(예를 들어, 1)을 갖는 특징 값이 대응하는 특징 벡터 요소에 할당된다. 특징이 표시되지 않으면, 제 2 이진 값(예를 들어, 0)을 갖는 특징 값이 대응하는 특징 벡터 요소에 할당된다. 또한, 상술한 클래스 레이블에 대해 예비되는 특징 벡터 요소는 SubStr 표현이 포지티브 SubStr 표현이면 하나의 이진 값(예를 들어, 1)이 할당되고 SubStr 표현이 네거티브 SubStr 표현이면 다른 하나의 이진 값(예를 들어, 0)이 할당된다.
1.4 랭킹 프로그램
이 섹션에서, DAG에 의해 표시된 프로그램이 어떻게 랭크되는지에 대해 기술될 것이다.
1.4.1 랭킹 DAG 에지 표현
DAG의 각각의 에지는 SubStr 및 ConstStr 표현의 세트로 구성된다. 일 실시예에서, 특징 기반 랭킹은 +1과 0 사이의 가능성 스코어를 각각의 SubStr 표현에 할당하는 한편, ConstStr 표현의 가능성 스코어는 0.5를 갖는다.
1.4.2 랭킹 DAG 경로
DAG
Figure pct00020
의 각각의 경로는 주어진 입력-출력 예에 부합하는 몇몇 프로그램을 나타낸다. 에지 e의 가능성 스코어 w(e)는 해당 에지상에서 임의의 SubStr 또는 ConstStr 표현의 최고의 가능성 스코어로서 정의되어 있다. 경로의 가능성 스코어는 경로상에서 대응하는 에지 표현의 가능성 스코어를 승산(또는 가산)함으로써 연산되도록,
Figure pct00021
로서 정의되어 있다. 다익스트라(Dijkstra)의 최단 경로 프로시쥬어는 이 DAG에서의 최상위 랭크된 경로를 연산하는데 사용되고, 최상위 랭크된 출력 스트링을 생성하도록 이를 실행한다. 경로의 가능성 스코어는 또한 모든 에지의 가능성 스코어의 곱/합, 에지의 수, 임의의 에지의 min/max 가능성 스코어와 같은 다양한 특징의 보다 복잡한 함수일 수 있다. 또한, 이 함수는 기계적 학습 기법을 이용함으로써 또한 학습될 수 있다.
1.5 후보 변환 프로그램을 랭크하기 위한 예시적인 프로세스
일반적인 일 구현예로서, 본 명세서에서 기술된 랭킹 기법의 실시예의 전술한 측면이 도 1에 개략 기술된 프로세스에 의해 실현될 수 있다. 보다 구체적으로, (후속하는 예시적인 동작 실시예에서 기술된 임의의 컴퓨팅 디바이스와 같은) 컴퓨터는 후보 변환 프로그램을 랭크하여 하나 이상의 변환 프로그램의 랭크된 그룹을 확립하는 데 사용되며 변환 프로그램의 각각은 하나 이상의 사용자 공급 입력-출력 예의 각각과 일치하는, 사용자에 의해 입력되는 각각의 입력 스트링으로부터 사용자가 원하는 형태로 출력 스트링을 생성한다. 보다 구체적으로, 후보 변환 프로그램의 세트가 입력으로서 수신된다(프로세스 동작 100). 후보 변환 프로그램의 각각은 하나 이상의 사용자 공급 입력-출력 예로부터의 종래의 방법을 이용하여 귀납적으로 합성되고, 각각의 사용자가 공급하는 입력 예로부터 사용자가 공급하는 출력 예에 의해 표시되는 형태로 출력 스트링을 생성한다. 상술한 바와 같이, 각각의 변환 프로그램은, 프로그램 표현으로 구성되고 프로그램 표현은 다시 서브표현으로 구성됨에 주목한다. 다음에, 랭킹 방식이 (보다 작은 서브표현으로부터 보다 큰 서브표현으로) 확립된 각각의 후보 변환 프로그램의 각각의 서브표현에 대해, 해당 서브표현에 대해 확립된 랭킹 방식을 이용하여 가능성 스코어가 확립된다(프로세스 동작 102). 랭킹 방식의 각각은, 서브표현이, 사용자가 공급하는 입력-출력 예의 각각과 일치하는, 사용자에 의해 입력된 각각의 입력으로부터 사용자가 원하는 형태로 출력 스트링을 생성할 수 있는 프로그램의 일부일 가능성을 표시하는 가능성 스코어를 생성한다는 것에 주목한다. 전체 랭킹 스코어는 해당 후보 변환 프로그램에 대해 확립된 서브표현 가능성 스코어로부터의 각각의 후보 변환 프로그램에 대해 연산된다(프로세스 동작 104).
상이한 종류의 표현에 대해 상이한 종류의 랭킹 방식이 사용된다. 상술한 바와 같이, 서브표현은 정규 표현, 위치 표현, 어토믹 표현, 또는 연결 표현일 수 있다. 일 실시예에서, 정규 표현 및 위치 표현은 (이 타입의 랭킹은 유한 토큰의 세트로부터 값을 취하는 표현에 적용 가능하므로) 빈도 기반 랭킹을 채용한다. 또한, 특징 기반 랭킹은 어토믹 표현을 위해 사용되고, 경로 기반 랭킹은 연결 표현을 위해 사용된다. 효율성을 위해, 일 실시예에서, 랭킹 방식은 먼저 정규 표현을 위해 확립되고, 그 다음에 위치 표현을 위해 확립되고, 그 다음에 어토믹 표현을 위해 확립되고, 마지막으로 연결 표현을 위해 확립된다는 것에 또한 주목한다.
어토믹 표현의 경우에, 앞에서 표시한 바와 같이, 이들은 일정 스트링 표현 또는 서브스트링 표현일 수 있다. 이제 도 2를 참조하면, 일 실시예에서 어토믹 표현에 대한 랭킹 방식을 확립하는 것은 먼저 어토믹 표현이 일정 스트링 표현인지 서브스트링 표현인지를 식별하는 것을 포함한다(프로세스 동작 200). 그 다음에 태스크의 트레이닝 세트가 입력된다(프로세스 동작 202). 각각의 태스크 세트는 복수의 입력-출력 예로 구성된다. 트레이닝 세트로부터 트레이닝 데이터가 생성되고(프로세스 동작 204), 각각의 서브스트링 표현 및 각각의 일정 스트링 표현에 가능성 스코어를 할당하는 기계 학습 분류기를 트레이닝하는데 사용된다(프로세스 동작 206). 일 실시예에서, 기계 학습 분류기는 SVM 이진 분류기이고, 얼마나 해당 서브표현이 의도하는 프로그램의 일부일 것 같은지에 따라 각각의 서브스트링 표현에 0 내지 1의 범위의 값을 갖는 가능성 스코어를 할당하도록 트레이닝된다. 또한, 분류기는 각각의 일정 스트링 표현에 사전 규정된 가능성 스코어 값(예를 들어, 0.5)을 할당한다.
태스크의 트레이닝 세트로부터 트레이닝 데이터를 생성하는 것과 관련하여, 일 구현예에서 이것은 트레이닝 세트의 각각의 태스크에 대해 다음과 관련되어 있다. 도 3을 참조하면, 태스크 내의 이전에 선택되지 않은 입력-출력 예가 선택된다(프로세스 동작 300). 변환 프로그램의 세트는 선택된 입력-출력 예로부터 귀납적으로 합성된다(프로세스 동작 302). 각각의 변환 프로그램은 예의 입력 내의 입력 스트링의 튜플로부터 예의 출력에 표시된 형태로 출력 스트링을 생성한다. 입력 스트링의 튜플은 예의 출력을 생성하는데 사용되는 입력-출력 예에서 입력의 하나 이상의 부분을 참조한다. 다음에, 포지티브 트레이닝 서브표현의 세트는 변환 프로그램의 세트로부터 확립되고(프로세스 동작 304), 네거티브 트레이닝 서브표현의 세트는 변환 프로그램의 세트로부터 또한 확립된다(프로세스 동작 306). 일 실시예에서, 변환 프로그램의 세트로부터 포지티브 트레이닝 서브표현의 세트를 확립하는 것은 태스크 내의 입력-출력 예로부터 합성된 모든 변환 프로그램의 세트의 교집합에서 발견되는 각각의 서브표현을 포지티브 트레이닝 서브표현으로서 지정하는 것을 포함한다. 반면에, 변환 프로그램의 세트로부터 네거티브 트레이닝 서브표현의 세트를 확립하는 것은 포지티브 트레이닝 서브표현으로서 식별되지 않은 변환 프로그램의 세트에서 각각의 서브표현을 네거티브 트레이닝 서브표현으로서 지정하는 것을 포함한다.
이 지점에서, 정규 표현 및 위치 표현에 대한 랭킹 방식이 확립된다. 보다 구체적으로, 포지티브 트레이닝 서브표현의 세트의 그 빈도에 근거하여 유한 수의 사전 정의된 토큰(즉, 정규 표현 및 위치 표현)을 갖는 세트로부터 값을 취하는 출력 서브스트링을 생성하는 서브표현을 빈도 기반 스코어에 매핑하는 딕셔너리가 생성된다(프로세스 동작 308).
다음에, 포지티브 및 네거티브 트레이닝 서브표현의 세트로부터의 각각의 서브스트링 표현에 대해, 특징 기반 랭킹에 대해 트레이닝 데이터가 생성된다(프로세스 동작 310). 그리고, 태스크 내의 모든 입력-출력 예가 선택되고 프로세싱되었는지의 여부가 판정된다(프로세스 동작 312). 그렇지 않으면 프로세스 동작(300 내지 312)이 반복된다. 모든 입력-출력 예가 선택되고 프로세싱되었으면 선택된 태스크에 대한 프로세스가 종료한다. 모든 나머지 태스크 및 그의 입력-출력 예에 대해 전술한 프로시쥬어가 반복된다.
특징 기반 랭킹을 위한 포지티브 및 네거티브 트레이닝 서브표현의 세트의 각각의 서브스트링 표현으로부터 트레이닝 데이터를 생성하는 전술한 프로세스 동작과 관련하여, 일 실시예에서 이것은 도 4에 도시된 바와 같이 성취된다. 먼저, (상술한 것과 같이) 하나 이상의 특징의 세트가 입력된다(프로세스 동작 400). 특징의 각각은 출력 스트링 내의 서브스트링이 포지티브 및 네거티브 트레이닝 서브표현의 세트의 서브스트링 표현 중 하나에 의해 생성되는지 여부를 나타낸다. 그 다음에, 포지티브 및 네거티브 트레이닝 서브표현의 세트의 각각의 서브스트링 표현에 대해, 특징 벡터가 생성된다(프로세스 동작 402). 상술한 바와 같이, 각각의 특징 벡터는 클래스 레이블에 대해 예비되는 것을 제외하고, 각각의 요소가 상술한 특징 중 하나와 각각 연관된 특징 값에 대응하는 요소의 사전 규정된 순서이다. 일 실시예에서, 요소의 사전 규정된 순서에 대응하는 순서로 특징의 각각에 대해, 고려 중인 서브스트링 표현에 의해 생성된 출력 스트링 내의 서브스트링으로 특징이 표시되는 경우 제 1 이진 값(예를 들어, 1)을 갖는 특징 값을 할당함으로써 각각의 특징 벡터가 생성된다. 보다 구체적으로, 표시된 특징과 연관된 특징 벡터 요소에 특징 값이 할당된다. 또한, 서브스트링 표현에 의해 생성된 출력 스트링 내의 서브스트링으로 해당 특징이 표시되지 않는 경우, 고려 중인 특징과 연관된 특징 벡터 요소에 제 2 이진 값(예를 들어, 0)을 갖는 특징 값이 할당된다. 또한, 상술한 클래스 레이블에 대해 예비되는 특징 벡터 요소는 서브스트링 표현이 포지티브 트레이닝 서브표현의 세트에 있는 경우 하나의 이진 값(예를 들어, 1)을 할당하고, 네거티브 트레이닝 서브표현의 세트에 있는 경우 다른 이진 값(예를 들어, 0)을 할당하고 있다.
일 실시예에서, 연결 표현을 위한 랭킹 방식을 확립하는 것과 관련하여, 이것은 연결 표현에서 발견되는 개별적인 어토믹 표현에 대한 가능성 스코어를 결합하는 것을 포함한다. 일 구현예에서, 이 결합은 스코어를 승산함으로써 성취되고, 일 구현예에서, 이것은 스코어를 가산함으로써 성취된다.
전술의 관점에서, 일 실시예에서, 랭킹 방식을 이용하여 해당 랭킹 방식이 확립된 후보 변환 프로그램의 각각의 서브표현에 대해 가능성 스코어를 확립하는 것은 다음을 포함한다. 도 5를 참조하면, 먼저 빈도 기반 랭킹 방식을 이용하여 각각의 정규 표현에 대한 가능성이 식별된다(프로세스 동작 500). 그 다음에, 빈도 기반 랭킹 방식을 이용하여 각각의 위치 표현의 가능성이 식별된다(프로세스 동작 502). 상술한 바와 같이, 이 빈도 기반 랭킹은 정규 표현 및 위치 표현에 빈도 기반 스코어를 매핑하는 딕셔너리를 채용하는 것을 포함할 수 있다. 다음에, 특징 기반 랭킹 방식을 이용하여 각각의 어토믹 표현에 대한 가능성이 식별된다(프로세스 동작 504). 상술한 바와 같이, 어토믹 표현은 일정 스트링 표현 또는 서브스트링 표현이다. 어토믹 표현이 일정 스트링 표현인 경우, 특징 기반 랭킹은 사전 규정된 가능성 스코어 값(예를 들어, 0.5)을 할당하는 것을 포함할 수 있다. 그리고 어토믹 표현이 서브스트링 표현인 경우, 특징 기반 랭킹은 각각의 서브스트링 표현에 가능성 스코어를 할당하도록 트레이닝된 기계적 학습 분류기를 이용하여 가능성 스코어 값(예를 들어, 0 내지 1의 범위)을 할당하는 것을 포함할 수 있다. 그 다음에 경로 기반 랭킹 방식을 이용하여 각각의 연결 표현의 가능성이 식별된다(프로세스 동작 506). 상술한 바와 같이, 이 경로 기반 랭킹은 연결 표현에서 발견되는 개별적인 어토믹 표현에 대한 스코어를 결합하는 것을 포함할 수 있다.
후보 변환 프로그램의 각각에 대해 확립된 상술한 전체 랭킹과 관련하여, 이들 랭킹을 다양한 방식으로 사용하는 것이 가능하다. 예를 들어, 일 실시예에서, 후보 변환 프로그램의 각각과 연관된 랭킹은 사전 규정된 수의 최상위 랭킹의 후보 변환 프로그램을 선택하고, 이들 상위 랭킹 프로그램을 하나 이상의 변환 프로그램의 상술한 랭킹 그룹으로서 지정하는데 사용된다. 일 구현예에서 사전 규정된 수는 1이므로 최상위 랭킹의 후보 변환 프로그램만이 선택되고 지정된다는 점에 주목한다.
1.6 최상위 랭킹의 후보 변환 프로그램을 이용하여 스트링 변환을 수행하는 예시적인 프로세스
최상위 랭킹의 후보 변환 프로그램을 선택하는 것을 포함하는 이후의 실시예와 관련하여, 이것은 컴퓨팅 디바이스가 스트링 변환을 수행하는 애플리케이션에서 사용될 수 있다. 보다 구체적으로, 도 6을 참조하면, 일반적인 일 구현예에서, 하나 이상의 사용자 공급 입력-출력 예로부터 귀납적으로 합성된 후보 변환 프로그램의 세트가 입력된다(프로세스 동작 600). 상술한 바와 같이, 각각의 후보 변환 프로그램은 각각의 사용자가 공급하는 입력 예로부터 각각의 사용자가 공급하는 출력 예에 의해 표시된 형태로 출력 스트링을 생성한다.
일단 입력되면, 후보 변환 프로그램의 세트가 랭크되어 최상위 랭킹의 후보 변환 프로그램을 식별한다(프로세스 동작 602). 그 다음에 최상위 랭킹의 후보 변환 프로그램은 사용자가 공급하는 입력 스트링에 적용되어 출력 스트링을 생성한다(프로세스 동작 604).
1.7 예시적인 변환 시나리오
이 섹션에서, 한 쌍의 예시적인 변환 시나리오가 제공된다. 이들 시나리오에서 발견되는 적은 수의 입력-출력 예에 근거하여 입력된 각각의 입력 스트링으로부터 원하는 출력 스트링을 생성할 수 있는 변환 프로그램을 확립하도록 본 명세서에서 기술된 랭킹 기법의 실시예가 채용될 수 있다.
제 1 예시적인 시나리오에서, 스프레드시트 사용자는 입력 컬럼에서 일련의 이름을 갖고 각각의 이름 앞에 타이틀 "Mr."를 부가하기를 원한다. 사용자는 도 7에 도시된 입력-출력 예를 제공하였다.
출력 스트링 "Mr. Roger" 내의 어느 서브스트링이 일정 스트링이고 입력 스트링 "Roger"의 서브스트링인지를 결정함으로써 주어진 입력-출력 예로부터 원하는 변환 프로그램을 학습하는 것이 과제이다. 이 경우에, 이것은 출력 서브스트링 o1[0..0]≡M이 입력 스트링에 존재하지 않으므로, 이것은 일정 스트링이어야 한다는 것을 추론할 수 있다. 그러나 출력 서브스트링 o1[l..1]≡r은 입력 스트링 (i1[0..0]≡R 및 i1[4..4]≡r) 내의 2개의 상이한 서브스트링으로부터 나올 수 있다. 본 명세서에서 기술된 랭킹 기법의 실시예는 (i) 서브스트링 i1[0..0]을 추출하고 "R"로부터 "r"을 생성하는 소문자(lower case) 동작을 수행하는 위치 쌍 표현, 및 (ii) 서브스트링 i1[4..4] 및 일정 스트링 표현 "r"을 추출하는 위치 쌍 표현을 포함하는 출력 스트링 내의 서브스트링 "r"을 연산하기 위해 모든 가능한 표현을 학습한다. 입력 스트링에 존재하지 않는 출력 스트링의 서브스트링은 일정 스트링이라고 보장되는 반면에, 입력 스트링에 존재하는 서브스트링은 입력 스트링의 일정 스트링 또는 서브스트링일 수 있다(경험상 이들은 입력 스트링으로부터 나올 가능성이 높음에도 불구하고). 예를 들어, 출력 서브스트링 o1[4..8]≡Roger은 일정 스트링 "Roger"보다 입력 스트링 i1으로부터 나올 가능성이 높다. 보다 작은 인수를 이용하여, 출력 스트링 내의 서브스트링 o1[l..1]≡r은 입력 스트링의 2개의 부분에 또한 존재하고 그로부터 나올 가능성이 높다. 그러나 이 예에서, 프로그램의 원하는 동작은 각각의 입력 스트링 앞에 일정 스트링 "Mr"을 부가하는 것이므로 "r"은 일정 스트링인 것이 요구된다. 하나의 입력-출력 예로부터 원하는 변환을 학습하기 위해, 본 명세서에서 기술된 랭킹 기법의 실시예는 출력 서브스트링 "r"에 대한 위치 쌍 표현보다 일정 스트링 표현을 높게 랭크할 필요가 있다. "r"을 일정 스트링으로서 랭크함에 있어 도움을 주는 특징의 몇몇은
a) 서브스트링의 길이 : 서브스트링 "r"의 길이가 1이므로 이것은 입력 서브스트링일 가능성이 낮음.
b) 서브스트링의 상대 길이 : 출력 스트링에 비해 서브스트링 "r"의 상대 길이가 또한 매우 작음, 즉, 1/10임.
c) 일정 인접 문자 : "r"의 인접 문자 "M" 및 "."은 모두 일정 표현임.
을 포함한다.
제 2 예시적인 시나리오에서, 스프레드시트 사용자는 컬럼 내의 일련의 어드레스를 갖고 그로부터 도시 명칭을 추출하기를 원한다. 사용자는 도 8에 도시된 입력-출력 예를 제공하였다.
이 경우에, 본 명세서에서 기술된 랭킹 기법의 실시예는 입력 스트링 "243 Flyer Drive, Cambridge, MA 02145"으로부터 서브스트링 "Cambridge"을 추출하기 위해 100개를 넘는 상이한 SubStr 표현을 학습할 수 있고, 그의 몇몇은
a) p1 : 3번째 알파벳 토큰 스트링의 추출;
b) p2 : 4번째 영숫자 토큰 스트링의 추출;
c) p3 : 콤마 및 화이트스페이스 토큰으로 구성되는 1번째 및 2번째 토큰 시퀀스 사이의 서브스트링의 추출;
d) p4 : 3번째 대문자 토큰(내포) 및 좌측으로부터의 2번째 콤마 토큰 사이의 서브스트링의 추출이다.
위치 쌍 표현 p1 및 p2을 학습하는 것에 있어서의 문제는 입력 스트링 "512 Wright Ave, Los Angeles, CA 78911"에서, 원하는 출력이 아닌 출력 스트링 "Los"을 생성하는 것이다. 또한, 위치 쌍 표현 p4는 입력 스트링 "64 128th St, Seattle, WA 98102"으로부터 어떠한 출력도 생성하지 않는다. 한편, 위치 쌍 표현 p3은 위치 쌍 표현의 각각에 대해 원하는 출력 스트링을 생성한다(즉, 각각 Cambridge, Los Angeles, Seattle 및 San Francisco). 이와 같이, 본 명세서에서 기술된 랭킹 기법의 실시예는 하나의 입력-출력 예로부터 원하는 출력 스트링을 생성하기 위해 다른 위치 쌍 표현보다 위치 쌍 표현 p3을 높게 랭크할 것이다.
2.0 예시적인 동작 실시예
본 명세서에서 기술된 랭킹 기법의 실시예는 다양한 타입의 범용 또는 특수용 컴퓨팅 시스템 환경 또는 구성 내에서 동작 가능하다. 도 9는 본 명세서에서 기술된 바와 같이, 각종 실시예 및 랭킹 기법의 실시예의 요소가 구현될 수 있는 범용 컴퓨터 시스템의 간략화된 예를 도시한다. 도 9에서 파선 또는 점선으로 표시되는 임의의 박스는 간략화된 컴퓨팅 디바이스의 대안적인 실시예를 나타내고, 본 명세서에서 기술된 바와 같이, 모든 이들 모든 대안적인 실시예는 이 문서 전체에 걸쳐 기술되어 있는 다른 대안적인 실시예와 결합하여 사용될 수 있음에 주목해야 한다.
예를 들어, 도 9는 간략화된 컴퓨팅 디바이스(10)를 나타내는 범용 시스템 도면을 도시한다. 이러한 컴퓨팅 디바이스는 통상적으로 적어도 몇몇 최소 연산 능력을 갖는 디바이스에서 발견될 수 있고, 퍼스널 컴퓨터, 서버 컴퓨터, 휴대형 컴퓨팅 디바이스, 랩탑 또는 모바일 컴퓨터, 셀 폰과 PDA와 같은 통신 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋 탑 박스, 프로그램 가능한 소비자 전자장치, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 오디오 또는 비디오 미디어 플레이어 등을 포함하되, 이들로만 제한되지 않는다.
본 명세서에서 기술된 랭킹 기법의 실시예를 디바이스가 구현할 수 있도록, 디바이스는 기본 연산 동작을 가능하게 하는 충분한 연산 능력 및 시스템 메모리를 가져야 한다. 특히, 도 9로 도시된 바와 같이, 연산 능력은 일반적으로 하나 이상의 프로세싱 유닛(들)(12)으로 도시되어 있고, 시스템 메모리(16)와 한쪽 또는 양쪽으로 통신하는 하나 이상의 GPU(14)를 또한 포함할 수 있다. 범용 컴퓨팅 디바이스의 프로세싱 유닛(12)은 DSP, VLIW 또는 다른 마이크로콘트롤러와 같은 특수화된 마이크로프로세서일 수 있고, 또는 멀티코어 CPU에서 특수화된 GPU 기반 코어를 포함하는 하나 이상의 프로세싱 코어를 갖는 종래의 CPU일 수 있음에 주목한다.
또한, 도 9의 간략화된 컴퓨팅 디바이스는, 예를 들어, 통신 인터페이스(18)와 같은 다른 컴포넌트를 또한 포함할 수 있다. 도 9의 간략화된 컴퓨팅 디바이스는 하나 이상의 종래의 컴퓨터 입력 디바이스(20)(예를 들어, 포인팅 디바이스, 키보드, 오디오 입력 디바이스, 비디오 입력 디바이스, 햅틱(haptic) 입력 디바이스, 유선 또는 무선 데이터 전송을 수신하는 디바이스 등)를 또한 포함할 수 있다. 도 9의 간략화된 컴퓨팅 디바이스는, 예를 들어, 하나 이상의 종래의 디스플레이 디바이스(들)(24) 및 다른 컴퓨터 출력 디바이스(22)(예를 들어, 오디오 출력 디바이스, 비디오 출력 디바이스, 유선 또는 무선 데이터 전송을 송신하는 디바이스 등)와 같은 다른 선택적 컴포넌트를 또한 포함할 수 있다. 범용 컴퓨터를 위한 통상적인 통신 인터페이스(18), 입력 디바이스(20), 출력 디바이스(22), 및 저장 디바이스(26)는 당 분야에서 통상의 지식을 가진 자에게 잘 알려져 있으며, 본 명세서에서 상세하게 기술되지 않을 것임에 주목한다.
도 9의 간략화된 컴퓨팅 디바이스는 다양한 컴퓨터 판독가능한 매체를 또한 포함할 수 있다. 컴퓨터 판독가능한 매체는 저장 디바이스(26)를 통해 컴퓨터(10)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있고, 컴퓨터 판독가능한 또는 컴퓨터 실행가능한 인스트럭션, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보의 저장을 위한 착탈 가능한(28) 및/또는 착탈 불가능한(30) 휘발성 및 비휘발성 매체를 포함한다. 컴퓨터 판독가능한 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 DVD, CD, 플로피 디스크, 테이프 드라이브, 하드 드라이브, 광학 드라이브, 고체 상태 메모리 디바이스, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, 자기 카세트, 자기 테이프, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스, 또는 원하는 정보를 저장하는데 사용될 수 있고 하나 이상의 컴퓨팅 디바이스에 의해 액세스될 수 있는 임의의 다른 디바이스와 같은 유형의 컴퓨터 또는 머신 판독가능한 매체 또는 저장 디바이스를 지칭한다.
컴퓨터 판독가능한 또는 컴퓨터 실행가능한 인스트럭션, 데이터 구조, 프로그램 모듈 등과 같은 정보의 유지는 하나 이상의 변조된 데이터 신호 또는 캐리어 파형을 인코딩하는 임의의 각종 상술한 통신 매체, 또는 다른 트랜스포트 메커니즘 또는 통신 프로토콜을 이용함으로써 성취될 수 있고, 임의의 유선 또는 무선 정보 전달 메커니즘을 포함한다. "변조된 데이터 신호" 또는 "캐리어 파형"이란 용어는 일반적으로 그 특징 세트 중 하나 이상을 갖거나 또는 정보를 신호로 인코딩하는 방식으로 변경된 신호를 지칭한다는 것에 주목한다. 예를 들어, 통신 매체는 하나 이상의 변조된 데이터 신호를 운반하는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 어쿠스틱(acoustic), RF, 적외선, 레이저와 같은 무선 매체, 및 하나 이상의 변조된 데이터 신호 또는 캐리어 파형을 송신하고 및/또는 수신하는 다른 무선 매체를 포함한다. 상기의 모든 조합은 통신 매체의 범위 내에 또한 포함되어야 한다.
또한, 본 명세서에서 기술된 각종 랭킹 기법의 실시예의 일부 또는 전부를 구현하는 소프트웨어, 프로그램, 및/또는 컴퓨터 프로그램 제품, 또는 이들의 일부는, 컴퓨터 실행가능한 인스트럭션 또는 다른 데이터 구조의 형태로 컴퓨터 또는 머신 판독가능한 매체 또는 저장 디바이스 및 통신 매체의 임의의 원하는 조합으로부터 저장되고, 수신되고, 송신되고, 또는 판독될 수 있다.
마지막으로, 본 명세서에서 기술된 랭킹 기법의 실시예는 컴퓨팅 디바이스에 의해 실행되는 프로그램 모듈과 같이, 컴퓨터 실행가능한 인스트럭션의 일반적인 맥락에서 더 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정의 태스크를 수행하거나 특정의 추상적인 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 명세서에서 기술된 실시예는 하나 이상의 원격 프로세싱 디바이스에 의해 태스크가 수행되는 분산형 컴퓨팅 환경에서, 또는 하나 이상의 통신 네트워크를 통해 링크되는 하나 이상의 디바이스의 클라우드(cloud)내에서 또한 실시될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 매체 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체에 위치할 수 있다. 또한, 상술한 인스트럭션은 프로세서를 포함하거나 포함하지 않을 수 있는 하드웨어 논리 회로로서 부분적으로 혹은 전체적으로 구현될 수 있다.
3.0 다른 실시예
명세서 전반에 걸쳐 모든 상술한 실시예는 추가적인 혼성 실시예를 형성하도록 요구되는 임의의 조합으로 사용될 수 있음에 주목한다. 또한, 청구 대상이 구조적인 특징 및/또는 방법론적인 동작에 특정한 언어로 기술되었으나, 첨부되는 청구범위에서 정의되는 청구 대상은 반드시 상술한 특정의 특징 또는 동작으로 제한되지 않는다는 것이 이해될 것이다. 오히려, 상술한 특정의 특징 또는 동작은 청구범위를 구현하는 예시적인 형태로서 개시되어 있다.

Claims (10)

  1. 하나 이상의 변환 프로그램의 랭크된 그룹을 확립하기 위해 후보 변환 프로그램(candidate transformation programs)을 랭크하기 위한 컴퓨터 구현 프로세스- 변환 프로그램 각각은 서브표현(sub-expressions)을 포함하는 프로그램 표현을 포함하고, 후보 변환 프로그램의 각각은 하나 이상의 사용자 공급 입력-출력 예(user-supplied input-output examples)의 각각과 일치하는, 사용자에 의해 입력되는 입력 스트링으로부터 사용자가 원하는 형태로 출력 스트링을 생성함 -에 있어서,
    컴퓨터를 이용하여
    상기 하나 이상의 사용자 공급 입력-출력 예로부터 귀납적으로 합성되는 후보 변환 프로그램의 세트를 입력하는 프로세스 동작- 그 각각은 각각의 사용자 공급 입력 예로부터 각각의 사용자 공급 출력 예에 의해 표시되는 형태로 출력 스트링을 생성함 -과,
    각각의 후보 변환 프로그램에 대해,
    랭킹 방식이 확립된 상기 후보 변환 프로그램의 각각의 서브표현에 대해, 보다 작은 서브표현으로부터 보다 큰 서브표현으로의 순서로, 해당 서브표현에 대해 확립된 상기 랭킹 방식을 이용하여 가능성 스코어(likelihood score)를 확립하는 프로세스 동작과,
    상기 후보 변환 프로그램에 대해 확립된 상기 서브표현 가능성 스코어로부터 상기 후보 변환 프로그램에 대한 전체 랭킹 스코어를 연산하는 프로세스 동작
    을 수행하는 컴퓨터 구현 프로세스.
  2. 제 1 항에 있어서,
    서브표현은 정규 표현, 위치 표현, 어토믹(atomic) 표현, 또는 연결(concatenate) 표현 중 하나이며, 상기 랭킹 방식은 상기 정규 표현, 위치 표현, 어토믹 표현, 및 연결 표현의 각각을 이 순서로 랭크하도록 확립되는
    컴퓨터 구현 프로세스.
  3. 제 2 항에 있어서,
    어토믹 표현은 일정 스트링 표현(constant string expression) 또는 서브스트링 표현이고, 어토믹 표현에 대해 랭킹 방식을 확립하는 상기 프로세스 동작은,
    상기 어토믹 표현이 일정 스트링 표현인지 서브스트링 표현인지를 식별하는 동작과,
    각각의 태스크가 복수의 입력-출력 예로 구성되는 태스크의 트레이닝 세트(training set of tasks)를 입력하는 동작과,
    상기 트레이닝 세트로부터 트레이닝 데이터를 생성하는 동작과,
    각각의 서브스트링 표현 및 각각의 일정 스트링 표현에 가능성 스코어를 할당하도록 기계 학습 분류기(machine learning classifier)를 트레이닝하는 동작을 포함하는
    컴퓨터 구현 프로세스.
  4. 제 3 항에 있어서,
    각각의 서브스트링 표현에 가능성 스코어를 할당하는 상기 프로세스 동작은 0 내지 1 범위의 값을 갖는 가능성 스코어를 할당하는 것을 포함하고, 각각의 일정 스트링 표현에 가능성 스코어를 할당하는 상기 프로세스 동작은 사전 규정된 가능성 스코어 값을 할당하는 동작을 포함하는
    컴퓨터 구현 프로세스.
  5. 제 3 항에 있어서,
    상기 태스크의 트레이닝 세트로부터 트레이닝 데이터를 생성하는 상기 프로세스 동작은,
    상기 트레이닝 세트의 각각의 태스크에 대해,
    상기 태스크 내의 각각의 입력-출력 예에 대해,
    상기 입력-출력 예로부터 귀납적으로 합성된 변환 프로그램의 세트를 확립하는 동작- 그 각각은 상기 예에서의 입력 스트링의 튜플(tuple)로부터 상기 예에서의 상기 출력 스트링을 생성함 -과,
    상기 변환 프로그램의 세트로부터 포지티브 트레이닝 서브표현(positive training sub-expressions)의 세트를 확립하는 동작과,
    상기 변환 프로그램의 세트로부터 네거티브 트레이닝 서브표현(negative training sub-expressions)의 세트를 확립하는 동작과,
    상기 포지티브 및 네거티브 트레이닝 서브표현의 세트의 각각의 서브스트링 표현으로부터 상기 트레이닝 데이터를 생성하는 동작을 포함하는
    컴퓨터 구현 프로세스.
  6. 제 5 항에 있어서,
    상기 포지티브 및 네거티브 트레이닝 서브표현의 세트의 각각의 서브스트링 표현으로부터 트레이닝 데이터를 생성하는 상기 프로세스 동작은,
    하나 이상의 특징의 세트를 입력하는 동작- 상기 특징의 각각은 상기 출력 스트링 내의 서브스트링이 상기 포지티브 및 네거티브 트레이닝 서브표현의 세트의 서브스트링 표현에 의해 생성되는 지를 표시함 -과,
    상기 포지티브 및 네거티브 트레이닝 서브표현의 세트의 각각의 서브스트링 표현에 대해, 요소의 사전 규정된 순서를 포함하는 특징 벡터를 생성하는 동작- 클래스 레이블(class label)에 대해 예비되는 것을 제외하고, 각각의 요소가 상기 특징 중 하나와 각각 연관된 특징 값에 대응함 -
    을 포함하고,
    상기 특징 벡터를 생성하는 동작은,
    상기 특징의 각각에 대해 요소의 상기 사전 규정된 순서에 대응하는 순서로, 대응하는 특징 벡터 요소에 대해 고려 중인 상기 서브스트링 표현에 의해 생성된 상기 출력 스트링에서 상기 특징이 서브스트링으로 표시되는 경우 제 1 이진 값을 갖는 특징 값을 할당하고, 상기 대응하는 특징 벡터 요소에 대해 고려 중인 상기 서브스트링 표현에 의해 생성된 상기 출력 스트링에서 상기 특징이 서브스트링으로 표시되지 않는 경우 제 2 이진 값을 갖는 특징 값을 할당하는 동작과,
    상기 클래스 레이블에 대해 예비되는 상기 특징 벡터 요소에 대해, 상기 서브스트링 표현이 상기 포지티브 트레이닝 서브표현의 세트에 있는 경우 하나의 이진 값을 할당하고, 상기 서브스트링 표현이 상기 네거티브 트레이닝 서브표현의 세트에 있는 경우 다른 이진 값을 할당하는 동작을 포함하는
    컴퓨터 구현 프로세스.
  7. 제 5 항에 있어서,
    태스크 내의 입력-출력 예로부터 확립된 변환 프로그램의 세트로부터 포지티브 트레이닝 서브표현의 세트를 확립하는 상기 프로세스 동작은, 상기 태스크 내의 상기 입력-출력 예로부터 합성된 모든 변환 프로그램의 세트의 교집합에서 발견되는 각각의 서브표현을 포지티브 트레이닝 서브표현으로서 지정하는 동작을 포함하는
    컴퓨터 구현 프로세스.
  8. 제 7 항에 있어서,
    상기 태스크 내의 상기 입력-출력 예로부터 확립된 상기 변환 프로그램의 세트로부터 네거티브 트레이닝 서브표현의 세트를 확립하는 상기 프로세스 동작은, 포지티브 트레이닝 서브표현으로서 식별되지 않은 상기 변환 프로그램의 세트의 각각의 서브표현을 네거티브 트레이닝 서브표현으로서 지정하는 동작을 포함하는
    컴퓨터 구현 프로세스.
  9. 제 5 항에 있어서,
    정규 표현 및 위치 표현에 대한 랭킹 방식을 확립하는 상기 프로세스 동작은, 상기 포지티브 트레이닝 서브표현의 세트의 그 빈도에 근거하여 유한 수의 사전 정의된 토큰을 갖는 세트로부터 값을 취하는 출력 서브스트링을 생성하는 서브표현에 빈도 기반 스코어를 매핑하는 딕셔너리(dictionary)를 연산하는 동작을 포함하는
    컴퓨터 구현 프로세스.
  10. 제 2 항에 있어서,
    연결 표현에 대한 랭킹 방식을 확립하는 상기 프로세스 동작은, 연결 표현에서 발견되는 개별적인 어토믹 표현에 대한 스코어를 결합하는 동작을 포함하는
    컴퓨터 구현 프로세스.
KR1020157009902A 2012-10-17 2013-10-17 스트링 변환의 귀납적 합성을 위한 랭킹 기법 KR102129640B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/653,581 2012-10-17
US13/653,581 US9002758B2 (en) 2012-10-17 2012-10-17 Ranking for inductive synthesis of string transformations
PCT/US2013/065497 WO2014062948A2 (en) 2012-10-17 2013-10-17 Ranking for inductive synthesis of string transformations

Publications (2)

Publication Number Publication Date
KR20150070171A true KR20150070171A (ko) 2015-06-24
KR102129640B1 KR102129640B1 (ko) 2020-07-08

Family

ID=49517708

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157009902A KR102129640B1 (ko) 2012-10-17 2013-10-17 스트링 변환의 귀납적 합성을 위한 랭킹 기법

Country Status (6)

Country Link
US (1) US9002758B2 (ko)
EP (1) EP2909740B1 (ko)
JP (1) JP6285943B2 (ko)
KR (1) KR102129640B1 (ko)
CN (1) CN104737155B (ko)
WO (1) WO2014062948A2 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9002758B2 (en) * 2012-10-17 2015-04-07 Microsoft Technology Licensing, Llc Ranking for inductive synthesis of string transformations
US9880997B2 (en) * 2014-07-23 2018-01-30 Accenture Global Services Limited Inferring type classifications from natural language text
US9891895B2 (en) 2015-09-14 2018-02-13 Microsoft Technology Licensing, Llc User interaction models for disambiguation in programming-by-example
US10528328B2 (en) 2015-12-08 2020-01-07 Microsoft Technology Licensing, Llc Learning from input patterns in Programing-By-Example
US10095484B2 (en) 2015-12-15 2018-10-09 International Business Machines Corporation Automatic program synthesis using monadic second-order logic
US20180039693A1 (en) * 2016-08-05 2018-02-08 Microsoft Technology Licensing, Llc Learned data filtering
US10621195B2 (en) 2016-09-20 2020-04-14 Microsoft Technology Licensing, Llc Facilitating data transformations
US10706066B2 (en) 2016-10-17 2020-07-07 Microsoft Technology Licensing, Llc Extensible data transformations
US11892987B2 (en) 2016-10-20 2024-02-06 Microsoft Technology Licensing, Llc Automatic splitting of a column into multiple columns
US11620304B2 (en) 2016-10-20 2023-04-04 Microsoft Technology Licensing, Llc Example management for string transformation
US11256710B2 (en) 2016-10-20 2022-02-22 Microsoft Technology Licensing, Llc String transformation sub-program suggestion
US10776380B2 (en) 2016-10-21 2020-09-15 Microsoft Technology Licensing, Llc Efficient transformation program generation
US11372830B2 (en) 2016-10-24 2022-06-28 Microsoft Technology Licensing, Llc Interactive splitting of a column into multiple columns
US10846298B2 (en) 2016-10-28 2020-11-24 Microsoft Technology Licensing, Llc Record profiling for dataset sampling
US11170020B2 (en) 2016-11-04 2021-11-09 Microsoft Technology Licensing, Llc Collecting and annotating transformation tools for use in generating transformation programs
US11163788B2 (en) 2016-11-04 2021-11-02 Microsoft Technology Licensing, Llc Generating and ranking transformation programs
WO2018083670A1 (en) 2016-11-04 2018-05-11 Deepmind Technologies Limited Sequence transduction neural networks
US10698571B2 (en) * 2016-12-29 2020-06-30 Microsoft Technology Licensing, Llc Behavior feature use in programming by example
US10713429B2 (en) 2017-02-10 2020-07-14 Microsoft Technology Licensing, Llc Joining web data with spreadsheet data using examples
US10782939B2 (en) * 2017-08-07 2020-09-22 Microsoft Technology Licensing, Llc Program predictor
US10831451B2 (en) * 2017-12-01 2020-11-10 Microsoft Technology Licensing, Llc Synthesized programming-by-example programs
US11132180B2 (en) * 2018-01-05 2021-09-28 Microsoft Technology Licensing, Llc Neural-guided deductive search for program synthesis
CN110610450B (zh) * 2018-06-15 2023-05-05 伊姆西Ip控股有限责任公司 数据处理方法、电子设备和计算机可读存储介质
WO2020245993A1 (ja) * 2019-06-06 2020-12-10 富士通株式会社 情報処理プログラム、情報処理方法、および情報処理装置
EP3754564A1 (en) * 2019-06-21 2020-12-23 Fujitsu Limited Ising machine data input apparatus and method of inputting data into an ising machine
US11074048B1 (en) 2020-04-28 2021-07-27 Microsoft Technology Licensing, Llc Autosynthesized sublanguage snippet presentation
US11327728B2 (en) 2020-05-07 2022-05-10 Microsoft Technology Licensing, Llc Source code text replacement by example
US11900080B2 (en) 2020-07-09 2024-02-13 Microsoft Technology Licensing, Llc Software development autocreated suggestion provenance
US11875136B2 (en) 2021-04-01 2024-01-16 Microsoft Technology Licensing, Llc Edit automation using a temporal edit pattern
US11941372B2 (en) 2021-04-01 2024-03-26 Microsoft Technology Licensing, Llc Edit automation using an anchor target list

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319682A (ja) * 1994-05-20 1995-12-08 At & T Corp ソフトウエア発見システム
US20110302553A1 (en) * 2010-06-04 2011-12-08 Microsoft Corporation Generating text manipulation programs using input-output examples
US20120192051A1 (en) * 2011-01-26 2012-07-26 Microsoft Corporation Formatting data by example

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1388812A1 (en) 2002-07-04 2004-02-11 Ronald E. Dr. Kates Method for training a learning-capable system
US8799234B2 (en) 2010-07-12 2014-08-05 Microsoft Corporation Semantic entity manipulation using input-output examples
JP2007200263A (ja) * 2006-01-25 2007-08-09 Yasushi Suga 漢字辞書検索装置
US8060880B2 (en) * 2007-05-04 2011-11-15 Microsoft Corporation System using backward inter-procedural analysis for determining alternative coarser grained lock when finer grained locks exceeding threshold
US8181163B2 (en) 2007-05-07 2012-05-15 Microsoft Corporation Program synthesis and debugging using machine learning techniques
US8316345B2 (en) * 2007-06-01 2012-11-20 Microsoft Corporation Program abstraction based on program control
US8266598B2 (en) * 2008-05-05 2012-09-11 Microsoft Corporation Bounding resource consumption using abstract interpretation
US8719801B2 (en) * 2008-06-25 2014-05-06 Microsoft Corporation Timing analysis of concurrent programs
US8402439B2 (en) * 2008-06-27 2013-03-19 Microsoft Corporation Program analysis as constraint solving
US8271404B2 (en) * 2008-10-02 2012-09-18 Microsoft Corporation Template based approach to discovering disjunctive and quantified invariants over predicate abstraction
US8397221B2 (en) * 2008-10-07 2013-03-12 Microsoft Corporation Calculating resource bounds of programs manipulating recursive data structures and collections
US20100223213A1 (en) 2009-02-27 2010-09-02 Optillel Solutions, Inc. System and method for parallelization of machine learning computing code
US8249336B2 (en) * 2009-08-14 2012-08-21 Microsoft Corporation Learning string transformations from examples
US8752029B2 (en) * 2009-09-29 2014-06-10 Microsoft Corporation Computing a symbolic bound for a procedure
US9613115B2 (en) 2010-07-12 2017-04-04 Microsoft Technology Licensing, Llc Generating programs based on input-output examples using converter modules
CN101976233B (zh) * 2010-09-30 2012-11-14 北京新媒传信科技有限公司 基于序列模式的新词发现方法
US8484550B2 (en) * 2011-01-27 2013-07-09 Microsoft Corporation Automated table transformations from examples
US8825572B2 (en) * 2011-02-01 2014-09-02 Microsoft Corporation Program synthesis with existentially and universally quantified belief propagation using probabilistic inference
US8650207B2 (en) * 2011-12-02 2014-02-11 Microsoft Corporation Inductive synthesis of table-based string transformations
US9002758B2 (en) * 2012-10-17 2015-04-07 Microsoft Technology Licensing, Llc Ranking for inductive synthesis of string transformations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319682A (ja) * 1994-05-20 1995-12-08 At & T Corp ソフトウエア発見システム
US20110302553A1 (en) * 2010-06-04 2011-12-08 Microsoft Corporation Generating text manipulation programs using input-output examples
US20120192051A1 (en) * 2011-01-26 2012-07-26 Microsoft Corporation Formatting data by example

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
S. Gulwani et al., Spreadsheet data manupulation using examples, Comm. of the ACM, Vol. 55, no.8 pp.97-105 (2012.08.01) *
T. Lau et al., Programming by demonstration using version space algebra, Machine Learning, Vol. 53, no.1-2 (2003.01.01) *

Also Published As

Publication number Publication date
KR102129640B1 (ko) 2020-07-08
EP2909740A2 (en) 2015-08-26
US9002758B2 (en) 2015-04-07
CN104737155A (zh) 2015-06-24
US20140108305A1 (en) 2014-04-17
WO2014062948A2 (en) 2014-04-24
JP6285943B2 (ja) 2018-02-28
EP2909740B1 (en) 2019-04-24
WO2014062948A3 (en) 2014-11-20
JP2016502701A (ja) 2016-01-28
CN104737155B (zh) 2017-07-21

Similar Documents

Publication Publication Date Title
KR102129640B1 (ko) 스트링 변환의 귀납적 합성을 위한 랭킹 기법
US10997370B2 (en) Hybrid classifier for assigning natural language processing (NLP) inputs to domains in real-time
US10496749B2 (en) Unified semantics-focused language processing and zero base knowledge building system
US20140351228A1 (en) Dialog system, redundant message removal method and redundant message removal program
CN105389329B (zh) 一种基于群体评论的开源软件推荐方法
KR20130111211A (ko) 입-출력 예시를 사용한 텍스트 조작 프로그램 생성
JP7397903B2 (ja) インテリジェント対話方法、装置、電子機器及び記憶媒体
CN112328800A (zh) 自动生成编程规范问题答案的系统及方法
US8463591B1 (en) Efficient polynomial mapping of data for use with linear support vector machines
US11669691B2 (en) Information processing apparatus, information processing method, and computer readable recording medium
CN104391969A (zh) 确定用户查询语句句法结构的方法及装置
JP5980520B2 (ja) 効率的にクエリを処理する方法及び装置
Sales et al. Semeval-2017 task 11: end-user development using natural language
JP5355483B2 (ja) 略語完全語復元装置とその方法と、プログラム
CN110909174B (zh) 一种基于知识图谱的简单问答中实体链接的改进方法
CN116386895B (zh) 基于异构图神经网络的流行病舆情实体识别方法与装置
CN112199958A (zh) 概念词序列生成方法、装置、计算机设备及存储介质
WO2023103914A1 (zh) 文本情感分析方法、装置及计算机可读存储介质
CN116860991A (zh) 面向api推荐的基于知识图谱驱动路径优化的意图澄清方法
US10872122B2 (en) Knowledge management system and process for managing knowledge
WO2022262632A1 (zh) 网页搜索方法、装置及存储介质
CN107038148A (zh) Xml文档的解析方法及解析装置
Saha et al. A transformer based multi-task model for domain classification, intent detection and slot-filling
CN112182159A (zh) 一种基于语义表示的个性化检索式对话方法和系统
CN114490928B (zh) 一种语义搜索的实现方法、系统、计算机设备和存储介质

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right