텍스트의 문서 벡터를 계산하기 위해 spark의 word2vec 알고리즘을 사용했습니다.word2vec의 코사인 유사도 1보다
그런 다음 모델 개체의 findSynonyms
함수를 사용하여 몇 단어의 동의어를 가져 왔습니다.
나는 이런 식으로 뭔가를 참조하십시오
w2vmodel.findSynonyms('science',4).show(5)
+------------+------------------+
| word| similarity|
+------------+------------------+
| physics| 1.714908638833209|
| fiction|1.5189824643358183|
|neuroscience|1.4968051528391833|
| psychology| 1.458865636374223|
+------------+------------------+
내가 코사인 유사도가 0과 1 또는 최대 -1과 +1 사이 여야 이상의 1 코사인 유사도로 계산되는 이유를 이해하지 않습니다을 (복용 음의 각도).
왜 여기에 1 이상입니까? 여기서 뭐가 잘못 됐어?
감사합니다. 그러나 빠른 질문. 벡터를 정규화하고 코사인 유사성을 취하는 경우에는 내적 (dot) 제품 만 사용하는 것과 유사합니다. 정규화하지 않고 코사인 유사성을 취하는 경우 코사인 유사성의 공식에서 각 벡터의 표준으로 내적을 나눕니다. 따라서 코사인 유사성을 계산하는 동안 정규화가 발생합니다. 그래서 왜 사람들이 왜 그것을 정상화해야하는지 확실하지 않습니다. 결국 동일한 수식이되며 계산은 동일해야합니다 – Baktaawar
정규화 부분을 알고 있습니다. 하지만 왜 내 질문 코사인 유사점을 변경합니다. 정규화하거나 – Baktaawar
을 완전히 입력해도 수식은 동일하게 유지됩니다. 그럼 당신은 코사인 유사점을 계산하는 방법을 확인해야한다고 생각합니다! 라이브러리 나 패키지를 사용하는 경우 예상대로 유사성이 계산되었는지 확인해야합니다.그것 이외에, 나는 너의 이해에 어떤 문제도 보지 않는다. –