Doc2vec (gensim) - Làm thế nào tôi có thể suy ra nhãn của câu không nhìn thấy?


13

https://radimrehurek.com/gensim/models/doc2vec.html

Ví dụ: nếu chúng tôi đã đào tạo doc2vec với

"aaaaaAAAAAaaaaaa" - "nhãn 1"

Củ cải bbbbbbBBBBBbbbb "-" nhãn 2 "

chúng ta có thể suy ra ra aaaaAAAAaaaaAA là nhãn 1 bằng cách sử dụng Doc2vec không?

Tôi biết Doc2vec có thể đào tạo vectơ từ và vectơ nhãn. Sử dụng các vectơ này, chúng ta có thể suy ra các câu chưa thấy (kết hợp các từ được đào tạo) trong nhãn nào?

Câu trả lời:


10

Tiêu đề của câu hỏi này là một câu hỏi riêng biệt cho văn bản của nó vì vậy tôi sẽ trả lời cả hai riêng biệt (cho rằng cái này dẫn đến cái kia).

  1. Làm thế nào tôi có thể suy ra những câu chưa thấy:
# ... trained model stored in var model
list_of_words = ["this", "is", "a", "new","unseen", "sentence"]
inferred_embedding = model.infer_vector(list_of_words)

Cái này hoạt động ra sao ? Theo tài liệu gốc ( https://cs.stanford.edu/~quocle/par Đoạn_vector.pdf ), chúng tôi có hai ma trận trọng số được khởi tạo tại ngẫu nhiên là cùng một ma trận từ Word2Vec trong đó mỗi cột hoặc hàng ánh xạ tới một vectơ từ và D R M × R là ma trận tài liệu trong đó mỗi cột hoặc hàng ánh xạ tới một câu / tài liệu. Trong quá trình đào tạo một trình phân loại softmax của cửa sổ cố định k di chuyển kích thước (trong một cửa sổ chuyển động như thời trang) giảm thiểu khả năng nhật ký sau (entropy nhiều lớp):WRN×PDRM×Rk

1Mi=1M1|Di|t=k|Di1|klog(p(wti|wtki,...,wt+ki,Di))

Trong đó tương ứng với vectơ đại diện cho câu i t h , | D i | số lượng từ của nó trong tài liệu đó và w i t là từ t t h trong tài liệu i t h . Tất cả các ghi nhớ lan truyền ngược là tài liệu chúng tôi hiện đang di chuyển softmax cửa sổ của chúng tôi và chỉ cập nhật hàng đó trong ma trận D cùng với các từ trong cửa sổ đó.Diith|Di|wtitthithD

Hơn nữa, khi chúng tôi muốn suy luận một cái gì đó không có trong tập huấn luyện, chúng tôi sửa để nó không được cập nhật và tăng ma trận D với hàng được khởi tạo ngẫu nhiên mới và chỉ đào tạo cho một số lần lặp (với hàng mới giữ nhúng cho vectơ được suy ra) . Điều này dẫn đến câu hỏi 2.WD

  1. Chúng ta có thể suy luận rằng một câu có thể không nhìn thấy chính xác tương ứng với một câu trong tập huấn luyện không?

Câu trả lời ngắn gọn là không và đây không phải là những gì Doc2Vec dành cho. Do khởi tạo ngẫu nhiên + độ phức tạp của việc hội tụ và huấn luyện vectơ suy luận của bạn sẽ không bao giờ giống hệt như vectơ tương ứng của nó trong đây là lý do tại sao Gensim không xây dựng một chức năng để hỗ trợ điều này, cho đến nay mô hình đã được tốt như thế nào đào tạo hai vectơ này nên tùy ý gần nhau để bạn có thể kết luận rằng chúng cực kỳ giống nhau.D

Ngay cả việc sửa hạt giống ngẫu nhiên cũng có thể không hoạt động, có rất nhiều biến số khác có thể ảnh hưởng đến sự hội tụ của nó, vui lòng xem câu trả lời đầu tiên trên https://github.com/RaRe-Technology/gensim/issues/374 .

Trong mọi trường hợp, bạn có thể tìm thấy nhãn tương tự nhất trong tập dữ liệu của mình thành câu được suy luận chỉ bằng cách lặp qua tập huấn luyện của bạn và so sánh độ tương tự với vectơ được suy ra. Nhưng tại sao bạn lại muốn thực hiện một trận đấu chính xác với thứ gì đó trong tập huấn luyện? đó là những gì các biểu thức chính quy dành cho mục đích của các tài liệu nhúng này là dành cho các nhiệm vụ học tập được giám sát hoặc không giám sát (nghĩa là phân loại và phân cụm).


0

Tôi đã cố gắng giải quyết vấn đề này ngày hôm nay và coudnt tìm thấy bất kỳ mô-đun nào được cung cấp bởi gensim.Doc2Vec tính toán sự giống nhau giữa vectơ tài liệu được suy luận không phải trong mô hình được đào tạo với mô hình được đào tạo. Vì vậy, về cơ bản tôi đã làm điều này.

from scipy import spatial
inferred_vector=model.infer_vector(sentence.split())
for labels in labelled_documents:
    print (1-  spatial.distance.cosine(inferred_vector,model.docvecs[labels]))

0

Dựa trên hướng dẫn của Gensim Doc2Vec , bạn có thể làm một cái gì đó như thế này.

inferred_vector = model_dmm.infer_vector(sentence.split())
sims = model.docvecs.most_similar([inferred_vector], topn=len(model.docvecs))

Điều này sẽ cung cấp cho bạn một danh sách các bộ dữ liệu với tất cả các nhãn và xác suất liên quan đến tài liệu mới của bạn thuộc về mỗi nhãn. sau đó bạn có thể chỉ cần lấy giá trị lớn nhất làm nhãn của bạn.

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.