KR101468201B1 - 문서들로부터 토픽들의 병렬 생성 - Google Patents

문서들로부터 토픽들의 병렬 생성 Download PDF

Info

Publication number
KR101468201B1
KR101468201B1 KR1020137032228A KR20137032228A KR101468201B1 KR 101468201 B1 KR101468201 B1 KR 101468201B1 KR 1020137032228 A KR1020137032228 A KR 1020137032228A KR 20137032228 A KR20137032228 A KR 20137032228A KR 101468201 B1 KR101468201 B1 KR 101468201B1
Authority
KR
South Korea
Prior art keywords
word
matrix
topic
processors
words
Prior art date
Application number
KR1020137032228A
Other languages
English (en)
Other versions
KR20140007004A (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 KR20140007004A publication Critical patent/KR20140007004A/ko
Application granted granted Critical
Publication of KR101468201B1 publication Critical patent/KR101468201B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/319Inverted lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/313Selection or weighting of terms for indexing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/36Creation of semantic tools, e.g. ontology or thesauri

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Machine Translation (AREA)
  • Multi Processors (AREA)

Abstract

강화된 병렬 Latent Dirichlet Allocation (PLDA+)를 위한, 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램들을 포함하는 방법들, 시스템들, 장치들이 개시된다. PLDA+ 시스템은, 다수의 문서들로부터 토픽들을 생성하도록 구성된 다수개의 프로세서들의 시스템이다. 다수의 프로세서들은 문서 프로세서들과 매트릭스 프로세서들이라는 2 개의 유형들로 지정된다. 문서들은 문서 프로세서들 사이에 분포된다. 생성된 토픽들은 매트릭스 프로세서들 사이에 분포된다. 문서 프로세서들과 매트릭스 프로세서들 상에서 수행되는 태스크들은 계산형 태스크(computation-bound tasks)와 통신형 태스크(communication-bound tasks)라는 2개 유형의 태스크들로 구분된다. 계산형 태스크들은 CPU에 집중되는 태스크(CPU intensive tasks)이며, 통신형 태스크은 네트워크에 집중되는 태스크(network intensive tasks)이다. 계산형 태스크들과 통신형 태스크들이 균형잡힌 방식으로 프로세서들에게 분배되도록 그리고 병렬로 수행되도록, 데이터 배치(data placement) 및 파이프라인 전략들이 채용된다.

Description

문서들로부터 토픽들의 병렬 생성{PARALLEL GENERATION OF TOPICS FROM DOCUMENTS}
본 발명은 문서(document) 프로세싱에 관한 발명이다.
전자 문서는 하나 이상의 토픽(topic: 이하, '토픽' 혹은 '주제' 라함)들을 가질 수 있다. 컴퓨터는 토픽 모델이라는 명칭으로 공지된 일 유형의 통계학적 모델을 이용하여 전자 문서로부터 하나 이상의 토픽들을 자동으로 추출할 수 있다. 토픽 모델의 일례는 Latent Dirichlet Allocation (LDA) 이다. LDA에 따르면, 토픽은 워드들의 확률 분포이다. 예를 들어, 얼룩무늬 고양이(tabby), 그르렁거림(purr), 및 새끼 고양이(kitten)라는 워드들에 관련된 특정한 확률 분포를 갖는 주제는, "고양이" 에 관한 주제가 될 수 있다. 컴퓨터는 예컨대, 문서에 포함된 tabby, purr, kitten 라는 워드들 각각의 확률 분포를 계산하는 것을 포함하여, 전자 문서를 분석할 수 있다. 계산된 확률 분포는 상기 전자 문서가 "고양이" 라는 주제와 관련된다라는 가능성(likelihood)을 나타낼 수 있다. 주제는 추상적이다(abstract). "고양이(cat)" 라는 워드는 추상적인 주제의 임의적인 라벨(label)이다
LDA에서, 각각의 문서는 K 토픽들의 혼합물로서 모델링되며, 여기서 각각의 토픽 k는 W-워드 어휘집(W-word vocabulary)에 대한 다항 분포(multinomial distribution) Φk 이다. 임의의 문서 dj 에 대하여, 그것의 토픽 혼합물 θj 는 파라미터 α를 갖는 디리끌레 프라이어(Dirichlet prior)로부터 유도된 확률 분포이다. dj 내의 각각의 ith 워드 xij 에 대하여, θj 로부터 토픽 zij = k 가 유도되며, 그리고 Φk 로부터 워드 xij 가 유도된다. 따라서, LDA를 위한 생성 연산은 다음과 같다.
Figure 112013111168253-pct00001
여기서, Dir(*)는 디리끌레 분포를 나타내며, α 및 β 각각은 디리끌레 프라이어 이다.
본 명세서에 설명된 기술들은 통상적인 병렬 Latent Dirichlet Allocation (Parallel LDA : PLDA)의 통신 병목현상(communication bottlenecks)을 감소시킬 수 있다. 좀더 상세히 설명하면, PLDA의 성능을 개선하기 위하여 계산형 태스크들과 통신형 태스크들이 병렬로 수행된다. 병렬 프로세싱에서, 계산형 태스크들은 통신형 태스크들을 마스킹(mask)하며, 따라서 통신형 태스크들의 프로세싱 시간은 토픽 생성의 전체 프로세싱 시간에 상당한 기여를 하지 않는다. 또한, 본 명세서에 설명된 기술들은 복수의 프로세서들 사이에서 유연한(flexible) 부하 밸런싱을 가능케하며, 뿐만 아니라 성능을 향상시킬 수 있다. 또한, PLDA를 포함하는 통상적인 토픽-추출 방법들은 종종, 각 프로세서의 메모리에 모든 워드-토픽 카운트들을 간직한다. 본 명세서에 설명된 기술들은 다수의 매트릭스 프로세서들에게 워드-토픽 매트릭스를 분배하는바, 따라서 각 프로세서에서 메모리 요구량을 감소시킬 수 있다.
강화된 병렬 Latent Dirichlet Allocation (PLDA+) 시스템 및 방법들이 설명된다. PLDA+ 시스템은 다수의 문서들로부터 토픽들을 생성하도록 된 다수의 프로세서들의 시스템이다. 다수의 프로세서들은 문서 프로세서들과 매트릭스 프로세서들 이라는 2개의 유형들로 지칭된다. 본 명세서에서, "프로세서"라는 용어는, 경우에 따라 문서 프로세서 혹은 매트릭스 프로세서에 의해서 수행되는 것으로 아래에 서술된 바와 같은 액션들을 수행하도록 된 컴퓨터를 나타낸다. 컴퓨터들은 컴퓨터 상에 설치된 소프트웨어, 펌웨어, 하드웨어, 혹은 이들의 조합에 의해서 이러한 액션들을 수행하도록 구성될 수도 있는바, 이들 소프트웨어 등은 동작시에 시스템으로 하여금 이러한 액션들을 수행하게 한다. 이와 유사하게, 하나 이상의 컴퓨터 프로그램들은 하나 이상의 컴퓨터들에 의해서 실행되는 때, 컴퓨터로 하여금 이러한 액션을 수행하게 하는 명령어들을 포함함에 의해서 특정 액션들을 수행하도록 설정될 수 있다.
문서들은 문서 프로세서들에게 분배된다. 생성된 토픽들은 매트릭스 프로세서들에게 분배된다. 문서 프로세서들과 매트릭스 프로세서들 상에서 수행되는 태스크들(tasks)은 계산형 태스크(computation-bound tasks)와 통신형 태스크(communication-bound tasks) 라는 2개 유형의 태스크들로 구분될 수 있다. 계산형 태스크들은 CPU에 집중되는 태스크(CPU intensive tasks)이며, 통신형 태스크은 네트워크에 집중되는 태스크(network intensive tasks)이다. 계산형 태스크들과 통신형 태스크들이 균형잡힌 방식으로 프로세서들에게 분배되도록 그리고 병렬로 수행되도록, 데이터 배치(data placement) 및 파이프라인 전략들이 채용될 수 있다.
일반적으로, 본 명세서에 서술된 본 발명의 일 양상은, 하나 이상의 문서 프로세서들과 다수의 매트릭스 프로세서들을 이용하여 하나 이상의 문서들의 세트로부터 워드-토픽 매트릭스를 추출하는 것을 포함하는 연산들로 구현될 수 있다. 워드-토픽 매트릭스는 하나 이상의 문서들의 세트의 다수의 토픽들을 포함한다. 각각의 토픽은 워드 세트의 하나 이상의 워드들에 의해서 적어도 부분적으로 정의된다. 하나 이상의 워드들 각각은 확률에 관련된다. 워드 세트는 하나 이상의 문서들의 세트의 워드 인덱스로부터 생성된다. 워드-토픽 매트릭스는, 하나 이상의 토픽들에 대응하는 제 1 차원(first dimension) 및 상기 워드 세트에 대응하는 제 2 차원에 의해서, 적어도 부분적으로 정의된다.
매트릭스 프로세서들은 적어도 제 1 매트릭스 프로세서와 제 2 매트릭스 프로세서을 포함한다. 제 1 매트릭스 프로세서는 워드 세트의 제 1 서브세트에 대응하는 워드-토픽 매트릭스의 제 1 부분을 저장 및 프로세싱하도록 구성된다. 제 2 매트릭스 프로세서는 워드 세트의 제 2 서브세트에 대응하는 워드-토픽 매트릭스의 제 2 부분을 저장 및 프로세싱하도록 구성된다.
하나 이상의 문서 프로세서들 각각은 토픽 추출 연산들 및 매트릭스 교환 연산들을 수행하도록 구성된다. 토픽 추출 연산들은, 제 1 매트릭스 프로세서에 저장된 워드-토픽 매트릭스의 제 1 부분을 이용하여 하나 이상의 제 1 토픽들에 대하여 하나 이상의 문서들의 세트를 샘플링하는 것을 포함한다. 제 1 토픽들은 상기 하나 이상의 문서들의 세트의 다수의 토픽들 중 적어도 일부를 포함할 수 있다. 매트릭스 교환 연산들은 페칭(fetching) 연산 혹은 업데이트 연산 중 적어도 하나를 포함한다. 페칭 연산은 하나 이상의 제 2 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는데 이용될 워드-토픽 매트릭스의 제 2 부분을 제 2 매트릭스 프로세서로부터 페칭하는 것을 포함한다. 제 2 토픽들은 상기 하나 이상의 문서들의 세트의 다수의 토픽들 중 적어도 일부를 포함할 수 있으며, 상기 제 1 토픽들과 동일할 수도 또는 다를 수도 있다. 업데이트 연산은, 제 2 서브세트 내의 워드에 대응하는 적어도 하나의 제 2 토픽을 추출하면, 추출된 제 2 토픽을 이용하여 상기 워드-토픽 매트릭스의 제 2 부분을 업데이트하도록 제 2 매트릭스 프로세서에게 요청하는 것을 포함한다.
이러한 실시예들 및 다른 실시예들은 다음의 피처들 중 하나 이상을 선택적으로 포함할 수 있다. 연산들은 워드 세트 내의 워드들을 원형 큐(circular queue)로 조직하는 것을 더 포함한다. 하나 이상의 문서 프로세서들은 다수의 프로세서들을 포함한다. 연산들은 원형 큐의 제 1 위치에 있는 워드를 이용하여 토픽 추출 연산들의 수행을 개시하도록 복수의 문서 프로세서들 중 제 1 문서 프로세서를 설정하는 것; 및 원형 큐의 제 2 위치에 있는 워드를 이용하여 토픽 추출 연산들의 수행을 개시하도록 복수의 문서 프로세서들 중 제 2 문서 프로세서를 설정하는 것을 더 포함하며, 제 1 위치는 제 2 위치와 다르다.
연산들은 가중화된 라운드 로빈 스케쥴(weighted round robin schedule)에 따라 상기 복수의 매트릭스 프로세서들에게 상기 워드 세트 내의 워드들을 할당하는 것을 더 포함할 수 있다. 가중화된 라운드 로빈 스케쥴에 따라 워드들을 할당하는 것은, 상기 워드 세트 내의 각 워드의 가중치를 결정하는 것; 상기 복수의 매트릭스 프로세서들 각각의 부하(load)를 결정하는 것; 상기 워드들의 가중치에 따라 상기 워드 세트 내의 워드들을 정렬시키는 것; 및 가장 큰 가중치를 갖는 워드를 가장 작은 부하를 갖는 매트릭스 프로세서에 반복적으로(iteratively) 할당하는 것을 포함할 수 있다. 워드 세트 내의 각 워드의 가중치를 결정하는 것은, 상기 워드가 상주하는 문서 프로세서들의 개수를 결정하는 것을 포함할 수 있다. 복수의 매트릭스 프로세서들 각각의 부하를 결정하는 것은, 상기 매트릭스 프로세서 상의 워드들의 가중치들의 합계를 결정하는 것을 포함할 수 있다.
연산들은 제 1 워드 번들(first word bundle) 및 제 2 워드 번들에 근거하여 토픽 추출 연산들을 수행하도록 상기 하나 이상의 문서 프로세서들 각각을 설정하는 것을 더 포함할 수 있다. 상기 제 1 워드 번들은 워드 세트의 제 1 서브세트에 대응할 수 있다. 상기 제 2 워드 번들은 워드 세트의 제 2 서브세트에 대응할 수 있다. 하나 이상의 제 1 토픽들에 대하여 하나 이상의 문서들의 세트를 샘플링하는 것은, 상기 하나 이상의 문서들의 세트에 대해서 깁스 샘플링(Gibbs sampling)을 수행하는 것을 포함한다.
본 명세서에 서술된 본 발명의 다른 양상은 워드-토픽 매트릭스의 제 1 부분을 제 1 매트릭스 프로세서에 할당하는 것을 포함하는 연산들로 구현될 수 있다. 상기 워드-토픽 매트릭스는 하나 이상의 문서들의 세트의 복수의 토픽들을 포함한다. 각각의 토픽은 워드 세트의 하나 이상의 워드들을 포함한다. 상기 하나 이상의 워드들 각각은 각각의 확률과 관련된다. 상기 워드 세트는 상기 하나 이상의 문서들의 세트의 워드 인덱스로부터의 워드들을 포함한다. 상기 연산들은 상기 워드-토픽 매트릭스의 제 2 부분을 제 2 매트릭스 프로세서에 할당하는 것을 포함한다. 상기 워드-토픽 매트릭스의 제 2 부분은 상기 워드-토픽 매트릭스의 제 1 부분과 다르다. 상기 연산들은 문서 프로세서 상에서, 토픽 추출 연산들을 수행하는 것을 포함한다. 토픽 추출 연산들은 상기 제 1 매트릭스 프로세서에 저장된 상기 워드-토픽 매트릭스의 제 1 부분을 이용하여 하나 이상의 제 1 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는 것을 포함한다. 상기 연산들은, 토픽 추출 연산들을 수행하는 것과 병렬로, 상기 문서 프로세서 상에서, 매트릭스 교환 연산들을 수행하는 것을 포함한다. 매트릭스 교환 연산들은, 페칭 연산들과 업데이트 연산들 중 적어도 하나를 포함한다. 페칭 연산들은 하나 이상의 제 2 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는데 이용될 상기 워드-토픽 매트릭스의 제 2 부분을 상기 제 2 매트릭스 프로세서로부터 페칭(fetching)하는 것을 포함한다. 업데이트 연산들은, 상기 제 2 서브세트 내의 워드에 대응하는 적어도 하나의 제 2 토픽을 추출하면, 추출된 제 2 토픽을 이용하여 상기 워드-토픽 매트릭스의 제 2 부분을 업데이트하도록 상기 제 2 매트릭스 프로세서에게 요청하는 것을 포함한다.
본 명세서에 설명된 기술들은 통상적인 병렬 Latent Dirichlet Allocation (Parallel LDA : PLDA)의 통신 병목현상(communication bottlenecks)을 감소시킬 수 있다. 좀더 상세히 설명하면, PLDA의 성능을 개선하기 위하여 계산형 태스크들과 통신형 태스크들이 병렬로 수행된다. 병렬 프로세싱에서, 계산형 태스크들은 통신형 태스크들을 마스킹(mask)하며, 따라서 통신형 태스크들의 프로세싱 시간은 토픽 생성의 전체 프로세싱 시간에 상당한 기여를 하지 않는다. 또한, 본 명세서에 설명된 기술들은 복수의 프로세서들 사이에서 유연한(flexible) 부하 밸런싱을 가능케하며, 뿐만 아니라 성능을 향상시킬 수 있다. 또한, PLDA를 포함하는 통상적인 토픽-추출 방법들은 종종, 각 프로세서의 메모리에 모든 워드-토픽 카운트들을 간직한다. 본 명세서에 설명된 기술들은 다수의 매트릭스 프로세서들에게 워드-토픽 매트릭스를 분배하는바, 따라서 각 프로세서에서 메모리 요구량을 감소시킬 수 있다.
본 명세서에 서술된 본 발명의 실시예들에 관한 세부 내용은 첨부된 도면들과 함께 아래에 설명될 것이다. 본 발명의 다른 피처들, 양상들, 및 장점들은 이들 설명, 도면 및 청구항으로부터 명확해질 것이다.
도1a는 PLDA 기술을 이용하여 문서들로부터 토픽들을 추출하기 위한 예시적인 프로세서를 도시한 블록도이다.
도1b는 예시적인 PLDA+ 시스템을 도시한 블록도이다.
도2는 데이터 배치 기법의 예시적인 토픽 분포 패턴을 도시한 블록도이다.
도3a 및 도3b는 프로세싱 파이프라인 기술들의 예시적인 이벤트 시퀀스들을 도시한 도면이다.
도4는 PLDA+ 시스템에서 예시적인 워드 번들링 기술들을 도시한 도면이다.
도5a 및 도5b는 PLDA+ 시스템에서의 다양한 프로세서들에서 데이터 배치를 도시한 블록도이다.
도6은 예시적인 PLDA+ 절차를 도시한 순서도이다.
도7은 파이프라인-기반의 깁스 샘플링을 수행하기 위한 예시적인 절차를 도시한 순서도이다.
도8은 PLDA+ 의 통신 체계를 도시한 블록도이다.
도9는 PLDA+ 시스템에서 프로세서들을 문서 프로세서들 혹은 매트릭스 프로세서들로 지정하는 기법들을 예시한 블록도이다.
도면들에서 유사한 도면부호들은 유사한 구성요소들을 나타낸다.
도1a는 PLDA+ 기술을 이용하여 문서들로부터 토픽들을 추출하기 위한 예시적인 프로세서를 도시한 블록도이다. PLDA+ 에서는, 문서들로부터 토픽들을 추출하기 위해 다수의 프로세서들이 이용된다. 프로세서(102)는 다수의 프로세서들을 대표하는 프로세서이다.
토픽 추출 연산들에서, 토픽들은 하나 이상의 워드-토픽 매트릭스들로 표현된다. 통상적인 PLDA 기술들은, 문서들로부터 토픽들을 추출하기 위해 다수의 프로세서들을 이용하는 경우, 전형적으로 2개의 특징들을 갖는다. 각각의 프로세서는 전체 워드-토픽 매트릭스를 보유한다. 각각의 프로세서는 다른 프로세서들 사이에서 전체 워드-토픽 매트릭스를 송신 및 수신한다. 이와 달리, PLDA+ 에서는, 문서들 및 워드-토픽 매트릭스들이 다수의 프로세서들에게 분배된다. 분배된 매트릭스들은 매트릭스 교환 연산들에서 프로세서들 사이에서 동기화된다. PLDA+ 에서는, 토픽 추출 연산들과 매트릭스 교환 연산들이 병렬로 수행되며, 따라서 연산들이 순차적으로(serially) 수행되는 통상적인 PLDA 기법들에 비하여, 계산 효율 및 통신 효율이 개선될 수 있다.
프로세서(102)는 D 개의 문서들로부터 토픽들을 추출하도록 구성되며, 여기서 D는 임의의 수이다. D 개의 문서들은 P 개의 프로세서들에게 분배된다. P 개의 프로세서들 중 하나인 프로세서(102)는 대략적으로 D/P 문서들을 보유한다. D 개의 문서들은 상기 문서들에 있는 워드들의 어휘집(vocabulary)에 대응한다. 어휘집은 W 개의 워드들을 포함한다. 프로세서(102)는 매트릭스(104)를 저장하며, 매트릭스(104)는 D/P 문서들과 W 개의 워드들 사이의 관련성(correspondence)을 나타낸다. 매트릭스(104)는 (D/P)-by-W 매트릭스이다.
프로세서(102)는 또한, 워드-토픽 매트릭스(106)를 저장한다. 워드-토픽 매트릭스(106)는 K 토픽들과 W-워드 어휘집 간의 관련성을 나타내는 매트릭스이다. 워드-토픽 매트릭스(106)는 K-by-W 매트릭스로서, 이는 하나의 차원(dimension)으로서 토픽들을 가지며 다른 하나의 차원으로서 워드들을 갖는다. 워드-토픽 매트릭스(106) 내의 각 요소는 해당 토픽 내의 워드들의 카운트를 나타낼 수 있다. 워드-토픽 매트릭스(106)는 D/P 문서들에 대해서 깁스(Gibbs) 샘플링을 다수회 반복(multiple iteration)함으로써 구성될 수 있다.
깁스 샘플링의 각각의 반복(iteration: '반복' 또는 '이터레이션' 이라 함) 이후에, 로컬(local) 워드-토픽 매트릭스들이 전세계적으로(globally) 동기화된다. 로컬 워드-토픽 매트릭스들은 프로세서(102)에 지역적으로(locally) 저장된 워드-토픽 매트릭스(106)를 포함한다. 워드-토픽 매트릭스(106)가 다른 프로세서들에 저장된 매트릭스들과 동기화되는 때에, 워드-토픽 매트릭스(106)는 전세계적으로 동기화된다.
도1b는 예시적인 PLDA+ 시스템을 도시한 블록도이다. PLDA+ 시스템(110)에서, 데이터 배치 및 프로세싱 파이프라인 기법들이 이용되어, 통상적인 PLDA에 비하여 분산 프로세싱의 성능을 개선시킬 수 있다.
하이 레벨로부터, PLDA+ 시스템(110)은 문서들로부터 토픽들을 추출하기 위하여, 다양한 프로세서들에게 부분적으로 분배된 다수의 매트릭스들을 보유한다. 다수의 매트릭스들은, 워드-토픽 매트릭스와 문서-토픽 매트릭스를 포함한다. 워드-토픽 매트릭스는 또한, 워드-토픽 카운트 매트릭스라고도 지칭되며, Cword 로 표기된다. 워드-토픽 매트릭스는 다수의 요소들을 갖는 데이터 구조이며, 각각의 요소 Cwk 는 토픽 k에 배정된 워드 w 의 개수이다. 문서-토픽 매트릭스는 또한 문서-토픽 카운트 매트릭스라고도 지칭되며, Cdoc 으로 표기된다. 문서-토픽 매트릭스는 다수의 요소들을 갖는 데이터 구조이며, 각각의 요소 Ckj 는 문서 dj 에 배정된 토픽 k 의 개수이다. 또한, PLDA+ 시스템(110)은 토픽 카운트 벡터 Ctopic 을 보유하며 토픽 카운트 벡터 Ctopic 의 각각의 구성요소 Ck 는 문서 컬렉션(document collection)에서 토픽 k 배정들(topic k assignments)의 개수이다.
하나의 변수 zij 의 현재 상태를 고려하면, 여기서 zij 는 워드 xij (이것은 문서 dj 내의 i 번째(ith) 워드이다)에 대한 토픽 배정을 나타내며, zij 의 조건부 확률은 다음과 같다.
Figure 112013111168253-pct00002
여기서, ¬ij 는 해당 워드가 카운트들에서 제외되었음을 나타내며, α 및 β 각각은 디리끌레 프라이어 이다. 식 (2)로부터 도출된 새로운 토픽에 zij 가 배정될 때마다, Cword, Cdoc, Ctopic 이 업데이트된다. 마르코프 체인(Markov chain)을 트레인하기 위한 충분한 샘플링 이터레이션 이후, θ 와 Φ 는 다음과 같이 계산된다.
Figure 112013111168253-pct00003
여기서, θkj 는 문서 j가 주어졌을 때의 토픽 k의 확률(probability of topic k given document j)을 나타내며, Φwk 는 토픽 k가 주어졌을 때의 워드 w의 확률(probability of word w given topic k)을 나타낸다.
PLDA+ 시스템(110)은 2개 유형의 프로세서들을 포함하는바, 문서 프로세서들(Pd 프로세서들)과 매트릭스 프로세서들(Pw 프로세서들)이 그것이다. 문서 프로세서들은 문서 보유, 깁스 샘플링 연산 수행, 및 통신 연산들을 포함하는 태스크들을 수행할 수 있는 프로세서들이다. D개의 문서들은 │Pd│ 문서 프로세서들에게 분배된다. 문서 프로세서(112)는 │Pd│ 프로세서들 중 하나이다. 문서 프로세서(112)는 대략 D /│Pd│문서들을 보유한다. 문서 프로세서(112)는 워드-문서 매트릭스(116)를 보유한다. 워드-문서 매트릭스(116)는, 문서 프로세서(112)의 D /│Pd│문서들과 D 개의 문서들의 W-워드 어휘집 사이의 관련성을 나타내는 매트릭스이다. 워드-문서 매트릭스(116)는, (D /│Pd│)-by-W 매트릭스이다.
매트릭스 프로세서들은 그 각각이, W-by-K 워드-토픽 매트릭스의 일부분을 보유하는 것을 포함하는 태스크들을 수행할 수 있는 프로세서들이다. W-by-K 워드-토픽 매트릭스는 │Pw│ 매트릭스 프로세서들에게 분배된다. 각각의 매트릭스 프로세서에는 W 워드의 어휘집의 서브세트가 할당된다. 매트릭스 프로세서(114)는 부분적인 워드-토픽 매트릭스(118)를 저장한다. 부분적인 워드-토픽 매트릭스(118)는 매트릭스 프로세서(114)에 할당된 어휘집의 서브세트에 대응하는 W-by-K 워드-토픽 매트릭스의 일부분을 포함한다. 부분적인 워드-토픽 매트릭스(118)의 워드 차원(word dimension)은 상기 어휘집의 서브세트에 대응한다. 워드 차원의 사이즈는, W의 값들과 매트릭스 프로세서들의 개수인 │Pw│에 의해서 결정된다. 부분적인 워드-토픽 매트릭스(118)의 토픽 차원(topic dimension)은 k 개의 토픽들에 대응한다. 따라서, 부분적인 워드-토픽 매트릭스(118)는 (W/│Pw│)-by-K 매트릭스이다.
문서 프로세서(112)는 깁스 샘플링을 반복적으로 수행한다. 깁스 샘플링의 각각의 이터레이션 동안, 문서 프로세서(112)는 3개의 스테이지들을 포함하는 토픽-발견 연산들에서 새로운 토픽을 워드에 배정한다. 상기 토픽-발견 연산들의 3개의 스테이지들은 다음과 같다. (1) 문서 프로세서(112)는 매트릭스 프로세서(114)로부터 워드의 토픽 분포를 페치한다; (2) 문서 프로세서(112)는 깁스 샘플링을 수행하고 그리고 새로운 토픽을 워드에 배정한다; (3) 문서 프로세서(112)는 상기 워드를 보유하고 있는 매트릭스 프로세서(매트릭스 프로세서 114 혹은 다른 매트릭스 프로세서)를 업데이트한다.
도2는 데이터 배치 기법들의 예시적인 토픽 분포 패턴들을 도시한 블록도이다. 문서 프로세서(202)(Pd0)는 하나 이상의 워드들 각각에게 하나 이상의 토픽들을 지정한다. 문서 프로세서(202)는 매트릭스 프로세서(204)와 통신하여 매트릭스 프로세서(204)에 의해서 보유되는 부분적인 워드-토픽 매트릭스를 동기화시킨다. 매트릭스 프로세서(204)는 매트릭스 프로세서(204)에 의해서 보유되는 부분적인 워드-토픽 매트릭스를 업데이트하는바, 매트릭스 프로세서(204)에 할당된 워드들의 서브세트 내의 워드들에게 배정된(문서 프로세서(202)에 의해서) 토픽들을 이용하여 업데이트한다.
문서 프로세서들(206, 208, 210)은 페치 연산들을 통해 매트릭스 프로세서(204)와 통신한다. 문서 프로세서들(206, 208, 210) 각각은 전체 K-by-K 워드-토픽 매트릭스가 아니라, 매트릭스 프로세서(204)에 저장된 부분적인 워드-토픽 매트릭스를 페치한다. 따라서, 업데이트된 부분적인 워드-토픽 매트릭스가 문서 프로세서들(206, 208, 210)에게 전파된다.
도3a 및 도3b는 프로세싱 파이프라인 기법들의 예시적인 이벤트 시퀀스들을 도시한 도면이다. 다음에 설명되는 바와 같이, PLDA+ 시스템에서는, 다수의 연산들이 병렬로 수행되며, 따라서 통상적인 PLDA 시스템에 비하여 전체적인 성능을 향상시킬 수 있다. 도3a 및 도3b 각각은 4개의 워드들 w1, w2, w3, 및 w4 에 대한 깁스 샘플링의 이벤트 시퀀스를 나타낸다. 도3a 및 도3b에서, "F" 라는 글자가 표기된 박스는 페치 연산을 나타내며, "U" 라는 글자가 표기된 박스는 업데이트 연산을, 그리고 "S" 라는 글자가 표기된 박스는 깁스 샘플링 연산을 나타낸다.
도3a는 샘플링 시간(Ts)이 페치 시간(Tf)과 업데이트 시간(Tu)의 합계보다 크거나 같은 경우(Ts >= Tf + Tu)를 예시한다. 샘플링 시간 Ts는, 프로세서가 깁스 샘플링 태스크를 수행하는데 걸리는 시간이며, 이것은 계산형 태스크(computation-bound task)이다. 페치 시간 Tf는 프로세서가 토픽 분포들을 페치하는데 걸리는 시간이다. 업데이트 시간 Tu는 프로세서가 토픽 분포들을 업데이트하는데 걸리는 시간이다. 토픽 분포들을 페칭 및 업데이트하는 것은 통신형 태스크(communication-bound task)이다.
도시된 일례에서, PLDA+ 시스템은 제 1 페치 연산(302)으로부터 시작하는바, 제 1 페치 연산(302)에서 문서 프로세서는 워드 w1의 토픽 분포를 매트릭스 프로세서로부터 페치한다. 이에 후속하여, 문서 프로세서는 워드 w1에 대해서 제 1 깁스 샘플링 연산(304)을 수행한다. 제 1 깁스 샘플링 연산(304)과 병렬로, 문서 프로세서는 제 2 페치 연산(306)을 수행하며, 제 2 페치 연산(306)에서 문서 프로세서는 워드 w2의 토픽 분포를 페치한다.
문서 프로세서가 워드 w1에 대한 제 1 깁스 샘플링 연산(304)을 종료한 이후, 문서 프로세서는 제 1 업데이트 연산(308)을 수행하며, 제 1 업데이트 연산(308)에서 문서 프로세서는 매트릭스 프로세서 상의 w1의 토픽 분포를 업데이트한다. w1의 토픽 분포를 업데이트하는 것은, 업데이트 요청을 매트릭스 프로세서에게 전송하는 것을 포함한다. 업데이트 요청은 제 1 깁스 샘플링 연산(304)의 결과들을 포함할 수 있다.
문서 프로세서가 제 1 깁스 샘플링 연산(304)을 종료한 이후, 문서 프로세서는 워드 w2에 대한 제 2 깁스 샘플링 연산(310)을 수행하며, 상기 제 2 연산(310)은 w1의 토픽 분포를 업데이트하는 것과 병렬로 수행된다. 하나의 연산이 수행되는 동안의 시간과 다른 하나의 연산이 수행되는 동안의 시간이 어느 정도 중첩된다면, 2개의 연산들은 병렬로 발생하는 것이라고 설명될 것이다. 문서 프로세서가 제 1 업데이트 연산(308)을 종료한 이후, 문서 프로세서는 워드 w3의 토픽 분포를 페치하기 위하여 제 3 페치 연산(312)을 수행한다. 문서 프로세서는 제 2 깁스 샘플링 연산(314)과 병렬로 제 3 페치 연산(312)을 수행한다. 이와 유사한 방식으로, 문서 프로세서는, 세번째 워드 w3에 대한 제 3 깁스 샘플링 연산(316), 제 4 페치 연산(318), 제 3 업데이트 연산(320), 제 4 깁스 샘플링 연산(322) 및 제 4 업데이트 연산(324)을 수행한다. Ts >= Tf + Tu 인 경우, PLDA+ 시스템이 W개의 워드들을 프로세싱하는데 걸리는 총 시간은 W*Ts + Tf + Tu 이다.
도3b는 샘플링 시간(Ts)이 페치 시간(Tf)과 업데이트 시간(Tu)의 합계보다 작은 경우(Ts < Tf + Tu)를 예시한다. 도시된 일례에서, PLDA+ 시스템은 제 1 페치 연산(332)로부터 시작하며, 제 1 페치 연산(332)에서 문서 프로세서는 워드 w1의 토픽 분포를 페치한다. 이에 후속하여, 문서 프로세서는 워드 w1에 대한 제 1 깁스 샘플링 연산(334)을 수행한다. 제 1 깁스 샘플링 연산(334)과 병렬로, 문서 프로세서는 제 2 페치 연산(336)을 수행하며, 제 2 페치 연산(336)에서 문서 프로세서는 워드 w2의 토픽 분포를 페치한다.
문서 프로세서가 워드 w1에 대한 제 1 깁스 샘플링 연산(334)을 종료한 이후, 문서 프로세서는 제 1 업데이트 연산(338)을 수행하며, 제 1 업데이트 연산(338)에서 문서 프로세서는 w1의 토픽 분포를 업데이트한다. 이와 병렬로, 문서 프로세서가 제 1 깁스 샘플링 연산(334)을 종료한 직후에, 문서 프로세서는 워드 w2에 대한 제 2 깁스 샘플링 연산(340)을 수행한다.
Ts < Tf + Tu 인 경우, 문서 프로세서는 제 2 깁스 샘플링 연산(340)을 종료한 이후에 제 2 업데이트 연산(342)을 수행한다. 이에 후속하여, 문서 프로세서는 제 3 페치 연산(346)을 수행하는바, 제 3 페치 연산(346)에서 문서 프로세서는 워드 w3의 토픽 분포를 페치한다. 다음으로, 문서 프로세서는 제 3 깁스 샘플링 연산(348)을 수행하며, 그리고 이와 병렬로, 제 4 페치 연산(350)을 수행하는바, 제 4 페치 연산(350)에서 문서 프로세서는 워드 w4의 토픽 분포를 페치한다. 제 3 깁스 샘플링 연산(348)을 종료한 이후에, 문서 프로세서는 제 3 업데이트 연산(352) 및 제 4 깁스 샘플링 연산(354)을 수행한다. 마지막으로, 문서 프로세서는 제 4 업데이트 연산(356)을 수행한다. Ts < Tf + Tu 인 경우, PLDA+ 시스템이 W개의 워드들을 프로세싱하는데 걸리는 총 시간은 W*Ts + Tf + Tu 보다 크다.
일부 구현예들에서, 깁스 샘플링 연산들, 페치 연산들, 및 업데이트 연산들은 가능한한 Ts >= Tf + Tu 가 되도록, 스케쥴링된다. 상기 스케쥴링은 워드 번들링 기법들 및 로우 레이턴시 통신 스케쥴링(low latency communication scheduling) 기법들을 이용하는바, 이는 가능한한 Ts >= Tf + Tu 임을 보장하기 위한 것이다. 워드 번들링을 이용하여, 깁스 샘플링 연산들이 워드들의 그룹에 대해서 수행되는데, 이는 Ts가 충분히 길어짐을 보장하기 위한 것이다. 로우 레이턴시 통신 스케쥴링 하에서 통신형 태스크들이 스케쥴링되는데, 통신형 태스크에 의해서 계산형 태스크가 최소한도로 지연되는 방식으로 통신형 태스크들이 스케쥴링된다. 워드 번들링 기법들과 로우 레이턴시 통신 스케쥴링은 다음에 상세히 설명될 것이다.
도4는 PLDA+ 시스템에서의 예시적인 워드 번들링 기법들을 도시한 도면이다. 설명의 편의를 위해서, 워드 번들링 기법들은 4개의 문서 프로세서들, Pd0 내지 Pd3을 참조하여 설명된다.
문서 프로세서들(Pd0 내지 Pd3)은 402a - 402d의 워드 순서로 깁스 샘플링을 수행할 수 있다. 문서 프로세서의 문서들에서 여러 번 출현하는 워드는 루프(loop)에서 프로세싱된다. 또한, 자주 출현하지 않는 워드들은 자주 출현하는 워드들과 번들되는데, 이는 Ts가 충분히 길어짐을 보장하기 위한 것이다. Tf + Tu 의 값이 알려진 경우, 각각의 깁스 샘플링 번들에서 프로세싱될 워드 출현들의 카운트가 결정될 수 있다. Tf + Tu 가 Ts 보다 짧아지도록 워드들이 번들되는데, 이는 마지막 깁스 샘플링 태스크가 완료되는 시간까지 페치가 완료될 확률을 최대화하기 위한 것이며, 따라서 대기 시간이 추가되는 것을 회피할 수 있다.
문서 프로세서들(Pd0 내지 Pd3) 각각은 문서 프로세서에게 분배된 문서들에 대한 워드 인덱스를 생성한다. 인덱스들 내의 워드들은 원형 큐(circular queue)(410)로 조직화된다. 문서 프로세서들(Pd0 내지 Pd3)은 원형 큐(410) 둘레를 돌면서 깁스 샘플링 연산들을 수행한다
다수의 문서 프로세서들에 의해서 동일한 워드가 동시에 액세스되는 것을 방지하기 위하여, 문서 프로세서들 각각은 다른 문서 프로세서들의 시작 위치들과는 다른 시작 위치에서 개시하도록 스케쥴링된다. 예를 들면, 워드 w0 내지 w7 을 포함하는 원형 큐(410)에서, 문서 프로세서 Pd0는 워드 w0 으로부터 첫번째 워드를 시작할 수 있으며, 문서 프로세서 Pd1는 워드 w2 로부터 첫번째 워드를 시작할 수 있으며, 문서 프로세서 Pd2는 워드 w4 로부터 첫번째 워드를 시작할 수 있으며, 문서 프로세서 Pd3는 워드 w6 으로부터 첫번째 워드를 시작할 수 있다.
서로 다른 문서 프로세서들이 원형 큐(410) 내의 서로 다른 위치들에서 시작하도록 스케쥴링하는 것에 추가하여, 부분적인 워드-토픽 매트릭스들이 매트릭스 프로세서들 상에서 원형으로(circular fashion) 분포된다. 부분적인 워드-토픽 매트릭스들의 원형 분포는, 통신 태스크가 문서 프로세서에서 수행되는 때, 다수의 매트릭스 프로세서들이 아니라 해당 매트릭스 프로세서에 의해서 상기 통신 태스크가 서빙될 수 있음을 보장한다.
도5a 및 도5b는 PLDA+ 시스템의 다양한 프로세서들에서 데이터 배치를 예시하는 도면이다. 도5a는 매트릭스 프로세서들 상의 워드 배치를 예시한다. 매트릭스 프로세서(506)는 문서 프로세서들로부터의 페치 및 업데이트 요청들에 응답하도록 구성된다. W-by-K 워드-토픽 매트릭스(502)는 워드들에 따라 다수의 매트릭스 프로세서들에게 분배된다. 이러한 분배 이후에, 각각의 매트릭스 프로세서는 워드들의 토픽 분포와 함께 대략 W/│Pw│워드들을 보유한다. 매트릭스 프로세서(506)는 W/│Pw│워드들과 함께 워드들의 토픽 분포를 (W/│Pw│)-by-K 매트릭스(504)로 저장할 수 있다.
워드 분포는 공간적인 부하 밸런싱을 획득하는데 활용될 수 있다. 매트릭스 프로세서(506) 및 다른 매트릭스 프로세서들 각각은 깁스 샘플링의 이터레이션 내의 거의 같은 수의 요청들을 처리하는데 이용될 수 있다
W-by-K 워드 토픽 매트릭스(502)를 다수의 매트릭스 프로세서들에게 분배하기 위하여, PLDA+ 시스템은 2개의 데이터 구조들 즉, 워드 가중치 데이터 구조 및 작업부하(workload) 데이터 구조를 보유한다. 워드 가중치 데이터 구조는 워드 가중치들을 저장하는 데이터 구조이다. 워드 Wi 가 상주하는 문서 프로세서들의 개수(이는 또한 워드의 가중치이다)는 mi 로 표기된다. W 워드들에 대하여, PLDA+ 시스템은 벡터
Figure 112013111168253-pct00004
을 보유한다. 작업부하 데이터 구조는 매트릭스 프로세서(506)의 작업부하 및 다른 매트릭스 프로세서들 각각의 작업부하에 관한 정보를 포함하는 데이터 구조이다. 매트릭스 프로세서(506)의 작업부하는 매트릭스 프로세서(506) 상의 모든 워드들의 가중치들의 합계로서 정의된다. 매트릭스 프로세서 Pwi 의 작업부하는 li 로 표기된다. 데이터 구조의 작업부하는
Figure 112013111168253-pct00005
로 표기되는 벡터를 포함한다.
일부 구현예들에서, 워드들은 독립적으로 그리고 균일하게(uniformly) 무작위로 매트릭스 프로세서들 상에 분배된다. 일부 구현예들에서, 가중화된 라운드-로빈 워드 배치(weighted round-robin word placement)가 이용될 수 있다. 가중화된 라운드-로빈 워드 배치에서, 워드들은 워드들의 가중치들에 의해서 오름차순 혹은 내림차순으로 정렬된다. W-워드 어휘집(예컨대, 워드 Wi)에서 가장 큰 가중치를 갖는 워드는, 매트릭스 프로세서(506)가 매트릭스 프로세서들 중에서 가장 작은 작업부하를 갖는 경우, 매트릭스 프로세서(506) 상에 위치된다. 이후, 매트릭스 프로세서(506)의 작업부하가 업데이트된다. 선택, 배치 및 업데이트 연산들은 모든 워드들이 배치될 때까지 반복된다.
PLDA+ 시스템이 매트릭스 프로세서(506) 상에 워드 토픽 분포들과 함께 워드들을 위치시킨 이후에, 매트릭스 프로세서(506)는 문서 프로세서들로부터 초기 워드-토픽 카운트들을 수신함으로써 그것의 책임있는(responsible) 워드-토픽 카운트 매트릭스
Figure 112013111168253-pct00006
를 생성한다. 이후, 매트릭스 프로세서(506)는 문서 프로세서들로부터의 요청들을 프로세스하기 시작한다. 문서 프로세서들로부터의 요청들은 3개의 유형들을 가질 수 있다.
- 페치(wi pw pd): 문서 프로세서 pd에 의한 워드 w 의 토픽 분포를 페칭하기 위한 요청. 상기 요청에 응답하여, 매트릭스 프로세서 pw는 w 의 토픽 분포 Cw│pw 를 반환할 것이며, 이것은 깁스 샘플링을 위하여 식(2)의
Figure 112013111168253-pct00007
로서 이용될 것이다.
- 업데이트 (w,
Figure 112013111168253-pct00008
, pw): pd 상의 업데이트 정보
Figure 112013111168253-pct00009
를 이용하여 워드 w의 토픽 분포를 업데이트하기 위한 요청. 매트릭스 프로세서 pw 는
Figure 112013111168253-pct00010
를 이용하여 w의 토픽 분포를 업데이트할 것이다. 업데이트 정보
Figure 112013111168253-pct00011
는 깁스 샘플링의 결과들을 포함한다.
- 페치(pw, pd): pd에 의한, 매트릭스 프로세서 pw 상의 전체 토픽 카운트들을 페칭하기 위한 요청. 매트릭스 프로세서 pw는 벡터로서
Figure 112013111168253-pct00012
pw 상의 모든 워드들의 토픽 분포들을 합계할 것이다. pd에 의해서 각각의 매트릭스 프로세서로부터 모든
Figure 112013111168253-pct00013
가 페치되면, 이들은 합계될 것이며 그리고 깁스 샘플링을 위하여 식(2)의
Figure 112013111168253-pct00014
로서 이용될 것이다.
매트릭스 프로세서(506)(알고리즘에서 pw 라고 지칭됨)에서 문서 프로세서들로부터의 요청들을 프로세싱하기 위한 예시적인 알고리즘이 아래의 리스트 1에 도시된다.
Figure 112013111168253-pct00015
리스트 1. 매트릭스 프로세서에서 문서 프로세서들로부터의 요청들을 프로세싱
일부 구현예들에서, 문서 프로세서들의 깁스 샘플링 동안에 모든 매트릭스 프로세서들로부터 전체 토픽 카운트들을 페칭하기 위한 최대 인터벌 intermax 의 값은, 어휘집 내의 워드들의 개수와 동등하게 설정된다.
매트릭스 프로세서(506)는, 매트릭스 프로세서(506)가 보유를 책임지고 있는 워드들에 관련된 모든 요청들을 핸들링한다. 상기 요청들이 적절한 시기에 서브된다는 점을 보장하기 위하여, PLDA+ 시스템은 우선순위 체계(priority scheme)를 채용하는데, 우선순위 체계에서는 상기 요청들이 요청 데드라인에 의해서 정렬된다. 우선순위 체계의 로컬 워드 프로세싱 순서에 따라, 문서 프로세서는, 문서 프포세서로부터 전송되는 페치 요청의 통신 완료 데드라인을 설정할 수 있다. 통신 완료 데드라인은 시간 제한이며, 상기 시간 제한을 넘어가는 요청들은 무시될 수 있다. 통신 완료 데드라인은 다양한 시간 단위들로 표현될 수 있다. 문서 프로세서가 그것의 요청들을 매트릭스 프로세서들로 전송하는 경우, 상기 데드라인은 요청 헤더에 설정된다. 매트릭스 프로세서(506)는 대기중인 요청들의 데드라인들에 기초하여 대기중인 요청들을 처리한다.
도5b는 문서 프로세서들 상의 문서 배치를 예시한다. 워드-문서 매트릭스(510)는 워드들과 문서들 간의 맵핑을 나타내는데 이용된다. 워드-문서 매트릭스(510)는 하나의 워드로부터 하나 이상의 문서들을 식별하는데 이용될 수 있는 반전된 인덱스(inverted index)이다.
워드-문서 매트릭스(510)는 다수의 문서 프로세서들에게 일부분씩 분배될 수 있다. 워드-문서 매트릭스(510)의 일부(512)는 D /│Pd│개의 문서들 및 W 개의 워드들을 포함할 수 있다. 문서 프로세서(516)는 상기 일부(512)에 해당하는 부분적인 문서-워드 매트릭스(514)를 저장할 수 있다. 부분적인 문서-워드 매트릭스(514)는 (D /│Pd│)-by- W 매트릭스이다.
도6은 예시적인 PLDA+ 절차(600)를 도시한 순서도이다. PLDA+ 시스템은 D 문서들을 하나 이상의 문서 프로세서들에게 할당한다(602). PLDA+ 시스템은 균형잡힌 방식으로 문서들을 문서 프로세서들에게 할당한다. 이러한 것은 랜덤 문서 할당을 채용함으로써 성취된다. 각각의 문서 프로세서는 대략 D /│Pd│ 개의 문서들을 할당받는다. 이러한 할당 단계의 시간 복잡성(time complexity)은 0(D) 이다.
PLDA+ 시스템은 문서 프로세서 각각의 문서들에 대해서 반전된 인덱스를 생성한다. 반전된 인덱스는 워드들에 기초하는 인덱스이다. 각각의 워드 w에 대한 인덱스 구조는 다음과 같다.
w → {(d1,z1),(d1,z2),(d2,z1),……} (4)
워드 w가 문서 d1 에서 n 번 출현하는 경우, n 엔트리들이 존재한다. 일부 구현예들에서, PLDA+ 시스템은 d1에서 워드 w의 모든 출현들을 하나의 엔트리, (d1, {z1,z2}) 로 기록한다.
PLDA+ 시스템은 어휘집 내의 워드들을 깁스 샘플링을 위한 워드 번들들로 그룹화한다. 워드들을 워드 번들들로 그룹화하는 것은, 깁스 샘플링 연산의 지속기간(duration)이 통신 연산을 마스킹하기에 충분히 길다라는 것을 보장할 수 있다. 깁스 샘플링 연산의 지속기간 내에서 통신 태스크들이 완료될 수 있는 경우, 깁스 샘플링 연산의 지속기간이 통신 연산을 마스킹하기에 충분히 길다. 만일, 워드가 문서 프로세서 상에서 오직 한번만 출현한다면, 그 워드에 대해 깁스 샘플링을 수행하는 것은, 그 워드의 토픽 분포를 페치 및 업데이트하고 그리고 마스킹이 없는 경우에 요구되는 시간 보다 훨씬 짧은 시간을 필요로 할 것이다.
마스킹을 보장하기 위하여, PLDA+ 시스템은 다수의 워드들을 워드 번들로 조합하며, 따라서 통신 시간은 깁스 샘플링 시간의 더 긴 지속기간에 의해서 마스크될 수 있다. 워드 번들 내의 모든 워드들은 동일한 매트릭스 프로세서 상에 배치되며, 따라서 하나의 요청이 워드 번들 내의 모든 워드들에 대한 토픽 분포들을 페치할 수 있다.
문서 프로세서의 경우, PLDA+ 시스템은 워드의 매트릭스 프로세서들에 따라 워드들을 번들한다. PLDA+ 시스템은 동일한 매트릭스 프로세서 상에 배치된 워드들을 워드들이 출현한 횟수에 기초하여, 내림차순으로 정렬시킨다. 다음으로 PLDA+ 시스템은 정렬된 워드 리스트를 생성한다. 이후, PLDA+ 시스템은 워드 리스트의 헤드로부터 높은 빈도수의 워드를 반복적으로(iteratively) 선택하고 그리고 워드 리스트의 꼬리(tail)로부터 낮은 빈도수의 하나 이상의 워드들을 반복적으로 선택한다. PLDA+ 시스템은 선택된 높은 빈도수의 워드와 선택된 하나 이상의 낮은 빈도수의 워드들을 워드 번들로 그룹화한다. 이와 같이 워드 번들들이 구성되며, 매트릭스 프로세서는 토픽 분포들을 페치하라는 요청에 응답하여 워드 번들 내의 모든 워드들을 반환할 것이다.
PLDA+ 시스템은 통신 병목현상을 최소화하도록 워드 번들들을 스케쥴링한다(606). 일부 구현예들에서, PLDA+ 시스템은 랜덤 스케쥴링 체계에 따라 워드 번들들을 스케쥴링한다. 랜덤 스케쥴링 체계에서 어휘집 내의 워드들은 원형 큐로 저장된다. 깁스 샘플링 동안, 시계 방향 혹은 시계 반대 방향의 순서로 상기 큐로부터 워드들이 선택된다. 각각의 문서 프로세서는 원형 큐 내의 서로 다른 옵셋에서 시작하는데, 이는 동일한 매트릭스 프로세서에 대한 동시 액세스를 회피하기 위한 것이다. 다수의 요청들이 동일한 시간에 도달하는 경우, 일부 매트릭스 프로세서들에서 병목현상이 형성될 수 있다. 따라서, 몇몇 문서 프로세서들은 깁스 샘플링이 시작할 수 있기 전에 응답을 대기할 필요가 있을 수도 있다. 이러한 대기를 감소시키기 위하여, 도4a를 참조하여 서술된 바와 같이 각각의 요청에 데드라인을 등록한다. 매트릭스 프로세서는 요청들의 데드라인에 따라 요청들을 프로세싱한다. 요청의 데드라인이 경과했다면, 매트릭스 프로세서는 그 요청을 폐기할 수 있다. 깁스 샘플링의 확률론적인 성질(stochastic nature) 때문에, 깁스 샘플링의 라운드를 가끔씩(occasionally) 빼먹는 것은 전체 성능에 영향을 미치지 않는다.
PLDA+ 시스템은 종료 조건이 충족될 때까지 파이프라인-기반의 깁스 샘플링을 반복적으로 수행한다(608). 단계 603에서 생성된 반전된 인덱스를 이용하여, 문서 프로세서가 워드 w의 토픽 분포를 매트릭스 프로세서로부터 각각 페치한 이후, 문서 프로세서는 그 문서 프로세서 상의 w의 모든 인스턴스들에 대해서 깁스 샘플링을 수행한다. 깁스 샘플링 이후, 문서 프로세서는 업데이트된 정보를 해당 매트릭스 프로세서로 다시 전송한다.
문서 프로세서 상에 하나의 워드가 다수회 출현하는 경우, 2개의 통신 태스크들이 수행되는데, 하나의 페치이고 하나는 업데이트이다. 식 (2)에 도시된 바와 같이, 문서 dj 내의 주어진 워드 xij = w 에 대한 새로운 토픽을 계산 및 지정하기 위하여, PLDA+ 시스템은 워드 w에 대한 워드-토픽 분포
Figure 112013111168253-pct00016
, 토픽 카운트 벡터
Figure 112013111168253-pct00017
, 및 문서 dj 에 대한 문서-토픽 분포
Figure 112013111168253-pct00018
를 획득한다. 문서 프로세서는 상기 문서-토픽 분포
Figure 112013111168253-pct00019
를 보유한다. 매트릭스 프로세서는 최신의(up-to-date) 워드-토픽 분포
Figure 112013111168253-pct00020
를 보유한다. PLDA+ 시스템은 전체 매트릭스 프로세서들에 대한 글로벌 토픽 카운트 벡터
Figure 112013111168253-pct00021
를 수집한다. 문서 내의 w 에 대한 새로운 토픽을 지정하기 전에, 문서 프로세서는 매트릭스 프로세서들로부터
Figure 112013111168253-pct00022
Figure 112013111168253-pct00023
를 요청한다.
Figure 112013111168253-pct00024
Figure 112013111168253-pct00025
를 패칭한 이후, 문서 프로세서는 깁스 샘플링을 수행하며, 그리고 w의 출현들에 대해 새로운 토픽들을 지정한다. 다음으로, 문서 프로세서는 워드 w의 업데이트된 토픽 분포를, 책임있는(responsible) 매트릭스 프로세서로 반환한다.
문서 프로세서들은 서로 다른 프로세싱 속도를 가질 수 있다. PLDA+ 시스템에서, 고속의 문서 프로세서는, 느린 문서 프로세서를 기다릴 필요 없이, 파이프라인-기반의 깁스 샘플링의 다음번 라운드를 시작할 수 있다. 파이프라인-기반의 깁스 샘플링에 대한 세부 내용은 도7을 참조하여 설명될 것이다.
도7은 파이프라인-기반의 깁스 샘플링을 수행하기 위한 예시적인 절차를 도시한 순서도이다. 문서 프로세서 pd는 깁스 샘플링을 위해 전체 토픽 카운트들을 페치한다(702). 문서 프로세서 pd는 깁스 샘플링을 위해 전체 토픽 분포들
Figure 112013111168253-pct00026
을 페치한다(702). 단계 702에서, 문서 프로세서 pd는 하나 이상의 페치 요청들 fetch(pw,pd)을 각각의 매트릭스 프로세서에게 제출한다. 문서 프로세서 pd는 매트릭스 프로세서들로부터 전체 토픽 카운트들
Figure 112013111168253-pct00027
, pw ∈ {0,...,│Pw│-1} 을 포함하는 응답들을 수신한다. 문서 프로세서 pd는, 다음의 공식을 이용하여 각각의 매트릭스 프로세서로부터 전체 토픽 카운트들을 합산함으로써
Figure 112013111168253-pct00028
을 획득한다.
Figure 112013111168253-pct00029
(5)
문서 프로세서 pd는 F 워드 번들들을 선택하고(704) 그리고 워드들의 토픽 분포들을 페치하기 위하여 스레드 풀(thread pool)에 F 워드 번들들을 집어넣는다. 문서 프로세서는 하나 이상의 페치 요청들을 매트릭스 프로세서에게 제출한다. F 워드 번들들 각각은 페치 요청에 대응한다. 문서 프로세서 pd는 매트릭스 프로세서로부터 상기 요청에 대한 응답을 수신한다. 상기 응답은 토픽 분포들을 포함한다. 상기 응답 내의 토픽 분포들은 대기 큐(waiting queue)에 저장된다. 스레드 풀은 요청들을 전송할 수 있으며 그리고 반환된 응답들을 병렬로 프로세싱할 수 있다. 다수의 요청들이 동시에 전송될 수 있다. 동시에 전송된 요청들은 같은 데드라인을 지정받을 수 있다.
문서 프로세서 pd는 깁스 샘플링을 수행하도록 대기 큐로부터 워드들의 토픽 분포들을 선택한다(706). 페치 요청에 대한 응답이 매트릭스 프로세서로부터 반환되면, 문서 프로세서 pd는 깁스 샘플링을 즉시 시작할 수 있다. 일부 구현예들에서, 프리-페치(pre-fetch) 요청들의 개수는 F 와 같다. 깁스 샘플링을 기다리는 워드들의 토픽 분포들을 대기 큐 Qpd 가 항상 반환할 확률을 최대화하도록, F의 값이 설정된다. 일부 실시예들에서, F는 스레드 풀의 스레드들의 개수보다 커지도록 설정된다.
문서 프로세서 pd는 업데이트된 문서 분포들을 문서 프로세서 pd의 스레드 풀 내에 넣는다(708). 문서 프로세서 pd의 스레드 풀은 하나 이상의 업데이트 요청들을 매트릭스 프로세서들로 보낸다. 문서 프로세서 pd는 새로운 워드 번들을 선택하고(710), 그리고 상기 새로운 워드 번들을 스레드 풀에 넣는다. 문서 프로세서는 업데이트 조건이 충족되는지를 판별한다(712). 업데이트 조건이 충족되지 않는 경우, 문서 프로세서 pd는 단계 706으로 진행하여 다른 워드에 대한 깁스 샘플링을 시작한다. 만일, 업데이트 조건이 충족된다면, 문서 프로세서는 새로운 전체 토픽 카운트들을 페치한다(714).
도8은 PLDA+ 의 통신 체계를 예시한 블록도이다. 문서 프로세서(802)는 요청 서브시스템(804)을 포함한다. 요청 서브시스템(804)은 하나 이상의 페치 요청들(806)을 생성하도록 구성된다. 요청들(806) 각각은, 다수의 워드들 w1, w2,..,wn 을 포함하는 워드 번들을 포함한다. 페치 요청들(806)은 스레드 풀(808) 내에 넣어진다. 스레드 풀(808)은 페치 요청들(806)을 매트릭스 프로세서들(810a, 810b, 810c)로 전송한다. 매트릭스 프로세서들(810a, 810b, 810c)은 워드 번들 내의 워드들에 대한 토픽 분포들(812)을 반환한다.
스레드 풀(808)은 몇몇 비지(busy) 매트릭스 프로세서들에 의해 블록킹을 방지하는데 이용될 수 있다. 스레드 풀(808) 내에 수용될 수 있는 스레드들의 최대 개수를 나타내는 스레드 캡 값(thread cap value) R은, 매트릭스 프로세서들(810a, 810b, 810c)로 전송될 수 있는 병렬 요청들의 개수의 한도를 정한다(cap). R 값은 네트워크 환경에 의해서 결정될 수 있다. RR 값의 세팅은 깁스 샘플링 동안 경험적으로(empirically) 조정될 수 있다. 하나의 이터레이션 동안의 대기 시간이 긴 경우, R 값은 다음 이터레이션에서 증가될 수 있다. 일부 구현예들에서, 도7을 참조하여 설명된 바와 같은, 워드 번들들의 개수 F는 R 값과 비례하도록 설정된다. 예를 들면, 몇몇 구현예들에서, F는 R 값의 2배가 되도록 설정된다.
문서 프로세서(802)는 토픽 분포 서스시스템(814)을 포함한다. 토픽 분포 서스시스템(814)은 토픽 분포(812)를 대기중인 큐에 집어넣는다. 토픽 분포 서스시스템(814)은 깁스 샘플링을 위해 대기중인 큐의 헤드로부터 토픽 분포들을 검색한다.
문서 프로세서(802)는 깁스 샘플링 서스시스템(816)을 포함한다. 깁스 샘플링 서스시스템(816)은 깁스 샘플링을 수행하고, 토픽 분포들(812)을 업데이트하고, 그리고 업데이트된 토픽 분포들(818)을 생성하도록 구성된다. 업데이트된 토픽 분포들(818)은 하나 이상의 업데이트 요청들 내에 들어가며 그리고 스레드 풀(808)로 제출된다. 스레드 풀(808)은 업데이트 요청들을 매트릭스 프로세서들(810a, 810b, 810c)로 전송한다.
도9는 PLDA+ 시스템에서 프로세서들을 문서 프로세서들 혹은 매트릭스 프로세서들로 지정하는 기법들을 예시한 블록도이다. PLDA+ 시스템은 다수의 프로세서들(902)을 포함한다. 상기 프로세서들(902) 중 하나 이상이 문서 프로세서들(904)로 지정된다. 상기 프로세서들(902) 중 나머지는 매트릭스 프로세서들(906)로 지정된다. 문서 프로세서들(904)의 개수에 대한 매트릭스 프로세서들(906)의 개수의 비율,
Figure 112013111168253-pct00030
은, 깁스 샘플링에 대한 평균 시간 및 워드-토픽 매트릭스의 통신에 대한 평균 시간에 기초하여 계산될 수 있다. 전체 데이터세트에 대한 깁스 샘플링의 총 시간이 Ts 인 경우, 하나의 프로세서로부터 다른 하나의 프로세서로 모든 워드들의 토픽 분포들을 이송(transfer)시키는데 걸리는 통신 시간은 Tt 이다. 문서 프로세서(904)의 경우, 샘플링 시간은 Ts /│Pd│가 될 것이다. 워드들의 토픽 분포들은 동시에 매트릭스 프로세서(906)로 이송된다. 이송 시간은 Ts /│Pw│ 이다. 깁스 샘플링 연산들은 다음의 조건하에서페칭 및 업데이팅 연산들을 마스킹한다:
Figure 112013111168253-pct00031
(6)
Ts =
Figure 112013111168253-pct00032
이고(여기서,
Figure 112013111168253-pct00033
는 워드의 모든 인스턴스들에 대한 평균 샘플링 시간이며), Tt =
Figure 112013111168253-pct00034
=
Figure 112013111168253-pct00035
(여기서,
Figure 112013111168253-pct00036
Figure 112013111168253-pct00037
는 워드에 대한 평균 페칭 및 업데이트 시간이며)인 경우, 문서 프로세서들(902)의 개수에 대한 매트릭스 프로세서들(906)의 개수의 비율은 다음과 같이 결정될 수 있다:
Figure 112013111168253-pct00038
(7)
여기서,
Figure 112013111168253-pct00039
,
Figure 112013111168253-pct00040
Figure 112013111168253-pct00041
는 조그마한 데이터세트에 대해 PLDA+ 를 수행함으로써 획득될 수 있으며 그 이후 적절한
Figure 112013111168253-pct00042
값을 경험적으로 설정할 수 있다.
본 명세서에 서술된 본 발명의 실시예들과 동작들은, 명세서에 개시된 구조들 및 이들과 구조적으로 등가인 것들, 혹은 이들의 하나 이상의 조합들을 포함하여, 디지털 전자 회로, 혹은 컴퓨터 소프트웨어, 펌웨어, 혹은 하드웨어에서 구현될 수 있다. 본 명세서에 개시된 발명 주제의 구현형태들은 하나 이상의 컴퓨터 프로그램 제품으로서, 즉, 데이터 처리 장치에 의한 실행 또는 이 장치의 동작 제어를 위하여 컴퓨터 저장매체에 인코딩된 컴퓨터 프로그램 명령어의 하나 이상의 모듈로서 구현될 수 있다. 이와 달리 또는 이에 덧붙여, 프로그램 명령어는, 데이터 처리 장치에 의한 실행을 위해 적절한 수신 장치로 전송하기 위하여 정보를 인코딩하기 위해 인공적으로 생성된 전달 신호(예컨대, 기계에서 생성된 전기적, 광학적, 또는 전자기적 신호)에 인코딩될 수 있다. 컴퓨터 저장매체는 컴퓨터 판독가능 저장장치, 컴퓨터 판독가능 저장 회로기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 장치, 또는 이들 중 하나 이상의 조합이거나 이들 내에 포함될 수 있다. 또한, 컴퓨터 저장매체가 전달 신호는 아니지만, 컴퓨터 저장매체는 인공적으로 생성된 전달 신호에 인코딩된 컴퓨터 프로그램 명령어의 소스 또는 목적이 될 수 있다. 컴퓨터 저장매체는 또한, 하나 이상의 개별적 물리 구성품 또는 매체(예를 들어, 다수의 CD, 디스크, 또는 기타 저장장치)이거나 이들 내에 포함될 수 있다.
본 명세서에 설명된 연산들은 하나 이상의 컴퓨터 판독가능 저장장치에 저장되어 있는 또는 다른 소스로부터 받은 데이터에 대해서 데이터 처리 장치가 수행하는 연산으로서 실현될 수 있다.
용어 "데이터 처리 장치"는 데이터를 프로세싱하기 위한 모든 종류의 장치들, 디바이스, 및 머신들을 포괄하는바, 예를 들어 프로그래머블 프로세싱 유닛, 컴퓨터, 시스템온칩(SOC), 퍼스널 컴퓨터 시스템, 데스크탑 컴퓨터, 랩탑, 노트북, 넷북 컴퓨터, 메인프레임 컴퓨터 시스템, 휴대용 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 어플리케이션 서버, 저장 다바이스, 카메라, 캠코더, 셋탑 박스, 모바일 디바이스, 비디오 게임 콘솔, 휴대용 비디오 게임 디바이스와 같은 소비자 전자 디바이스, 스위치, 모뎀, 라우터와 같은 주변기기기, 혹은 일반적으로 임의 유형의 컴퓨팅 혹은 전자 디바이스 혹은 전술한 것들의 조합을 포함한다. 상기 장치는 특수 목적의 로직 회로, 예를 들어, FPGA(필드 프로그래머블 게이트 어레이) 또는 ASIC(주문형 집적회로)을 포함할 수 있다. 이 장치는 또한, 하드웨어 뿐만 아니라, 예를 들어, 문제의 컴퓨터 프로그램을 위한 실행 환경을 만드는 코드, 예컨대, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스플랫폼 실행시간(cross-platform runtime) 환경, 가상 머신, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 상기 장치 및 실행 환경은 웹 서비스, 분산 컴퓨팅, 그리드 컴퓨팅 인프라스트럭쳐 등, 다양한 컴퓨팅 모델 인프라스트럭쳐를 실현할 수 있다.
컴퓨터 프로그램(또는, 프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트, 또는 코드라고도 함)은 임의 형식의 프로그래밍 언어(컴파일 또는 해독된 언어, 선언형 언어, 또는 절차형 언어를 포함)로 작성할 수 있으며, 그것은 독립 실행형 프로그램, 또는 모듈, 컴포넌트, 서브루틴, 객체 또는 기타 컴퓨팅 환경에서 사용하기에 적합한 형태를 포함하는 임의의 형태로 설치될 수 있다. 컴퓨터 프로그램은 파일 시스템 내의 파일에 해당될 수 있지만 반드시 그럴 필요는 없다. 프로그램은, 다른 프로그램 또는 데이터를 갖고 있는 파일의 일부(예를 들면, 마크업 언어 문서에 저장된 하나 이상의 스크립트)에, 문제의 프로그램에 전속한 하나의 파일에, 또는 다수의 협력작용하는 파일(예를 들면, 하나 이상의 모듈, 서브 프로그램, 또는 코드의 일부가 저장된 파일들)에 저장될 수 있다. 컴퓨터 프로그램은, 하나의 컴퓨터에서 실행되도록, 또는 한 장소에 위치하는 다수의 컴퓨터에서 또는 여러 장소에 분산되어 통신 네트워크로 서로 연결된 다수의 컴퓨터에서 실행되도록 설치할 수 있다.
본 명세서에서 설명한 프로세스와 로직 흐름은, 입력 데이터를 연산하여 출력을 생성하는 기능을 수행하는 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래머블 프로세서에 의해 수행될 수 있다. 또한 이 프로세스 및 로직 흐름은 특수 목적의 로직 회로, 예를 들면, FPGA(필드 프로그래머블 게이트 어레이) 또는 ASIC(주문형 집적회로)에 의해서 실시될 수 있으며, 또한 이로써 장치가 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서의 예를 들면, 범용 및 특수 목적 마이크로프로세서 모두와, 임의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 들 수 있다. 일반적으로, 프로세서는 읽기 전용 메모리(ROM) 또는 랜덤 액세스 메모리(RAM) 또는 이들 모두로부터 명령어와 데이터를 받게 된다. 컴퓨터의 필수 구성요소는 명령어에 따라 작업을 수행하는 프로세서와, 명령어와 데이터를 저장하는 하나 이상의 메모리 장치이다. 또한 일반적으로 컴퓨터는 데이터를 저장하는 하나 이상의 대용량 저장장치(예를 들어, 자기식, 광 자기식, 또는 광학식 디스크)를 포함하거나, 데이터를 받고 전달하기 위해 기능적으로 연결되거나, 또는 둘 다 해당될 것이다. 그러나 컴퓨터가 이러한 장치를 가질 필요는 없다. 또한, 컴퓨터는 다른 장치, 가령 몇 가지 예를 들면, 휴대 전화, 개인 디지털 보조기(PDA), 휴대형 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS) 수신기, 또는 휴대형 저장장치(가령, USB 플래시 드라이브) 등에 내장될 수도 있다. 컴퓨터 프로그램 명령어와 데이터를 저장하기에 적합한 장치에는 모든 형태의 비휘발성 메모리, 매체, 및 메모리 장치(예를 들어, 반도체 메모리 소자(EPROM, EEPROM, 플래시 메모리 소자 등), 자기 디스크(내장 하드디스크 또는 탈착식 디스크), 광자기 디스크, 그리고 CD ROM과 DVD-ROM 디스크 등)이 포함된다. 프로세서와 메모리는 특수 목적의 로직 회로에 의해 제공될 수 있고, 또는, 이 회로 안에 프로세서와 메모리가 통합될 수 있다.
사용자와의 인터랙션을 위해 본 명세서에 기재된 발명 주제의 구현형태들은, 사용자에게 정보를 표시해주는 디스플레이 장치(가령, CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터)와, 사용자가 컴퓨터에 입력할 수 있는 키보드 및 포인팅 장치(예를 들면, 마우스 또는 트랙볼)를 갖는 컴퓨터에서 실현될 수 있다. 사용자와의 인터랙션을 위한 다른 형태의 장치들도 또한 사용될 수 있다. 예를 들면, 사용자에게 전달되는 피드백은 임의 형태의 감각 피드백(예컨대, 시각 피드백, 청각 피드백, 또는 촉각 피드백)일 수 있고, 사용자의 입력 형태도 음향, 음성, 접촉 등 임의의 형태일 수 있다. 또한 컴퓨터는 사용자에게 문서를 전송함으로써 그리고 사용자가 사용하는 장치로부터 문서를 수신함으로써, 사용자와 인터랙트할 수 있다(예를 들어, 사용자의 클라이언트 장치의 웹브라우저에서 수신한 요청에 응답하여 이 웹브라우저로 웹페이지를 전송).
본 명세서에 기재된 발명 주제의 구현형태들은, 백엔드 구성부(예를 들어 데이터 서버로서), 미들웨어 구성부(예를 들어 애플리케이션 서버), 프런트엔드 구성부(예를 들어 사용자가 본 발명의 실시예와 인터랙션할 수 있는 그래픽 사용자 인터페이스 또는 웹브라우저가 있는 클라이언트 컴퓨터), 또는 상기 하나 이상의 백엔드, 미들웨어, 프런트엔드 구성부의 임의의 조합이 포함되는 컴퓨팅 시스템에서 실현될 수 있다. 시스템의 구성부들은 임의의 형식으로 또는 디지털 데이터 통신을 매개로(예컨대, 통신 네트워크) 상호 연결될 수 있다. 통신 네트워크의 예로는, 근거리 네트워크(LAN), 광역 네트워크(WAN), 인터네트워크(예를 들어, 인터넷), 피어투피어 네트워크(예를 들어, 애드혹 피어투피어 네트워크)가 있다.
컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 원격지에 떨어져 있으며 보통은 통신 네트워크를 통해 인터랙트한다. 클라이언트와 서버의 관계는, 각각의 컴퓨터에서 실행되고 서로 간에 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 이루어진다. 일부 구현형태에서는 (예를 들어, 클라이언트 장치와 인터랙트하는 사용자에 데이터를 표시해주고 사용자로부터 사용자 입력을 수신하기 위한 목적으로서), 서버가 데이터(예를 들어 HTML 페이지)를 클라이언트 장치로 전송한다. 클라이언트 장치에서 생성된 클라이언트로부터의 데이터(예를 들어, 사용자 인터랙션의 결과)는 서버가 수신할 수 있다.
전자 문서(간결함을 위하여 간단히 문서라고 지칭될 것이다)는 파일에 해당할 수도 있지만 반드시 그럴 필요는 없다. 문서는 다른 문서들을 보유하고 있는 파일의 일부에, 해당 문서에 전용되는 하나의 파일에 혹은 다수개의 협조 파일들에 저장될 수 있다.
본 명세서에 많은 구체적인 실시상의 세부 사항들이 기재되어 있지만, 이들은 본 발명의 범위 또는 청구사항을 제한하는 것으로 해석하면 안 되고, 구체적인 발명의 특정 구현형태들에 한정된 특징을 설명한 것으로 해석해야 한다. 본 명세서에서 별도의 구현형태들로서 설명한 특정 특징들을 조합하여 하나의 구현형태로 실현할 수도 있고, 반대로, 하나의 구현형태로서 설명한 다양한 특징들을 별도로 다수의 구현형태들로 또는 임의의 적절한 하위조합으로 실현할 수도 있다. 덧붙여, 위에서는 특징들을, 특정 조합에서 작용하는 것으로 그리고 심지어는 그렇게 최초로 청구된 것으로 설명하고 있지만, 어느 경우에는, 청구된 조합으로부터 하나 이상의 특징을 떼어낼 수 있으며, 청구된 조합으로부터 하위조합 또는 하위조합의 변형조합을 도출할 수도 있다.
마찬가지로, 동작(기능 또는 연산들)을 특정 순서로 도면에 도시하였지만, 원하는 결과를 얻기 위하여 동작을 도시된 특정 순서대로 또는 순차로 수행해야 하는 것으로 이해하거나 도시된 동작을 모두 수행해야 하는 것으로 이해해서는 안된다. 특정 상황에서는 멀티태스킹(다중작업)과 병렬처리가 유리할 수 있다. 또한, 위에서 설명한 구현형태들에서의 각종 시스템 구성부를 분리한다고 하여 모든 구현형태에서 이러한 분리를 필요로 한다고 이해해서는 안되며, 설명한 프로그램 구성부와 시스템은 일반적으로, 하나의 소프트웨어 제품에 함께 통합하거나 다수의 소프트웨어 제품으로 패키지화할 수 있음을 이해해야 한다.
지금까지 본 발명 주제의 특정 구현형태들을 설명하였다. 다른 구현형태들도 이하의 특허청구범위 내에 포함된다. 어떤 경우에는, 청구범위에서 인용한 행위를 다른 순서로 수행하여서도 여전히 원하는 결과를 얻을 수 있을 것이다. 또한, 첨부 도면에 도시된 프로세스는, 원하는 결과를 얻기 위해서, 반드시 도시된 특정 순서로 또는 순차적으로 수행해야 하는 것은 아니다. 특정 실시에서는, 다중작업 및 병렬처리가 유리할 수 있다.

Claims (38)

  1. 방법으로서,
    하나 이상의 문서 프로세서들과 복수의 매트릭스 프로세서들을 이용하여 하나 이상의 문서들의 세트로부터 워드-토픽 매트릭스(word-topic matrix)를 추출하는 단계를 포함하며, 상기 워드-토픽 매트릭스는 상기 하나 이상의 문서들의 세트의 복수의 토픽들을 포함하고,
    상기 토픽들 각각은 워드 세트의 하나 이상의 워드들에 의해서 적어도 부분적으로 정의되며, 상기 하나 이상의 워드들 각각은 각각의 확률과 관련되고, 상기 워드 세트는 상기 하나 이상의 문서들의 세트의 워드 인덱스로부터의 워드들을 포함하며;
    상기 워드-토픽 매트릭스는 상기 하나 이상의 토픽들에 대응하는 제 1 차원(dimension) 및 상기 워드 세트에 대응하는 제 2 차원에 의해서 적어도 부분적으로 정의되며;
    상기 워드가 상주하는 문서 프로세서들의 개수를 결정하여 상기 워드 세트 내의 각 워드의 가중치를 결정하고, 상기 복수의 매트릭스 프로세서들 각각의 부하(load)를 결정하고, 상기 워드들의 가중치에 따라 상기 워드 세트 내의 워드들을 정렬(sorting)하고, 가장 큰 가중치를 갖는 워드를 가장 작은 부하를 갖는 매트릭스 프로세서에 반복적으로(iteratively) 할당함으로써, 상기 워드 세트 내의 워드들이 상기 복수의 매트릭스 프로세서들에게 할당되며;
    상기 매트릭스 프로세서들은,
    상기 워드 세트의 제 1 서브세트에 대응하는 워드-토픽 매트릭스의 제 1 부분을 저장 및 프로세스하도록 프로그램된 제 1 매트릭스 프로세서; 및
    상기 워드 세트의 제 2 서브세트에 대응하는 워드-토픽 매트릭스의 제 2 부분을 저장 및 프로세스하도록 프로그램된 제 2 매트릭스 프로세서를 포함하고, 상기 제 1 서브세트는 상기 제 2 서브세트와 다르며,
    상기 하나 이상의 문서 프로세서들 각각은 매트릭스 교환 연산들과 병렬로 토픽 추출 연산들을 수행하도록 프로그램되며,
    상기 토픽 추출 연산들은 상기 제 1 매트릭스 프로세서에 저장된 상기 워드-토픽 매트릭스의 제 1 부분을 이용하여 하나 이상의 제 1 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는 것을 포함하며;
    상기 매트릭스 교환 연산들은,
    하나 이상의 제 2 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는데 이용될 상기 워드-토픽 매트릭스의 제 2 부분을 상기 제 2 매트릭스 프로세서로부터 페칭(fetching)하는 것; 혹은
    상기 제 2 서브세트 내의 워드에 대응하는 적어도 하나의 제 2 토픽을 추출하면, 추출된 제 2 토픽을 이용하여 상기 워드-토픽 매트릭스의 제 2 부분을 업데이트하도록 상기 제 2 매트릭스 프로세서에게 요청하는 것 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 문서 프로세서들은 복수의 프로세서들을 포함하며; 그리고
    상기 방법은,
    상기 워드 세트 내의 워드들을 원형 큐(circular queue)로 조직하는 단계;
    상기 원형 큐의 제 1 위치에 있는 워드를 이용하여 토픽 추출 연산들의 수행을 개시하도록 상기 복수의 문서 프로세서들 중 제 1 문서 프로세서를 설정하는 단계; 및
    상기 원형 큐의 제 2 위치에 있는 워드를 이용하여 토픽 추출 연산들의 수행을 개시하도록 상기 복수의 문서 프로세서들 중 제 2 문서 프로세서를 설정하는 단계
    를 더 포함하며,
    상기 제 1 위치는 상기 제 2 위치와 다른 것을 특징으로 하는 방법.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 복수의 매트릭스 프로세서들 각각의 부하를 결정하는 단계는,
    상기 매트릭스 프로세서 상의 워드들의 가중치들의 합계를 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    제 1 워드 번들(first word bundle) 및 제 2 워드 번들에 근거하여 토픽 추출 연산들을 수행하도록 상기 하나 이상의 문서 프로세서들 각각을 설정하는 단계를 더 포함하며,
    상기 제 1 워드 번들은 상기 워드 세트의 제 1 서브세트에 대응하고, 상기 제 2 워드 번들은 상기 워드 세트의 제 2 서브세트에 대응하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 하나 이상의 제 1 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는 것은, 상기 하나 이상의 문서들의 세트에 대해서 깁스 샘플링(Gibbs sampling)을 수행하는 것을 특징으로 하는 방법.
  9. 시스템으로서,
    하나 이상의 문서 프로세서들과 복수의 매트릭스 프로세서들을 포함하며, 상기 시스템은,
    상기 하나 이상의 문서 프로세서들과 복수의 매트릭스 프로세서들을 이용하여 하나 이상의 문서들의 세트로부터 워드-토픽 매트릭스(word-topic matrix)를 추출하는 것을 포함하는 연산들을 수행하도록 구성되며, 상기 워드-토픽 매트릭스는 상기 하나 이상의 문서들의 세트의 복수의 토픽들을 포함하고,
    상기 토픽들 각각은 워드 세트의 하나 이상의 워드들에 의해서 적어도 부분적으로 정의되며, 상기 하나 이상의 워드들 각각은 확률과 관련되고, 상기 워드 세트는 상기 하나 이상의 문서들의 세트의 워드 인덱스로부터의 워드들을 포함하며;
    상기 워드-토픽 매트릭스는 상기 하나 이상의 토픽들에 대응하는 제 1 차원 및 상기 워드 세트에 대응하는 제 2 차원에 의해서 적어도 부분적으로 정의되며;
    상기 워드가 상주하는 문서 프로세서들의 개수를 결정하여 상기 워드 세트 내의 각 워드의 가중치를 결정하고, 상기 복수의 매트릭스 프로세서들 각각의 부하(load)를 결정하고, 상기 워드들의 가중치에 따라 상기 워드 세트 내의 워드들을 정렬(sorting)하고, 가장 큰 가중치를 갖는 워드를 가장 작은 부하를 갖는 매트릭스 프로세서에 반복적으로(iteratively) 할당함으로써, 상기 워드 세트 내의 워드들이 상기 복수의 매트릭스 프로세서들에게 할당되며;
    상기 매트릭스 프로세서들은,
    상기 워드 세트의 제 1 서브세트에 대응하는 워드-토픽 매트릭스의 제 1 부분을 저장 및 프로세스하도록 프로그램된 제 1 매트릭스 프로세서; 및
    상기 워드 세트의 제 2 서브세트에 대응하는 워드-토픽 매트릭스의 제 2 부분을 저장 및 프로세스하도록 프로그램된 제 2 매트릭스 프로세서를 포함하고,
    상기 하나 이상의 문서 프로세서들 각각은 토픽 추출 연산들과 매트릭스 교환 연산들을 수행하도록 프로그램되고, 상기 토픽 추출 연산들은 상기 매트릭스 교환 연산들과 병렬로 수행되며;
    상기 토픽 추출 연산들은 상기 제 1 매트릭스 프로세서에 저장된 상기 워드-토픽 매트릭스의 제 1 부분을 이용하여 하나 이상의 제 1 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는 것을 포함하며;
    상기 매트릭스 교환 연산들은,
    하나 이상의 제 2 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는데 이용될 상기 워드-토픽 매트릭스의 제 2 부분을 상기 제 2 매트릭스 프로세서로부터 페칭(fetching)하는 것; 혹은
    상기 제 2 서브세트 내의 워드에 대응하는 적어도 하나의 제 2 토픽을 추출하면, 추출된 제 2 토픽을 이용하여 상기 워드-토픽 매트릭스의 제 2 부분을 업데이트하도록 상기 제 2 매트릭스 프로세서에게 요청하는 것 중 적어도 하나를 포함하는 것을 특징으로 하는 시스템.
  10. 제9항에 있어서,
    상기 하나 이상의 문서 프로세서들은 복수의 프로세서들을 포함하며; 그리고
    상기 연산들은:
    상기 워드 세트 내의 워드들을 원형 큐(circular queue)로 조직하는 것;
    상기 원형 큐의 제 1 위치에 있는 워드를 이용하여 토픽 추출 연산들의 수행을 개시하도록 상기 복수의 문서 프로세서들 중 제 1 문서 프로세서를 설정하는 것; 및
    상기 원형 큐의 제 2 위치에 있는 워드를 이용하여 토픽 추출 연산들의 수행을 개시하도록 상기 복수의 문서 프로세서들 중 제 2 문서 프로세서를 설정하는 것을 더 포함하며,
    상기 제 1 위치는 상기 제 2 위치와 다른 것을 특징으로 하는 시스템.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 제9항에 있어서,
    상기 복수의 매트릭스 프로세서들 각각의 부하를 결정하는 것은,
    상기 매트릭스 프로세서상의 워드들의 가중치들의 합계를 결정하는 것을 포함하는 시스템.
  15. 프로그램이 기록된 기록 매체로서, 상기 프로그램은 하나 이상의 문서 프로세서들과 복수의 매트릭스 프로세서들로 하여금 하나 이상의 문서들의 세트로부터 워드-토픽 매트릭스를 추출하는 것을 포함하는 연산들을 수행하게 하며,
    상기 워드-토픽 매트릭스는 상기 하나 이상의 문서들의 세트의 복수의 토픽들을 포함하고,
    상기 토픽들 각각은 워드 세트의 하나 이상의 워드들에 의해서 적어도 부분적으로 정의되며, 상기 하나 이상의 워드들 각각은 확률과 관련되고, 상기 워드 세트는 상기 하나 이상의 문서들의 세트의 워드 인덱스로부터 생성되며;
    상기 워드-토픽 매트릭스는 상기 하나 이상의 토픽들에 대응하는 제 1 차원 및 상기 워드 세트에 대응하는 제 2 차원에 의해서 적어도 부분적으로 정의되며;
    상기 워드가 상주하는 문서 프로세서들의 개수를 결정하여 상기 워드 세트 내의 각 워드의 가중치를 결정하고, 상기 복수의 매트릭스 프로세서들 각각의 부하(load)를 결정하고, 상기 워드들의 가중치에 따라 상기 워드 세트 내의 워드들을 정렬(sorting)하고, 가장 큰 가중치를 갖는 워드를 가장 작은 부하를 갖는 매트릭스 프로세서에 반복적으로(iteratively) 할당함으로써, 상기 워드 세트 내의 워드들이 상기 복수의 매트릭스 프로세서들에게 할당되며;
    상기 매트릭스 프로세서들은,
    상기 워드 세트의 제 1 서브세트에 대응하는 워드-토픽 매트릭스의 제 1 부분을 저장 및 프로세스하도록 프로그램된 제 1 매트릭스 프로세서; 및
    상기 워드 세트의 제 2 서브세트에 대응하는 워드-토픽 매트릭스의 제 2 부분을 저장 및 프로세스하도록 프로그램된 제 2 매트릭스 프로세서를 포함하고,
    상기 하나 이상의 문서 프로세서들 각각은 토픽 추출 연산들과 매트릭스 교환 연산들을 수행하도록 프로그램되고, 상기 토픽 추출 연산들은 상기 매트릭스 교환 연산들과 병렬로 수행되며;
    상기 토픽 추출 연산들은 상기 제 1 매트릭스 프로세서에 저장된 상기 워드-토픽 매트릭스의 제 1 부분을 이용하여 하나 이상의 제 1 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는 것을 포함하며;
    상기 매트릭스 교환 연산들은,
    하나 이상의 제 2 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는데 이용될 상기 워드-토픽 매트릭스의 제 2 부분을 상기 제 2 매트릭스 프로세서로부터 페칭(fetching)하는 것; 혹은
    상기 제 2 서브세트 내의 워드에 대응하는 적어도 하나의 제 2 토픽을 추출하면, 추출된 제 2 토픽을 이용하여 상기 워드-토픽 매트릭스의 제 2 부분을 업데이트하도록 상기 제 2 매트릭스 프로세서에게 요청하는 것 중 적어도 하나를 포함하는 것을 특징으로 하는 기록 매체.
  16. 제15항에 있어서,
    상기 하나 이상의 문서 프로세서들은 복수의 프로세서들을 포함하며; 그리고
    상기 연산들은,
    상기 워드 세트 내의 워드들을 원형 큐(circular queue)로 조직하고;
    상기 원형 큐의 제 1 위치에 있는 워드를 이용하여 토픽 추출 연산들의 수행을 개시하도록 상기 복수의 문서 프로세서들 중 제 1 문서 프로세서를 설정하고; 및
    상기 원형 큐의 제 2 위치에 있는 워드를 이용하여 토픽 추출 연산들의 수행을 개시하도록 상기 복수의 문서 프로세서들 중 제 2 문서 프로세서를 설정하는 것을 더 포함하며,
    상기 제 1 위치는 상기 제 2 위치와 다른 것을 특징으로 하는 기록 매체.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 제15항에 있어서,
    상기 복수의 매트릭스 프로세서들 각각의 부하를 결정하는 것은,
    상기 매트릭스 프로세서 상의 워드들의 가중치들의 합계를 결정하는 것을 포함하는 기록 매체.
  21. 제15항에 있어서,
    상기 연산들은,
    제 1 워드 번들(first word bundle) 및 제 2 워드 번들에 근거하여 토픽 추출 연산들을 수행하도록 상기 하나 이상의 문서 프로세서들 각각을 설정하는 것을 더 포함하며,
    상기 제 1 워드 번들은 상기 워드 세트의 제 1 서브세트에 대응하고, 상기 제 2 워드 번들은 상기 워드 세트의 제 2 서브세트에 대응하는 것을 특징으로 기록 매체.
  22. 제15항에 있어서,
    상기 하나 이상의 제 1 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는 것은, 상기 하나 이상의 문서들의 세트에 대해서 깁스 샘플링(Gibbs sampling)을 수행하는 것을 특징으로 하는 기록 매체.
  23. 하나 이상의 컴퓨터들에 의해서 실행되는 방법으로서,
    워드-토픽 매트릭스의 제 1 부분을 제 1 매트릭스 프로세서에 할당하는 단계 -상기 워드-토픽 매트릭스는 하나 이상의 문서들의 세트의 복수의 토픽들을 포함하고, 각각의 토픽은 워드 세트의 하나 이상의 워드들을 포함하며, 상기 하나 이상의 워드들 각각은 각각의 확률과 관련되고, 상기 워드 세트는 상기 하나 이상의 문서들의 세트의 워드 인덱스로부터의 워드들을 포함하며- ;
    상기 워드-토픽 매트릭스의 제 2 부분을 제 2 매트릭스 프로세서에 할당하는 단계 -상기 워드-토픽 매트릭스의 제 2 부분은 상기 워드-토픽 매트릭스의 제 1 부분과 다르고, 상기 워드가 상주하는 문서 프로세서들의 개수를 결정하여 상기 워드 세트 내의 각 워드의 가중치를 결정하고, 상기 복수의 매트릭스 프로세서들 각각의 부하(load)를 결정하고, 상기 워드들의 가중치에 따라 상기 워드 세트 내의 워드들을 정렬(sorting)하고, 가장 큰 가중치를 갖는 워드를 가장 작은 부하를 갖는 매트릭스 프로세서에 반복적으로(iteratively) 할당함으로써, 상기 워드 세트 내의 워드들이 상기 복수의 매트릭스 프로세서들에게 할당되며 - ;
    문서 프로세서 상에서, 토픽 추출 연산들을 수행하는 단계 -상기 토픽 추출 연산들은 상기 제 1 매트릭스 프로세서에 저장된 상기 워드-토픽 매트릭스의 제 1 부분을 이용하여 하나 이상의 제 1 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는 것을 포함하며- ; 및
    상기 토픽 추출 연산들을 수행하는 것과 병렬로, 상기 문서 프로세서 상에서, 매트릭스 교환 연산들을 수행하는 단계를 포함하며,
    상기 매트릭스 교환 연산들은,
    하나 이상의 제 2 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는데 이용될 상기 워드-토픽 매트릭스의 제 2 부분을 상기 제 2 매트릭스 프로세서로부터 페칭(fetching)하는 것; 혹은
    상기 제 2 서브세트 내의 워드에 대응하는 적어도 하나의 제 2 토픽을 추출하면, 추출된 제 2 토픽을 이용하여 상기 워드-토픽 매트릭스의 제 2 부분을 업데이트하도록 상기 제 2 매트릭스 프로세서에게 요청하는 것 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  24. 삭제
  25. 삭제
  26. 삭제
  27. 제23항에 있어서,
    상기 문서 프로세서에서, 제 1 워드 번들 및 제 2 워드 번들에 근거하여 토픽 추출 연산들을 수행하는 단계를 더 포함하며,
    상기 제 1 워드 번들은 상기 워드 세트의 제 1 서브세트에 대응하고, 상기 제 2 워드 번들은 상기 워드 세트의 제 2 서브세트에 대응하는 것을 특징으로 하는 방법.
  28. 제23항에 있어서,
    상기 하나 이상의 제 1 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는 것은, 상기 하나 이상의 문서들의 세트에 대해서 깁스 샘플링(Gibbs sampling)을 수행하는 것을 특징으로 하는 방법.
  29. 프로그램이 기록된 기록 매체로서, 상기 프로그램은 하나 이상의 컴퓨터들로 하여금,
    워드-토픽 매트릭스의 제 1 부분을 제 1 매트릭스 프로세서에 할당하는 것 -상기 워드-토픽 매트릭스는 하나 이상의 문서들의 세트의 복수의 토픽들을 포함하고, 각각의 토픽은 워드 세트의 하나 이상의 워드들을 포함하며, 상기 하나 이상의 워드들 각각은 각각의 확률과 관련되고, 상기 워드 세트는 상기 하나 이상의 문서들의 세트의 워드 인덱스로부터의 워드들을 포함하며- ;
    상기 워드-토픽 매트릭스의 제 2 부분을 제 2 매트릭스 프로세서에 할당하는 것 -상기 워드-토픽 매트릭스의 제 2 부분은 상기 워드-토픽 매트릭스의 제 1 부분과 다르며, 상기 워드가 상주하는 문서 프로세서들의 개수를 결정하여 상기 워드 세트 내의 각 워드의 가중치를 결정하고, 상기 복수의 매트릭스 프로세서들 각각의 부하(load)를 결정하고, 상기 워드들의 가중치에 따라 상기 워드 세트 내의 워드들을 정렬(sorting)하고, 가장 큰 가중치를 갖는 워드를 가장 작은 부하를 갖는 매트릭스 프로세서에 반복적으로(iteratively) 할당함으로써, 상기 워드 세트 내의 워드들이 상기 복수의 매트릭스 프로세서들에게 할당되며 - ;
    문서 프로세서 상에서, 토픽 추출 연산들을 수행하는 것 -상기 토픽 추출 연산들은 상기 제 1 매트릭스 프로세서에 저장된 상기 워드-토픽 매트릭스의 제 1 부분을 이용하여 하나 이상의 제 1 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는 것을 포함하며- ; 및
    상기 토픽 추출 연산들을 수행하는 것과 병렬로, 상기 문서 프로세서상에서, 매트릭스 교환 연산들을 수행하는 것을 포함하는 연산들을 수행하게 하며,
    상기 매트릭스 교환 연산들은,
    하나 이상의 제 2 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는데 이용될 상기 워드-토픽 매트릭스의 제 2 부분을 상기 제 2 매트릭스 프로세서로부터 페칭(fetching)하는 것; 혹은
    상기 제 2 서브세트 내의 워드에 대응하는 적어도 하나의 제 2 토픽을 추출하면, 추출된 제 2 토픽을 이용하여 상기 워드-토픽 매트릭스의 제 2 부분을 업데이트하도록 상기 제 2 매트릭스 프로세서에게 요청하는 것 중 적어도 하나를 포함하는 것을 특징으로 하는 기록 매체.
  30. 삭제
  31. 삭제
  32. 삭제
  33. 제29항에 있어서,
    상기 연산들은,
    상기 문서 프로세서에서, 제 1 워드 번들 및 제 2 워드 번들에 근거하여 토픽 추출 연산들을 수행하는 것을 더 포함하며,
    상기 제 1 워드 번들은 상기 워드 세트의 제 1 서브세트에 대응하고, 상기 제 2 워드 번들은 상기 워드 세트의 제 2 서브세트에 대응하는 것을 특징으로 하는 기록 매체.
  34. 제9항에 있어서,
    상기 하나 이상의 문서 프로세서들 각각은 제1 워드 번들 및 제2 워드 번들에 기초하여 토픽 추출 연산들을 수행하도록 프로그램되며, 상기 제 1 워드 번들은 상기 워드 세트의 제 1 서브세트에 대응하고, 상기 제 2 워드 번들은 상기 워드 세트의 제 2 서브세트에 대응하는 것을 특징으로 하는 시스템.
  35. 제9항에 있어서,
    상기 하나 이상의 제 1 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는 것은, 상기 하나 이상의 문서들의 세트에 대해서 깁스 샘플링(Gibbs sampling)을 수행하는 것을 특징으로 하는 시스템.
  36. 제23항에 있어서,
    상기 복수의 매트릭스 프로세서들 각각의 부하를 결정하는 것은,
    상기 매트릭스 프로세서상의 워드들의 가중치들의 합계를 결정하는 것을 포함하는 것을 특징으로 하는 방법.
  37. 제29항에 있어서,
    상기 복수의 매트릭스 프로세서들 각각의 부하를 결정하는 것은,
    상기 매트릭스 프로세서상의 워드들의 가중치들의 합계를 결정하는 것을 포함하는 것을 특징으로 하는 기록 매체.
  38. 제29항에 있어서,
    상기 하나 이상의 제 1 토픽들에 대하여 상기 하나 이상의 문서들의 세트를 샘플링하는 것은, 상기 하나 이상의 문서들의 세트에 대해서 깁스 샘플링(Gibbs sampling)을 수행하는 것을 특징으로 하는 기록 매체.
KR1020137032228A 2011-05-11 2011-05-11 문서들로부터 토픽들의 병렬 생성 KR101468201B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/000825 WO2012151716A1 (en) 2011-05-11 2011-05-11 Parallel generation of topics from documents

Publications (2)

Publication Number Publication Date
KR20140007004A KR20140007004A (ko) 2014-01-16
KR101468201B1 true KR101468201B1 (ko) 2014-12-10

Family

ID=47138636

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137032228A KR101468201B1 (ko) 2011-05-11 2011-05-11 문서들로부터 토픽들의 병렬 생성

Country Status (6)

Country Link
US (1) US8898172B2 (ko)
EP (1) EP2707814A4 (ko)
JP (1) JP5615991B2 (ko)
KR (1) KR101468201B1 (ko)
CN (1) CN103765415A (ko)
WO (1) WO2012151716A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8650143B2 (en) * 2011-08-30 2014-02-11 Accenture Global Services Limited Determination of document credibility
KR101536520B1 (ko) 2014-04-28 2015-07-14 숭실대학교산학협력단 토픽을 추출하고, 추출된 토픽의 적합성을 평가하는 방법 및 서버
CN105095275B (zh) * 2014-05-13 2019-04-05 中国科学院自动化研究所 文档聚类的方法及装置
CN105469784B (zh) * 2014-09-10 2019-01-08 中国科学院声学研究所 一种基于概率线性鉴别分析模型的说话人聚类方法及系统
JP2016162163A (ja) * 2015-03-02 2016-09-05 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
US11537262B1 (en) 2015-07-21 2022-12-27 Monotype Imaging Inc. Using attributes for font recommendations
FR3043808B1 (fr) * 2015-11-12 2017-12-08 Peugeot Citroen Automobiles Sa Procede de controle commande de taches fonctionnelles par un microprocesseur multicoeurs
US10445650B2 (en) * 2015-11-23 2019-10-15 Microsoft Technology Licensing, Llc Training and operating multi-layer computational models
CN105677769B (zh) * 2015-12-29 2018-01-05 广州神马移动信息科技有限公司 一种基于潜在狄利克雷分配(lda)模型的关键词推荐方法和系统
CN107239438B (zh) * 2016-03-28 2020-07-28 阿里巴巴集团控股有限公司 一种文档分析方法及装置
CN105955807B (zh) * 2016-04-20 2023-10-31 上海瀚银信息技术有限公司 一种任务处理系统及方法
US10642889B2 (en) 2017-02-20 2020-05-05 Gong I.O Ltd. Unsupervised automated topic detection, segmentation and labeling of conversations
US11334750B2 (en) * 2017-09-07 2022-05-17 Monotype Imaging Inc. Using attributes for predicting imagery performance
WO2019089578A1 (en) 2017-10-30 2019-05-09 Monotype Imaging Inc. Font identification from imagery
US11276407B2 (en) 2018-04-17 2022-03-15 Gong.Io Ltd. Metadata-based diarization of teleconferences
CN109189933A (zh) * 2018-09-14 2019-01-11 腾讯科技(深圳)有限公司 一种文本信息分类的方法及服务器
US20220121490A1 (en) * 2019-02-05 2022-04-21 Nec Corporation Sampling device
CN111176800A (zh) * 2019-07-05 2020-05-19 腾讯科技(深圳)有限公司 文档主题生成模型的训练方法和装置
US20230222011A1 (en) * 2022-01-11 2023-07-13 Hiredscore Inc. System and method for mapping data from one organization's computer application to another organization's computer application

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100005080A1 (en) * 2004-06-18 2010-01-07 Pike Robert C System and method for analyzing data records
US20120117008A1 (en) * 2010-11-09 2012-05-10 Microsoft Corporation Parallel Processing Of Data Sets

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003065240A1 (en) * 2002-02-01 2003-08-07 John Fairweather System and method for managing collections of data on a network
CN1560762A (zh) * 2004-02-26 2005-01-05 上海交通大学 基于字同现频率的主题抽取方法
US7895210B2 (en) * 2006-09-29 2011-02-22 Battelle Memorial Institute Methods and apparatuses for information analysis on shared and distributed computing systems
US8255889B2 (en) * 2007-02-14 2012-08-28 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
US8239844B2 (en) * 2007-02-14 2012-08-07 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
CN101359333B (zh) 2008-05-23 2010-06-16 中国科学院软件研究所 一种基于隐含狄利克雷分配模型的并行数据处理方法
US10198431B2 (en) * 2010-09-28 2019-02-05 Siemens Corporation Information relation generation
US8533195B2 (en) * 2011-06-27 2013-09-10 Microsoft Corporation Regularized latent semantic indexing for topic modeling

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100005080A1 (en) * 2004-06-18 2010-01-07 Pike Robert C System and method for analyzing data records
US20120117008A1 (en) * 2010-11-09 2012-05-10 Microsoft Corporation Parallel Processing Of Data Sets

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
D. Newman et al., "Distributed Inference for Latent Dirichlet Allocation", Neural Information Processing Systems0 (NTPS2007 672), Proceedings of the 2007 Conference, pages 1081-1088 *
R. Nallapati et al., "Parallelized Variational EM for Latent Dirichlet Allocation: Experimental Evaluation of Speed and Scalability", Proceedings of Seventh IEEE International Conference on Data Mini *

Also Published As

Publication number Publication date
KR20140007004A (ko) 2014-01-16
CN103765415A (zh) 2014-04-30
JP2014519645A (ja) 2014-08-14
US20140059054A1 (en) 2014-02-27
EP2707814A1 (en) 2014-03-19
EP2707814A4 (en) 2015-04-29
US8898172B2 (en) 2014-11-25
JP5615991B2 (ja) 2014-10-29
WO2012151716A1 (en) 2012-11-15

Similar Documents

Publication Publication Date Title
KR101468201B1 (ko) 문서들로부터 토픽들의 병렬 생성
US11769061B2 (en) Processing computational graphs
EP4202782A1 (en) Training neural networks represented as computational graphs
US8756209B2 (en) Computing resource allocation based on query response analysis in a networked computing environment
US9354938B2 (en) Sequential cooperation between map and reduce phases to improve data locality
CN112416585B (zh) 面向深度学习的gpu资源管理与智能化调度方法
Quan et al. Towards exploring vast mpsoc mapping design spaces using a bias-elitist evolutionary approach
Denninnart et al. Improving robustness of heterogeneous serverless computing systems via probabilistic task pruning
US20080178187A1 (en) Method and computer program product for job selection and resource alolocation of a massively parallel processor
US20220413906A1 (en) Method, device, and program product for managing multiple computing tasks based on batch
CN110505276A (zh) 对象匹配方法、装置及系统、电子设备及存储介质
CN106874215B (zh) 一种基于Spark算子的序列化存储优化方法
Zhang et al. Learning driven parallelization for large-scale video workload in hybrid CPU-GPU cluster
CN113760497A (zh) 一种调度任务配置方法和装置
JP2011113377A (ja) 分散計算装置および分散計算装置の制御方法
CN108228323A (zh) 基于数据本地性的Hadoop任务调度方法及装置
CN112698911A (zh) 一种基于深度强化学习的云作业调度方法
CN111367875B (zh) 一种话单文件处理方法、系统、设备及介质
CN115617473A (zh) 一种面向边缘计算的时间约束的依赖任务调度方法及其应用
CN116501828A (zh) 基于非结构化数据集的服务器无感知向量查询方法和系统
CN114443258A (zh) 用于虚拟机的资源调度方法、装置、设备及存储介质
CN113627664A (zh) Gaia系统中的面向图迭代作业的运行时间预测系统及方法
Kosar et al. A genetic algorithm for data-aware approximate workflow scheduling

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20171109

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181108

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191112

Year of fee payment: 6