Dự đoán một từ bằng mô hình Word2vec


20

Đưa ra một câu: "Khi tôi mở cửa ?? nó bắt đầu tự động sưởi ấm"

Tôi muốn có được danh sách các từ có thể trong ?? với một xác suất.

Khái niệm cơ bản được sử dụng trong mô hình word2vec là "dự đoán" một từ được đưa ra theo ngữ cảnh xung quanh.

Khi mô hình được xây dựng, thao tác vectơ ngữ cảnh phù hợp để thực hiện nhiệm vụ dự đoán của tôi trên các câu mới là gì?

Nó chỉ đơn giản là một tổng tuyến tính?

model.most_similar(positive=['When','I','open','the','door','it','starts' ,'heating','automatically'])

Tôi đã thực hiện thuật toán trên và bắt gặp một câu hỏi: Tại sao softmax được sử dụng? Để tôi chỉ cho bạn một ví dụ về hai hàm chuẩn hóa: def softmax (w, t = 1.0): # Nguồn: gist.github.com/stober/1946926 e = np.api (w / t) return e / np.sum ( e) def normalization (w): return w / np.sum (w) a = np.array ([. 0002, .0001, .01, .03]) in chuẩn hóa (a) in softmax (a, t = 1 ) Hãy so sánh các kết quả đầu ra: [0.00496278 0.00248139 0.24813896 0.74441687] [0.24752496 0.24750021 0.24996263 0.25501221] như chúng ta có thể thấy, softmax cho 0,03 xấp xỉ xác suất tương tự như so với 0,0001 (đó là

Câu trả lời:


9

Word2vec hoạt động trong hai mô hình CBOW và Skip-gram. Hãy lấy mô hình CBOW, vì câu hỏi của bạn diễn ra giống như cách dự đoán từ mục tiêu, đưa ra các từ xung quanh.

Về cơ bản, mô hình phát triển ma trận trọng số đầu vào và đầu ra, phụ thuộc vào các từ ngữ cảnh đầu vào và từ mục tiêu đầu ra với sự trợ giúp của một lớp ẩn. Do đó, lan truyền ngược được sử dụng để cập nhật các trọng số khi chênh lệch lỗi giữa vectơ đầu ra dự đoán và ma trận đầu ra hiện tại.

Về cơ bản, dự đoán từ mục tiêu từ các từ ngữ cảnh đã cho được sử dụng như một phương trình để thu được ma trận trọng số tối ưu cho dữ liệu đã cho.

Để trả lời phần thứ hai, có vẻ hơi phức tạp hơn chỉ là một tổng tuyến tính.

  1. Có được tất cả các vectơ từ của từ ngữ cảnh
  2. Trung bình họ để tìm ra vector lớp ẩn hcủa kích thướcNx1
  3. Lấy ma trận đầu ra syn1( word2vec.choặc gensim) có kích thướcVxN
  4. Nhân syn1với h, vectơ kết quả sẽ zcó kích thướcVx1
  5. Tính toán vectơ xác suất y = softmax(z)với kích thước Vx1, trong đó xác suất cao nhất biểu thị biểu diễn một nóng của từ mục tiêu trong từ vựng. Vbiểu thị kích thước của từ vựng và Nbiểu thị kích thước của vectơ nhúng.

Nguồn: http://cs224d.stanford.edu/lecture_notes/LectureNotes1.pdf

Cập nhật: Các mô hình bộ nhớ ngắn hạn hiện đang làm rất tốt trong việc dự đoán các từ tiếp theo. Các mô hình seq2seq được giải thích trong hướng dẫn tenorflow . Ngoài ra còn có một bài viết blog về thế hệ văn bản.


Cảm ơn bạn ! Bạn có biết về bất kỳ thực hiện này? (như một phần của gensim chẳng hạn). Mặt khác, nó không quá phức tạp để tính toán.
DED

Xin chào, bạn có thể cho tôi biết thêm chi tiết về cách truy xuất ma trận đầu ra (syn1 trong ví dụ của bạn) từ mô hình nhúng w2v được đào tạo không? Tôi nghĩ rằng w2v đã bỏ ma trận đầu ra khi kết thúc đào tạo.
Charles Chow

Dựa trên sự hiểu biết của tôi, câu trả lời của bạn cho câu hỏi thứ 2 là xây dựng lại ma trận đầu ra, điều đó có đúng không?
Charles Chow

1
Tôi nghĩ rằng đáng lưu ý rằng điều này không hoạt động như một trình phân loại trình tự. Thứ tự của các từ được bỏ qua.
hiển thị

Người ta có thể có được ma trận đầu ra syn1chỉ bằng cách lưu mô hình. có, việc đặt hàng bị bỏ qua, đối với ứng dụng người ta thực sự có thể đi với mô hình seq2seq dựa trên LSTM.
yazhi

4

Thiếu dự đoán từ đã được thêm vào như một chức năng trong phiên bản mới nhất của Word2Vec. Tất nhiên câu của bạn cần khớp với cú pháp nhập mô hình Word2Vec được sử dụng để đào tạo mô hình (chữ thường, chữ dừng, v.v.)

Cách sử dụng để dự đoán 3 từ hàng đầu cho "Khi tôi mở?"

print(model.predict_output_word(['When','I','open','door']), topn = 3)

Làm thế nào mà nó biết rằng đó centerlà từ giữa 3 và 4? Điều đó không có ý nghĩa với tôi. Tôi sẽ tưởng tượng chỉ các từ ngữ cảnh số chẵn có thể được đưa vào và nó sẽ chọn từ giữa floor(len(n)/2))floor(len(n)/2))+1
bmc
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.