답변:
유지하려는 의미 정보의 양과 문서를 쉽게 토큰 화하는 방법에 따라 여러 가지 방법이 있습니다 (html 문서는 토큰 화하기가 어려울 수 있지만 태그 및 컨텍스트를 사용하여 무언가를 수행 할 수 있음) .)
그들 중 일부는 ffriend에 의해 언급되었으며 user1133029의 단락 벡터는 실제로 견고하지만 다른 접근법의 플러스와 마이너스에 대해 좀 더 깊이 들어갈 것이라고 생각했습니다.
edit distance
, 일반적으로 개별 토큰 수준 (단어, bigram 등)에서만 사용됩니다. 일반적으로이 메트릭은 의미 정보를 버릴뿐만 아니라 매우 다른 단어 변경을 매우 유사하게 처리하는 경향이 있기 때문에이 메트릭을 권장하지는 않지만 이러한 종류의 경우 매우 일반적인 메트릭입니다.topic modeling
. LSA는 최근에 유행에서 벗어 났으며, 내 경험상, 가장 강력한 주제 모델링 접근법은 아니지만 구현하기가 비교적 간단하고 오픈 소스 구현이 약간 있습니다.topic modeling
이지만 LSA
실제로는보다 매끄럽고 직관적 인 내부 표현을 학습한다는 점에서 다릅니다 . 일반적으로 얻은 결과 LDA
는 문서 유사성을 모델링하는 것보다 낫지 LSA
만 주제를 강력하게 구별하는 방법을 배우는 것은 좋지 않습니다.LDA
, 훈련하는 데 시간이 조금 더 걸리고 오픈 소스 구현이 조금 더 어렵다는 단점이 있습니다Count Vectorizers
하고 TF-IDF
있습니다. Word2vec는 수많은 오픈 소스 구현이 있기 때문에 훌륭합니다. 벡터가 있으면 다른 유사성 메트릭 (예 : 코사인 거리)을 훨씬 더 효과적으로 사용할 수 있습니다.paragraph vectors
이 문서는 Google의 일련의 논문에서 가장 최신이며 최고이며 문서의 밀집된 벡터 표현을 조사합니다. gensim
파이썬 의 라이브러리는 구현하기에 word2vec
충분히 합리적으로 활용 될 수있을 정도로 간단하게 구현되어 doc2vec
있지만이 경로를 내려 가려면 라이센스를 명심하십시오.도움이 되길 바랍니다. 궁금한 점이 있으면 알려주세요.
경험적으로 나는 LSA가 매번 LDA보다 훨씬 우수하다는 것을 알았습니다. 나는 같은 말을 한 다른 사람들과 이야기를 나 have습니다. 또한 문서 사이의 의미 적 유사성을 측정하기 위해 여러 단어 SemEval 경쟁에서 승리하는 데 사용되었습니다. 종종 단어 넷 기반 측정과 함께 사용하기 때문에 패션에서 벗어나거나 LDA보다 열등하다는 것은 아닙니다. 일부 응답자가 말한 것과는 달리 주제 모델링과 내 경험의 의미 적 유사성이 아닙니다.
gensim (파이썬 라이브러리)을 사용하는 경우 LSA, LDA 및 word2vec가 있으므로 3을 쉽게 비교할 수 있습니다. doc2vec는 멋진 아이디어이지만 잘 확장되지는 않으므로 직접 구현해야합니다. 오픈 소스 구현을 알지 못합니다. 각 문서마다 확장 성이 떨어지기 때문에 느린 기계 학습 알고리즘 인 SGD를 사용하여 새롭고 별도의 모델을 만들어야합니다. 그러나 아마도 가장 정확한 결과를 줄 것입니다. LSA와 LDA는 확장 성이 좋지 않지만 (word2vec는 그렇지 않습니다), LDA는 일반적으로 더 나쁩니다. 그러나 Gensim의 구현은 반복 SVD를 사용하므로 매우 빠릅니다.
또 다른 참고 사항은 word2vec를 사용하는 경우 단어마다 다른 벡터를 제공하므로 문서의 벡터를 작성하는 방법을 결정해야합니다. 이를 수행하는 가장 간단한 방법은 각 벡터를 정규화하고 문서의 모든 단어 벡터에 대한 평균을 취하거나 각 단어의 idf 가중치를 적용하여 가중치를 적용하는 것입니다. 따라서 'word2vec 사용'만큼 간단하지는 않으므로 문서 유사성을 계산하기 위해 추가 작업을 수행해야합니다.
나는 그것이 경험적으로 잘 작동하고 gensim의 도서관 규모가 매우 잘되는 것을 보았을 때 개인적으로 LSA와 함께 갈 것입니다. 그러나 무료 점심 식사는 없으므로 각 방법을 시도해보고 어느 것이 더 적합한 지 확인하십시오.
: 예술 나타납니다의 상태는 최근 논문에서 소개 "단락 벡터"할 수 http://cs.stanford.edu/~quocle/paragraph_vector.pdf . 단락 벡터 사이의 코사인 / 유클리드 거리는 다른 접근 방식보다 더 효과적입니다. 이것은 아마도 오픈 소스 구현이 없기 때문에 아직 실현 가능하지 않습니다.
다음으로 LSA 벡터 사이의 코사인 거리 또는 원시 BOW 벡터 사이의 코사인 거리가 가장 좋습니다. 때로는 TF-IDF와 같은 다른 가중치 체계를 선택하는 것이 좋습니다.
도구 모음에 지역별 해시 알고리즘 제품군을 포함시키는 것이 유용합니다 . 이 가족은 전혀 의미가 없습니다. 실제로 텍스트를 일련의 비트로 간주합니다. 동일한 텍스트가 약간의 차이로 여러 번 나타날 때 더티 데이터 세트에 유용하다는 것을 알았습니다.
이러한 문서를 식별하기 위해 ssdeep ( Nilsimsa hash 기반)을 사용할 수 있습니다 . Ssdeep은 원래 스팸 도메인을 계획했습니다. 스패머는 종종 정확한 서명 (예 : md5 )으로 탐지되지 않도록 메시지를 약간 변경 (공백 추가 )합니다.
동일한 데이터 세트에있는 거의 동일한 문서의 많은 버전이 적용되는 통계적 방법을 혼란스럽게 할 수 있으므로 이러한 정리를 수행하면 매우 유용 할 수 있습니다.