유사한 문서를 찾기위한 벡터 공간 모델 코사인 TF-IDF


10

백만 개가 넘는 문서 모음

주어진 문서에 대해 벡터 공간 모델 에서와 같이 코사인을 사용하여 유사한 문서를 찾으려고 합니다.

d1d2/(||d1||||d2||)

tf-idf 와 같이 더 긴 문서에 대한 편견을 방지하기 위해 모든 tf는 기능 보강 된 빈도를 사용하여 정규화되었습니다 .

tf(t,d)=0.5+0.5f(t,d)max{f(t,d):td}

모두 미리 계산했습니다 분모 값이 미리 계산 되어 있으므로 주어진 d 1에 대해 백만 d 이상을 기록해야합니다. 2 유사성에 대해 0.6 코사인 임계 값을 갖습니다.||d||

d1d2

나는 주어진 상당히 좁은 범위가 | | d 2 | | 코사인에 대한 0.6 의 코사인 유사 하나 개의 검색 예를 들어 0.6과 | | d 1 | | 7.7631 중 | | d 2 | | 7.0867 ~ 8.8339 범위 : 코사인 임계 값을 벗어난 경우 0.6 | | d 2 | | 0.7223 ~ 89.3395 범위||d1||||d2||
||d1||||d2||
||d2||
이 표준 TF 문서 정상화했다
그것의 많은보고있다 코사인 0.6 경기가 될 가능성이없는 ||d2||

마지막으로 질문 :
기부 및 코사인> = 0.6 범위 | | d 2 | | 그 기회가 있습니까? 어느 | | d 2 | | 안전하게 제거 할 수 있습니까? ||d1||||d2||
||d2||

용어 개수 범위가 있으면 d 2 의 항 수도 알고 있습니다.d1d2

실험을 통해
| | d 2 | | < | | d 1 | | / .8 안전 해 보이지만 안전하다는 것이 입증 된 범위가 있기를 바랍니다. ||d2||>.8||d1||||d2||<||d1||/.8

매우 독특한 용어, 너무 독특하지 않은 용어 및 일반적인 용어로 테스트 사례를 작성했습니다. 물론 가장 독특한 용어를 사용하여 비교에서 해당 빈도를 늘릴 수 있습니다. 분자는 (dot product) 올라가고 || compar || 코사인은 1에 매우 가깝습니다.

관련이 있고 질문이 아닙니다.
또한 tf-idf를 사용하여 문서를 그룹으로 그룹화합니다. 내가 팔고있는 고객층은 근처의 Dup Group 근처에 사용됩니다. 거기에서 관련 접근법을 사용하고 있습니다. 가장 작은 용어 수로보고 최대 3 배의 용어 수에 대해 평가합니다. 따라서 10이라는 용어 개수는 10에서 30까지입니다 (4-9는 이미 10에 총을 맞았습니다). 여기서 나는 다른 하나에서 픽업 된 것을 놓칠 여유가 있습니다. 나는 10 % 완료되었고 가장 큰 비율은 1.8입니다.

이 분석에서 결함을 확인하시기 바랍니다
AN6U5가 가리키는 아웃이 분석에 결함이 존재하므로
문서가 가중에 정상화되면 그것은 더 이상 코사인
그리고 매튜가 가리키는 아웃으로도 d1⋅d2≤d1⋅d1 결론을 내릴 수없는
나는 여전히 뭔가를 기대하는 것은 나에게주는 바인딩하지만이 물건을 모르는 것 같다 사람들이 저를 말하고있다 열심히 아니요
난 그냥이 무시 그래서 질문을 변경하지 않으
내가 몇 가지 분석을 할 것을 어쩌면 문서 정상화에 별도의 질문을 게시
의 경우를 문서를 가정이 질문의 목적은 원시 TF에 정규화
미안하지만 난 지금 마크 업 방정식을 만드는 데 사용되는 것과 단지 좋은 아니에요
내 표기법 그래서
|| (D1) || = sqrt (sum (w1 x w1))
d1 dot d2 = sum (w1 X w2)
d1이 더 짧은 문서라고 가정
할 수있는 가장 좋은 d1 dot d2는 d1 dot
d1이고 d1이 결혼 한 경우 100 paul 20
그리고 d2가 결혼 한 경우 100 paul 20 peter 1
정규화 된
d1이 결혼합니다 1 paul 1/5
d2는 결혼 1 paul 1/5 peter 1/100
명백하게 결혼하고 paul은 두 문서에서 모두 동일한 idf를 갖습니다.
가능한 최상의 d1 dot d2는 d1 dot d1 d1에
가능한 최대 일치는 d1
cos = d1 dot입니다. d1 / || d1 || || d2 ||
양쪽 제곱
코사인 X COS = (D1 점 D1) X (D1 도트 (D1)) / ((D1 점 D1) X (D2 도트 D2)) COS X COS = (D1 점 D1) / (D2 도트 D2)
받아 제곱 양쪽
cos의 근 = = || d1 || / || d2 ||
|| d2 || cos에 묶이지 않습니까?
|| d2 ||를 사용하면 > = cos || d1 || 그리고 || d2 || <= || d1 || / cos 필요한 계산 속도를 얻습니다.


A는 결정 바운드로 결론 귀하의 인수 "최고의 d1 도트 d2는 d1 도트 d1입니다."가 올바르지 않기 때문에 작동하지 않습니다. d1d2동안cos=||d1||||d2||d1d2||d1|| ||d2||d1d1||d1|| ||d1||d1d2d1d1

@ MatthewGraves 나는 당신에 동의한다고 생각합니다. 내 전문 지식은 아니지만 여전히 해킹하고 있습니다.
paparazzo

답변:


4

불행하게도 수학은 길이에 따라 벡터의 코사인 유사성 비교를 제한하는 것을 엄격하게 정당화 할 수 없음을 보여주기 위해 단순화합니다.

요점은 코사인 유사성 메트릭이 길이에 따라 정규화되어 단위 벡터 만 고려된다는 것입니다. 나는 이것이 반드시 당신이 원하는 대답은 아니라는 것을 알고 있지만, 수학은 코사인 유사성 메트릭이 벡터 길이와 무관하다는 것을 분명히 보여줍니다.

수학을보다 자세히 살펴 보겠습니다.

코사인 유사성 메트릭을 적용하고 해당 메트릭이 0.6보다 커야합니다.

similarity=cos(θ)=AB||A||||B||0.6

그러나 바닥의 스칼라 길이는 위의 교차 곱에 분산 될 수 있습니다 (분산 속성).

AB||A||||B||=A||A||B||B||=A^B^

A^B^AB

그 때문에:

similarity=cos(θ)=d1d2||d1||||d2||=d1^d2^0.6

크기 (즉, 길이)가 아닌 벡터의 방향에만 의존합니다.

당신이하고있는 일과 이것을 조정하십시오 :

0.6||d2||>.8||d1||||d2||<||d1||/.8

유클리드 거리를 고려하여 거리 측정으로 수행 한 작업을 조정할 수 있습니다. 코사인 유사성이 두 벡터 사이의 각도를 기준으로 -1과 1 사이의 값만 반환하는 반면, 유클리드 거리는 두 벡터의 길이에 따른 값을 반환합니다. 어떤 의미에서는 유클리드 거리의 측면과 코사인 유사성을 결합하는 것입니다.

유클리드 거리의 측면을 결합하여 그룹 별 캐노피를 생성하여 계산 시간을 단축 한 다음 길이에 상관없는 코사인 유사성을 사용할 수 있다는 점에서 상대 길이가 서로 25 % 이내 여야한다는 것이 상당히 합리적입니다. 최종 결정자.

1 / .8 = 1.25이므로 d2> =. 8d1은 d2 <= d1 / .8보다 엄격한 제한입니다. 대칭이므로 d2> =. 75d1 및 d2 <= 1.25d1을 사용하는 것이 좋습니다.

도움이 되었기를 바랍니다!


나는 이것이 사용하는 tf 정규화 체계 때문에 벡터 길이가 주로 공유 idf 가중치에서 나온다는 사실을 사용하지 않는다고 생각합니다. 문서의 규범이 매우 낮은 경우에는 희귀 단어가 포함되어 있지 않거나 매우 낮은 분수 빈도로 포함되어 있음을 의미하므로 희귀 단어 만 포함 된 문서와 유사하게 배제 될 수 있습니다. 그러나이 제약 조건이 일반적으로 얼마나 빡빡한지는 분명하지 않습니다. 이론적 범위가 관찰 된 경험적 범위와 비교하여 매우 넓은 경우 일 수 있습니다.
Matthew Graves

@Matthew Graves, 내가 말하는 것은 코사인 유사성이 벡터 길이와 무관하다는 것입니다. 그는 벡터 길이의 차이가 결과 코사인 유사성에 어떻게 영향을 미칠 수 있는지를 묻고 있으며 그 대답은 그렇지 않습니다.
AN6U5

1
경험적 상관 관계는 무시할 수 없습니다. 통계적 일 경우 말뭉치의 무작위성을 풍부하게 상관시키는 방법이 있습니다. 이 사이트에 등록 할 투표가 충분하지 않습니다.
paparazzo

여기 내가 동의하지 않는 곳입니다. 길이에 따라 정규화되지 않습니다. 가장 일반적인 단일 용어로 정규화됩니다. 더 긴 문서는 희석 할 수 있습니다. 지원 할 수있는 한계를 갖기 위해 정규화 수행 방법을 조정하려고합니다.
paparazzo

질문을 수정 해 주셔서 감사합니다. 그것은 당신이 성취하려고하는 것을 더 명확하게합니다. 수정 된 정규화는 코사인 유사성 이 아닙니다 . 이는 엄격하게 정의되어 있기 때문입니다. 이 부분을 설명하기 위해 몇 가지 추가 편집을 제안합니다. 조심하고 행운을 빕니다.
AN6U5

3

||di||||di||||di||

대수를 다루기 위해 몇 가지 용어를 더 소개하고 이름을 더 짧은 용어로 바꾸겠습니다.

d1[t1,t2,...][w1,w2,...][d1,d2,...]0.5ti10wi6D1=||d1||

d1xd1+xX

X=iwi2(ti+xi)2

0.6D1Xiwi2ti(ti+xi)

0.5ti+xi1

xxi=0 idi+xi=1

xX2XX>0XXPP

00.36D12iwi2(ti+xi)2i,jwi4titj(ti+xi)(tj+xj)

0xTPx+qTx+rPi,j=0.36D12wi2titji=jwi2titj

Pd1X

XwxX


|| d ||에 동의하지 않습니다 와 함께 희귀 조치로 사용됩니다. 정규화되었습니다. "메리가 작은 양을 가졌다"는 더 작은 || "결혼에는 흰색 작은 양이 있었다". 그리고 "oddxxA oddxxB oddxxC"는 더 작은 || "oddxxA oddxxB oddxxC oddxxD"보다 거의 동일한 비율로 그리고이 두 비교는 비슷한 것입니다.
paparazzo

@ 프리스비, 그 비교에 대해 확신하십니까? idfs가 'a'에 대해 0, 'had'및 'Mary'에 대해 0.5, 'little'및 'white'에 대해 1, 'lamb'에 대해 2를 가정하면 "Mary have little lamb"에 대해 2.4를 계산하고 2.55 "Mary는 작은 어린 양을 가졌다"는 1.83, "Mary는 작은 어린 양을 가졌다"는 1.83입니다. 즉, 표준을 줄이는 유일한 방법은 새 단어를 추가하는 것이 아니라 가장 빈번한 용어의 빈도를 늘리는 것입니다. 아니면 같은 공식을 사용하지 않습니까?
Matthew Graves

나는 당신이 원시 주파수가 아닌 가중 (IDF 포함)으로 문서를 표준화했다고 생각했습니다. 그것은 상황을 바꿀 것입니다. 가중치를 정규화하는 것이 더 합리적입니다. 문서를 대폭 변경 || 'a'를 가장 일반적인 용어로 만드는 것입니다.
paparazzo

dt=wt(0.5+0.5wtf(t,d)max{wtf(t,d):td})wt=logN|{dD:td}|ddid

0

답변을 게시했지만 다른 사람에게 보너스를 제공 할 것입니다.

문서 tf가 정규화되면 최대 분자가 있다고 생각합니다.

d1⋅d2 / (|| d1 |||| d2 ||)

가정 D1은 동일하거나 덜 용어 (또는 덜 용어와 D를 취할) 보유
가능한 최대 정규화 TF가 1
최대 가능한 분자 합 그래서 (TF1, 난 IDF를 * 난 * 1 * IDF, I)

|| d2 || = 합 (tf1, i * idf, i * 1 * idf, i) / || d1 || / .6

최소한 나는 그것에 대해 노력하고 있지만 분명히 최소한이 있습니다.
당신이 일치하려고하면 || d ||

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