문서 사이의 거리를 계산하는 표준 방법은 무엇입니까?


34

"문서"라고 말하면 Wikipedia 기사 및 뉴스 기사와 같은 웹 페이지를 염두에두고 있습니다. 나는 바닐라 어휘 거리 메트릭 또는 최첨단 시맨틱 거리 메트릭 중 하나를 선호하는 답변을 선호합니다.

답변:


48

유지하려는 의미 정보의 양과 문서를 쉽게 토큰 화하는 방법에 따라 여러 가지 방법이 있습니다 (html 문서는 토큰 화하기가 어려울 수 있지만 태그 및 컨텍스트를 사용하여 무언가를 수행 할 수 있음) .)

그들 중 일부는 ffriend에 의해 언급되었으며 user1133029의 단락 벡터는 실제로 견고하지만 다른 접근법의 플러스와 마이너스에 대해 좀 더 깊이 들어갈 것이라고 생각했습니다.

  • Cosine Distance- 코사인 거리는 실제로 여러 도메인에서 일반적으로 사용되는 가장 일반적인 거리 측정법입니다. 그러나 코사인 거리에는 실제로 의미 론적 인 것으로 매핑 될 수있는 정보가 거의 없으므로이 상황에 적합하지 않은 것 같습니다.
  • Levenshtein Distance- 라고도하며 edit distance, 일반적으로 개별 토큰 수준 (단어, bigram 등)에서만 사용됩니다. 일반적으로이 메트릭은 의미 정보를 버릴뿐만 아니라 매우 다른 단어 변경을 매우 유사하게 처리하는 경향이 있기 때문에이 메트릭을 권장하지는 않지만 이러한 종류의 경우 매우 일반적인 메트릭입니다.
  • LSA- 라는 문서 유사성을 평가할 때 기술의 큰 무기고의 일부입니다 topic modeling. LSA는 최근에 유행에서 벗어 났으며, 내 경험상, 가장 강력한 주제 모델링 접근법은 아니지만 구현하기가 비교적 간단하고 오픈 소스 구현이 약간 있습니다.
  • LDA- 또한 사용되는 기술 topic modeling이지만 LSA실제로는보다 매끄럽고 직관적 인 내부 표현을 학습한다는 점에서 다릅니다 . 일반적으로 얻은 결과 LDA는 문서 유사성을 모델링하는 것보다 낫지 LSA만 주제를 강력하게 구별하는 방법을 배우는 것은 좋지 않습니다.
  • Pachinko Allocation -LDA 위에 정말 깔끔한 확장입니다. 일반적으로이 버전은의 개선 된 버전으로 LDA, 훈련하는 데 시간이 조금 더 걸리고 오픈 소스 구현이 조금 더 어렵다는 단점이 있습니다
  • word2vec -Google 은와 같은 기술로 생성 된 희소 벡터보다 단어와 문서를보다 합리적인 벡터로 지능적으로 줄이는 일련의 기술을 연구 Count Vectorizers하고 TF-IDF있습니다. Word2vec는 수많은 오픈 소스 구현이 있기 때문에 훌륭합니다. 벡터가 있으면 다른 유사성 메트릭 (예 : 코사인 거리)을 훨씬 더 효과적으로 사용할 수 있습니다.
  • doc2vec- 라고도하는 paragraph vectors이 문서는 Google의 일련의 논문에서 가장 최신이며 최고이며 문서의 밀집된 벡터 표현을 조사합니다. gensim파이썬 의 라이브러리는 구현하기에 word2vec충분히 합리적으로 활용 될 수있을 정도로 간단하게 구현되어 doc2vec있지만이 경로를 내려 가려면 라이센스를 명심하십시오.

도움이 되길 바랍니다. 궁금한 점이 있으면 알려주세요.


6

각각의 장단점을 가진 여러 시맨틱 거리 측정이 있습니다. 다음은 그중 몇 가지입니다.

  • 코사인 거리 , 문서 특징 벡터 사이의 내부 생성물;
  • LSA , 또 다른 벡터 기반 모델이지만 원래 용어 문서 행렬의 노이즈를 제거하기 위해 SVD를 사용합니다.
  • 거의 확장 할 수 없지만 WordNet 기반의 사람 검증

가장 간단한 방법으로 시작한 다음 특정 사례의 문제에 따라 더 나아가십시오.


1
LSA를 수행 할 때는 일반적으로 원래 데이터 세트의 LSA 투영에서 코사인 거리를 사용합니다. 다시 한번 확인하기 위해.
Simon

6

경험적으로 나는 LSA가 매번 LDA보다 훨씬 우수하다는 것을 알았습니다. 나는 같은 말을 한 다른 사람들과 이야기를 나 have습니다. 또한 문서 사이의 의미 적 유사성을 측정하기 위해 여러 단어 SemEval 경쟁에서 승리하는 데 사용되었습니다. 종종 단어 넷 기반 측정과 함께 사용하기 때문에 패션에서 벗어나거나 LDA보다 열등하다는 것은 아닙니다. 일부 응답자가 말한 것과는 달리 주제 모델링과 내 경험의 의미 적 유사성이 아닙니다.

gensim (파이썬 라이브러리)을 사용하는 경우 LSA, LDA 및 word2vec가 있으므로 3을 쉽게 비교할 수 있습니다. doc2vec는 멋진 아이디어이지만 잘 확장되지는 않으므로 직접 구현해야합니다. 오픈 소스 구현을 알지 못합니다. 각 문서마다 확장 성이 떨어지기 때문에 느린 기계 학습 알고리즘 인 SGD를 사용하여 새롭고 별도의 모델을 만들어야합니다. 그러나 아마도 가장 정확한 결과를 줄 것입니다. LSA와 LDA는 확장 성이 좋지 않지만 (word2vec는 그렇지 않습니다), LDA는 일반적으로 더 나쁩니다. 그러나 Gensim의 구현은 반복 SVD를 사용하므로 매우 빠릅니다.

또 다른 참고 사항은 word2vec를 사용하는 경우 단어마다 다른 벡터를 제공하므로 문서의 벡터를 작성하는 방법을 결정해야합니다. 이를 수행하는 가장 간단한 방법은 각 벡터를 정규화하고 문서의 모든 단어 벡터에 대한 평균을 취하거나 각 단어의 idf 가중치를 적용하여 가중치를 적용하는 것입니다. 따라서 'word2vec 사용'만큼 간단하지는 않으므로 문서 유사성을 계산하기 위해 추가 작업을 수행해야합니다.

나는 그것이 경험적으로 잘 작동하고 gensim의 도서관 규모가 매우 잘되는 것을 보았을 때 개인적으로 LSA와 함께 갈 것입니다. 그러나 무료 점심 식사는 없으므로 각 방법을 시도해보고 어느 것이 더 적합한 지 확인하십시오.


LSA를 정확히 어떻게 사용 했습니까? LDA는 실제로 일반화를 크게 증가시키는 것으로 실증적으로 입증 된 LSA (dirichlet이있는 pLSA)를 둘러싼 상당히 얇은 래퍼라는 점은 주목할 가치가 있습니다. LSA를 사용하면 정확도가 더 좋아질 것입니다. 그러나 이는 일반적으로 과적 합의 결과입니다. 이는 LSA에서 매우 주목할만한 문제입니다. 또한 여기서 스케일링한다는 것은 정확히 무엇을 의미합니까? doc2vec는 실제로 각 문서에 대해 새로운 모델을 요구하지 않으며 계산을 위해 LSA와 LDA 사이에 눈에 띄는 차이가 없으며 확장 성이 뛰어납니다.
Slater Victoroff

나는 LSA와의 적합성에 대해 관찰하지 않았으며, 내가 말했듯이 LDA보다 더 나은 성능을 보인 다른 여러 사람들을 만났습니다. 또한, 나는 LSA가 지명 경쟁에서 많은 우승 항목에 사용되는 것을 보았습니다. 그것은 문서들 사이의 시맨틱 유사성을 비교하기위한 학술 회의이므로, 그들이 무엇을하고 있는지 알고 있다고 가정합니다. Doc2vec는 Mikolov의 단락 벡터 구현을 참조하는 경우 각 문서에 대해 SGD를 별도로 수행합니다. 매우 느립니다.
Simon

@SlaterVictoroff 나는 그것이 너무 적합하다고 말하는 것을 끝내고 있다고 생각합니다. LDA는 검색 / 정보 검색 및 권장 사례가 열악한 것으로 알려져 있으며, 경험적으로 LSA는 훨씬 더 잘 작동하는 것으로 나타 났으며,이 결과를 자체 데이터와 비교하여 검증하기를 원하므로 본인의 경험과도 일치합니다. Doc2Vec 버전은 문서마다 그라디언트 하강을 수행하며, Doc2Vec에서 사용되는 알고리즘에 따라 다릅니다. 일반적으로 많은 다른 알고리즘을 나타냅니다.
Simon

3

: 예술 나타납니다의 상태는 최근 논문에서 소개 "단락 벡터"할 수 http://cs.stanford.edu/~quocle/paragraph_vector.pdf . 단락 벡터 사이의 코사인 / 유클리드 거리는 다른 접근 방식보다 더 효과적입니다. 이것은 아마도 오픈 소스 구현이 없기 때문에 아직 실현 가능하지 않습니다.

다음으로 LSA 벡터 사이의 코사인 거리 또는 원시 BOW 벡터 사이의 코사인 거리가 가장 좋습니다. 때로는 TF-IDF와 같은 다른 가중치 체계를 선택하는 것이 좋습니다.


단락 벡터 확장성에 대한 아래 의견을 참고하십시오. 이 기술은 매우 유망 해 보이지만 구현하기가 어렵고 각 문서에 대해 별도의 SGD를 수행 할 때 전혀 확장되지 않습니다. 논문을 올바르게 기억하면 비용이 많이 듭니다
Simon

1

도구 모음에 지역별 해시 알고리즘 제품군을 포함시키는 것이 유용합니다 . 이 가족은 전혀 의미가 없습니다. 실제로 텍스트를 일련의 비트로 간주합니다. 동일한 텍스트가 약간의 차이로 여러 번 나타날 때 더티 데이터 세트에 유용하다는 것을 알았습니다.

이러한 문서를 식별하기 위해 ssdeep ( Nilsimsa hash 기반)을 사용할 수 있습니다 . Ssdeep은 원래 스팸 도메인을 계획했습니다. 스패머는 종종 정확한 서명 (예 : md5 )으로 탐지되지 않도록 메시지를 약간 변경 (공백 추가 )합니다.

동일한 데이터 세트에있는 거의 동일한 문서의 많은 버전이 적용되는 통계적 방법을 혼란스럽게 할 수 있으므로 이러한 정리를 수행하면 매우 유용 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.