Mô hình không gian vectơ cosine tf-idf để tìm tài liệu tương tự


10

Có kho chứa hơn triệu tài liệu

Đối với một tài liệu nhất định muốn tìm các tài liệu tương tự bằng cosine như trong mô hình không gian vectơ

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

Tất cả tf đã được chuẩn hóa bằng tần số tăng, để ngăn chặn sự thiên vị đối với các tài liệu dài hơn như trong tf-idf này :

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

Có tính toán trước tất cả ||d||
Có các giá trị cho mẫu số được tính toán trước
Vì vậy, với 1 cho d1cần phải đạt hơn 1 triệu d2
Có ngưỡng 0,6 cosin cho độ tương tự

Tôi có thể quan sát điều đó cho một ||d1||có một phạm vi khá hẹp của ||d2||cho cosin 0,6
Ví dụ trong một lần tìm kiếm tương tự với cosin 0,6 và ||d1||của 7,7631 rồi ||d2||trong phạm vi từ 7.0867 đến 8.839
Trong trường hợp nằm ngoài ngưỡng của cosin 0,6 ||d2||trong khoảng từ 0,7223 đến 89,395
Điều này là với chuẩn hóa tài liệu tf tiêu chuẩn
Nó đang xem xét RẤT NHIỀU ||d2||không có cơ hội là một trận đấu cosin 0,6

Cuối cùng câu hỏi:
Cho một ||d1||và cosin của> = 0,6 làm thế nào có thể xác định phạm vi của ||d2||có cơ hội không?
||d2||Tôi có thể loại bỏ một cách an toàn?

Tôi cũng biết số lượng thuật ngữ trong d1d2 nếu có phạm vi đếm hạn.

Qua thử nghiệm
| | d 2 | | < | | d 1 | | / .8 có vẻ an toàn nhưng hy vọng có phạm vi được chứng minh là an toàn ||d2||>.8||d1||||d2||<||d1||/.8

Tạo một số trường hợp thử nghiệm với một số thuật ngữ rất độc đáo, một số không quá độc đáo và một số phổ biến. Chắc chắn bạn có thể lấy thuật ngữ độc đáo nhất và tăng tần suất đó trong so sánh. Tử số sẽ (chấm sản phẩm) đi lên và do đó sẽ | | so sánh | | và sẽ nhận được một cosin rất gần với 1.

Loại liên quan và KHÔNG phải là câu hỏi.
Tôi cũng đang sử dụng tf-idf để nhóm tài liệu thành các nhóm. Các cơ sở khách hàng tôi đang bán được sử dụng gần các nhóm song công. Ở đó tôi đang thực hiện một cách tiếp cận liên quan trong tôi có vẻ như là số lượng thuật ngữ nhỏ nhất và đánh giá nó so với số lượng lên đến 3x. Vì vậy, một số lượng hạn 10 nhìn vào 10 đến 30 (4-9 đã bắn vào lúc 10). Ở đây tôi có thể đủ khả năng để bỏ lỡ một cái đã nhặt nó trong một cái khác. Tôi đã hoàn thành 10% và tỷ lệ lớn nhất là 1,8.

Hãy xác định những sai sót trong phân tích này
Như ra nhọn bởi AN6U5 có một lỗ hổng trong phân tích này
Nó không còn là một cosin nếu tài liệu được chuẩn hóa trên trọng
Và như ra nhọn Matthew cũng không thể kết luận d1⋅d2≤d1⋅d1
Tôi vẫn hy vọng cho một cái gì đó để cung cấp cho tôi một khó ràng buộc nhưng người mà dường như biết công cụ này đang nói với tôi không
tôi không muốn thay đổi câu hỏi vì vậy chỉ cần bỏ qua điều này
tôi sẽ làm một số phân tích và có thể gửi một câu hỏi riêng về tài liệu bình thường
đối với Mục đích của câu hỏi này giả sử tài liệu được chuẩn hóa trên raw tf
Xin lỗi nhưng tôi không tốt với những gì từng được sử dụng để đánh dấu các phương trình
Vì vậy, trong ký hiệu của tôi
| | d1 || = sqrt (tổng (w1 x w1))
d1 dot d2 = sum (w1 X w2)
Giả sử d1 là tài liệu ngắn hơn
D1 dot d2 tốt nhất có thể đạt được là d1 dot d1
Nếu d1 kết hôn 100 paul 20
Và d2 kết hôn 100 paul 20 peter 1
Bình thường
d1 kết hôn 1 paul 1/5
d2 kết hôn 1 paul 1/5 peter 1/100
Rõ ràng kết hôn và paul có cùng idf trong cả hai tài liệu
D1 dot d2 tốt nhất có thể là d1 dot d1
Điểm phù hợp tối đa có thể với d1 là d1
cos = d1 dot d1 / | | d1 | | | | d2 | |
bình phương cả hai cạnh
cos X cos = (d1 dot d1) X (d1 dot d1) / ((d1 dot d1) X (d2 dot d2)) cos X cos = (d1 dot d1) / (d2 dot d2)
lấy hình vuông gốc của cả hai bên
cos = | | d1 | | / | | d2 | |
là | | d2 | | không bị ràng buộc bởi cos?
Nếu tôi chỉ sử dụng | | d2 | | > = cos | | d1 | | và | | d2 | | <= | | d1 | | / cos Tôi nhận được tốc độ tính toán tôi cần


Đối số của bạn kết thúc bằng một ràng buộc được xác định bởi không hoạt động vì "Điểm d1 tốt nhất d2 có thể đạt được là d1 chấm d1" là không chính xác. Trong khid1d2cos=||d1||||d2||, không phải là trường hợpd1d2d1d1. Đối với loại vectơ đặc biệt này, nó có thể hoạt động trong đủ trường hợp đó là một xấp xỉ khá, nhưng sẽ khó hơn đáng kể để thiết lập rằng nó luôn luôn như vậy. d1d2||d1|| ||d2||d1d1||d1|| ||d1||d1d2d1d1
Matthew Graves

@MatthewGraves Tôi nghĩ tôi đồng ý với bạn. Không phải chuyên môn của tôi nhưng tôi vẫn đang hack nó.
paparazzo

Câu trả lời:


4

Thật không may, toán học đơn giản hóa để chỉ ra rằng bạn không thể biện minh nghiêm ngặt việc hạn chế sự so sánh tương tự cosin của các vectơ dựa trên độ dài của chúng.

Điểm mấu chốt là số liệu tương tự cosine bình thường hóa dựa trên chiều dài, do đó chỉ các vectơ đơn vị được xem xét. Tôi biết đây không nhất thiết là câu trả lời mà bạn muốn, nhưng toán học cho thấy rõ rằng các số liệu tương tự cosin là không rõ ràng đối với chiều dài vectơ.

Hãy nhìn vào toán học chi tiết hơn:

Bạn đang áp dụng một số liệu tương tự cosine và yêu cầu số liệu đó phải lớn hơn 0,6:

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

Nhưng độ dài vô hướng ở phía dưới có thể được phân phối thành các sản phẩm chéo ở trên (thuộc tính phân phối):

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

A^B^AB

Do đó:

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

chỉ phụ thuộc vào hướng của các vectơ chứ không phụ thuộc vào độ lớn của chúng (tức là chiều dài).

Điều chỉnh việc này với những gì bạn đang làm:

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

Có lẽ bạn có thể điều hòa những gì bạn đã làm với các số liệu khoảng cách bằng cách xem xét khoảng cách Euclide. Khi độ tương tự cosin chỉ trả về giá trị giữa -1 và 1 dựa trên góc giữa hai vectơ, khoảng cách Euclide sẽ trả về các giá trị phụ thuộc vào độ dài của hai vectơ. Trong một số ý nghĩa, bạn đang kết hợp các khía cạnh của khoảng cách Euclide với sự tương tự cosine.

Điều này khá hợp lý khi yêu cầu các độ dài tương đối nằm trong phạm vi 25% với nhau theo nghĩa là điều này kết hợp một khía cạnh của khoảng cách Euclide để tạo ra các tán cây theo nhóm, giúp cắt giảm thời gian tính toán, sau đó có thể sử dụng độ tương tự cosin yếu tố quyết định cuối cùng.

Lưu ý rằng 1 / .8 = 1.25, vì vậy d2> =. 8d1 là một hạn chế chặt chẽ hơn d2 <= d1 / .8. Tôi đề nghị sử dụng d2> =. 75d1 và d2 <= 1.25d1 vì đây là đối xứng.

Hi vọng điêu nay co ich!


Tôi nghĩ rằng điều này không sử dụng thực tế là độ dài vectơ chủ yếu đến từ các trọng số idf được chia sẻ, vì sơ đồ chuẩn hóa tf mà anh ta đang sử dụng. Nếu một tài liệu có chỉ tiêu rất thấp, điều đó có nghĩa là nó không chứa các từ hiếm (hoặc chứa chúng ở tần số phân đoạn rất thấp), có nghĩa là nó có thể được loại trừ tương tự như một tài liệu chỉ chứa các từ hiếm. Nhưng nói chung, sự ràng buộc này chặt chẽ đến mức nào dường như không rõ ràng đối với tôi. Có lẽ đó là trường hợp giới hạn lý thuyết rất rộng so với giới hạn thực nghiệm quan sát được.
Matthew Graves

@Matthew Graves, tất cả những gì tôi đang nói là sự tương đồng cosin là bất khả tri đối với chiều dài vectơ. Anh ta đang hỏi làm thế nào sự khác biệt về chiều dài vectơ có thể ảnh hưởng đến sự tương tự cosin và câu trả lời là: chúng không thể.
AN6U5

1
Mối tương quan theo kinh nghiệm không thể bỏ qua. Có một cách để tương quan tính ngẫu nhiên của tử thi với rất nhiều nếu chỉ thống kê. Tôi không có đủ đại diện trên trang này để bỏ phiếu để đăng ký.
paparazzo

Đây là nơi tôi không đồng ý. Nó không bình thường hóa dựa trên chiều dài. Nó bình thường hóa trên một thuật ngữ phổ biến nhất. Một tài liệu dài hơn chỉ có thể pha loãng. Tôi sẵn sàng điều chỉnh cách thực hiện chuẩn hóa để có được một ràng buộc mà tôi có thể hỗ trợ.
paparazzo

Cảm ơn đã sửa đổi câu hỏi của bạn. Nó làm rõ hơn những gì bạn đang cố gắng để thực hiện. Lưu ý rằng chuẩn hóa đã sửa đổi của bạn làm cho điều này thực sự không giống với cosine, vì điều này được xác định nghiêm ngặt. Tôi sẽ đề nghị một vài chỉnh sửa bổ sung để đánh vần điều này. Bảo trọng và chúc may mắn.
AN6U5

3

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

Để làm việc thông qua một số đại số, hãy để tôi giới thiệu thêm một vài thuật ngữ (và đổi tên một số thành các thuật ngữ ngắn hơn):

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


Tôi không đồng ý với | | d | | với dường như phục vụ như là một biện pháp hiếm. Nó được bình thường hóa. "Mary có một con cừu nhỏ" sẽ có một con nhỏ hơn | | hơn "Marry có một con cừu nhỏ màu trắng". Và "lẻxxA lẻxxB lẻxxC" sẽ nhỏ hơn | | so với "lẻxxA lẻxxB lẻxxC lẻxxD" trong cùng một tỷ lệ. Và hai so sánh đó sẽ có cos tương tự.
paparazzo

@Frisbee, bạn có chắc về sự so sánh đó không? Giả sử idfs là 0 cho 'a', 0,5 cho 'had' và 'Mary', 1 cho 'little' và 'trắng' và 2 cho 'lamb', tôi tính 2,4 cho "Mary có một con cừu nhỏ" và 2,55 cho "Mary có một con cừu nhỏ màu trắng", nhưng 1,83 cho "Một Mary có một con cừu nhỏ". Đó là, cách duy nhất để giảm định mức là bằng cách tăng tần suất của thuật ngữ thường xuyên nhất, không phải bằng cách thêm từ mới. Hay chúng ta không sử dụng cùng một công thức?
Matthew Graves

Tôi đã nghĩ rằng bạn đã bình thường hóa tài liệu trên trọng số (với IDF) chứ không phải tần số thô. Điều đó sẽ thay đổi mọi thứ. Nó có ý nghĩa hơn đối với tôi để bình thường hóa về trọng số. Thay đổi đáng kể một tài liệu | | bằng cách biến 'a' thành thuật ngữ phổ biến nhất với các công cụ.
paparazzo

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

0

Tôi đăng câu trả lời nhưng rõ ràng tôi sẽ trao phần thưởng cho người khác

Tôi nghĩ rằng có một tử số tối đa nếu tài liệu tf được chuẩn hóa

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

Giả sử d1 có các số hạng giống nhau hoặc ít hơn (hoặc chỉ lấy d với số hạng ít hơn)
tf được chuẩn hóa tối đa có thể là 1
Vậy tổng tử số tối đa có thể (tf1, i * idf, i * 1 * idf, i)

| | d2 | | = tổng (tf1, i * idf, i * 1 * idf, i) / | | d1 || / .6

Đối với tối thiểu tôi đang làm việc trên đó nhưng rõ ràng là có tối thiểu.
Nếu bạn sắp khớp bạn sẽ có | | d | |

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.