Chúng ta có thể tận dụng lợi ích của việc sử dụng học chuyển trong khi đào tạo mô hình word2vec không?


13

Tôi đang tìm kiếm một trọng số được đào tạo trước của một mô hình đã được đào tạo như dữ liệu Google News, v.v. Tôi thấy khó có thể đào tạo một mô hình mới với đủ số lượng (10 GB, v.v.) cho chính mình. Vì vậy, tôi muốn nhận được lợi ích từ việc học chuyển, trong đó tôi có thể có được trọng số lớp được đào tạo trước và đào tạo lại các trọng số đó trên các từ cụ thể trong miền của mình. Vì vậy, chắc chắn sẽ mất tương đối ít thời gian hơn trong đào tạo. Bất kỳ loại trợ giúp sẽ được đánh giá cao. Cảm ơn trước :)

Câu trả lời:


10

Có, bạn có thể tận dụng các mô hình được đào tạo trước. Mô hình nổi tiếng nhất là mô hình được đào tạo GoogleNewsData mà bạn có thể tìm thấy ở đây.

Các vectơ từ và cụm từ được đào tạo trước https://drive.google.com/file/d/0B7XkCwpI5KDYNlNUTTlSS21pQmM/edit?usp=shaming

Sau đó, bạn có thể tải các vectơ ở định dạng nhị phân trong mô hình của mình bằng gensim như dưới đây.

>>> model = Word2Vec.load_word2vec_format('/tmp/vectors.txt', binary=False)  # C text format
>>> model = Word2Vec.load_word2vec_format('/tmp/vectors.bin', binary=True)  # C binary format

Đây là một mô hình được xây dựng sẵn khác cho Wikipedia tiếng Anh:

https://github.com/idio/wiki2vec/raw/master/torrents/enwiki-gensim-word2vec-1000-nostem-10cbow.torrent

Nguồn: https://github.com/idio/wiki2vec/

Sử dụng mô hình dựng sẵn

Get python 2.7
Install gensim: pip install gensim
uncompress downloaded model: tar -xvf model.tar.gz
Load model in gensim:
from gensim.models import Word2Vec
model = Word2Vec.load("path/to/word2vec/en.model")
model.similarity('woman', 'man')

Bạn cũng có thể sử dụng Găng tay NLP Stanford

Dưới đây là một bản tổng hợp tuyệt vời của các mô hình word2vec được đào tạo trước.

Một số mô hình được đào tạo bổ sung:

Thông tin thêm về gensim và mã tại đây: https://radimrehurek.com/gensim/models/word2vec.html

Diễn đàn Quora với một câu hỏi tương tự


2
Được rồi, đó là phần tuyệt vời của thông tin công việc tốt. Nhưng, tôi có thể sử dụng trọng số lớp mô hình được đào tạo trước để khởi tạo một mô hình mới và sau đó điều chỉnh mô hình đó với các câu của tôi không?
Nomiluks

@Nomi Vâng. Từ [tài liệu gensim] ( radimrehurek.com/gensim/models/word2vec.html ), một khi bạn tải mô hình,model = Word2Vec.load(fname) # you can continue training with the loaded model!
Guru

1
Liên kết tài liệu ở trên đề cập: "LƯU Ý: Không thể tiếp tục đào tạo các vectơ được tải từ định dạng C vì trọng số ẩn, tần số từ vựng và cây nhị phân bị thiếu."
trailblazer

3

Các đại diện phân phối (Găng tay) dựa trên đào tạo trên một khối lượng lớn có sẵn trực tiếp từ nhóm NLP Stanford. Bạn có thể sử dụng các từ nhúng đó trực tiếp trong ứng dụng của mình (thay vì sử dụng 1 vectơ được mã hóa nóng và sau đó đào tạo mạng để có được các nhúng). Nếu nhiệm vụ của bạn không quá chuyên biệt, bắt đầu với bộ nhúng này sẽ hoạt động tốt trong thực tế.

Nó sẽ giúp bạn tiết kiệm được việc đào tạo thêm số lượng tham sốm×V trong đó là kích thước từ vựng và là kích thước của không gian nhúng mà bạn muốn chiếu vào.Vm


Nhưng, tôi muốn khởi tạo mô hình word2vec mới của mình với trọng số mô hình được đào tạo trước. Có thể sử dụng trọng lượng lớp mô hình đã được đào tạo trước để khởi tạo mô hình mới. Sau khi khởi tạo tôi muốn đào tạo mô hình đó với các câu mới. có thể không
Nomiluks

Có bạn có thể. Tuy nhiên tôi không nghĩ rằng ma trận trọng lượng có sẵn công khai
wợi

Phải, phải không ...? Nếu chúng ta tự đào tạo một mô hình và cố gắng truy cập quyền truy cập vào các trọng số mô hình được đào tạo bằng thư viện Gensim. Có thể không
Nomiluks 19/03/2016

Không chắc chắn về gensim nhưng vì đó là một tham số được tối ưu hóa nên hầu hết các phần mềm sẽ cho phép nó
wợi

@HrishikeshGanu Liên kết này có còn hoạt động không? github.com/idio/wiki2vec/raw/master/torrents/ nam Nguồn: github.com/idio/wiki2vec
Anish

1

Hãy xem bài báo này [PDF] . Trọng tâm chính là về nhiệm vụ NER nhưng ý tưởng là như nhau - lấy các vectơ word2vec được đào tạo trước và điều chỉnh chúng cho một ứng dụng cụ thể.

Nhiều ứng dụng dựa trên mạng thần kinh phổ biến cho NLP thường bắt đầu với các vectơ được đào tạo trước. Ví dụ, một bài báo gần đây [PDF] (nhiệm vụ gắn thẻ NER và POS) thực hiện điều này.


-1
from gensim.models import Word2Vec 
# Word2Vec is full model which is trainable but takes larger memory

from gensim.models import KeyedVectors  
# KeyedVectors is reduced vector model which is NOT trainable but takes less memory

model = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True) #load pretrained google w2v 

sen1 = 'w1 w2 w3'    
sen2 = 'word1 word2 word3'    
sentences = [[word for word in sen1.split()],[word for word in sen2.split()]]    
total_examples = model_2.corpus_count    

model_2 = Word2Vec(size=300, min_count=1) #initiate a full model    
model_2.build_vocab(sentences) #add words in training dataset

#load words from pretrained google dataset    
model_2.build_vocab([list(model.vocab.keys())], update=True)    
model_2.intersect_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True, lockf=1.0)

#retrain pretrained w2v from new dataset    
model_2.train(sentences, total_examples=total_examples, epochs=model_2.iter)
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.