2014-02-16 10 views
-1

Google 뉴스에서 검색 한 내용을 "Explore in depth"버튼을 클릭하면 여러 소스에서 동일한 뉴스 기사를 볼 수 있습니다. 어떤 종류의 알고리즘을 사용하여 텍스트 기사를 비교 한 다음 동일한 내용을 결정할 수 있습니까?문자열의 유사성 감지

Is there an algorithm that tells the semantic similarity of two phrases

는 그러나, 언급 한 방법을 사용하여, 나는 본질적으로 비슷하지만 다른 이야기에 관한 있었다 기사가 있다면, 그들이 거기에 언급 된 방법을 사용하여 그룹화 될 수 있다고 생각 : 나는 여기에 질문을 보았다 . 똑같은 문자열을 그대로 유지하면서 문자열을 동일한 방식으로 감지하고 그룹화하는 표준 방법이 있습니까? 예 : "미국 국경"을 검색하면 미국 국경에서 문제에 관한 이야기를들을 수 있지만, 이들 모두가 함께 그룹화되는 것을 막을 수있는 방법은 무엇입니까? 제가 생각할 수있는 것은 출판 일입니다. 그러나 많은 이야기들이 서로 아주 가깝게 출판 되었다면 어떨까요?

+0

기본적으로 Google은 링크 구조에 관한 것입니다. 엔티티를 (이후 단계에서) 등가 클래스로 그룹화 할 수 있었지만 값 비싼 프로세스입니다. 일단 링크 구조가 확립되면 더 저렴해질 것입니다. (영향을받은 세트가 더 작기 때문에) – wildplasser

답변

1

두 기사의 유사성을 판단하는 표준 방법 중 하나는 각각에 대해 language model을 작성한 다음 이들 간의 유사성을 찾는 것입니다.

언어 모델은 임의로 토큰 (단어/bigrams /.../ ngrams)을 선택하는 모델에 의해 작성된 것으로 가정 할 때 일반적으로 확률 함수입니다.

가장 간단한 언어 모델은 유니 그램 (단어) : P(word|d) = #occurances(w,d)/|d| (문서의 총 길이를 기준으로 문서에 단어가 나타난 횟수)입니다. 평활화 기법은 빈도가 0 인 단어가 나타나지 않도록하기 위해 종종 사용됩니다.

언어 모델을 만든 후에는 두 모델을 비교하기 만하면됩니다. 이를 수행하는 한 가지 방법은 cosine similarity 또는 Jensen-Shannon similarity입니다.
두 기사의 유사성을 절대적으로 나타냅니다. 이것은 날짜를 비교하라는 제안과 같이 다른 많은 방법과 결합 될 수 있습니다.