Tôi hoàn toàn mới với word2vec vì vậy hãy mang nó theo. Tôi có một tập hợp các tệp văn bản, mỗi tệp chứa một tập các tweet, trong khoảng 1000-3000. Tôi đã chọn một từ khóa phổ biến ("kw1") và muốn tìm các thuật ngữ có liên quan về mặt ngữ nghĩa cho "kw1" bằng word2vec. Ví dụ: nếu từ khóa là "apple", tôi sẽ thấy các thuật ngữ liên quan như "ipad" "os" "mac" ... dựa trên tệp đầu vào. Vì vậy, tập hợp các thuật ngữ liên quan cho "kw1" này sẽ khác nhau đối với mỗi tệp đầu vào vì word2vec sẽ được đào tạo trên các tệp riêng lẻ (ví dụ: 5 tệp đầu vào, chạy word2vec 5 lần trên mỗi tệp).
Mục tiêu của tôi là tìm các tập hợp các thuật ngữ liên quan cho mỗi tệp đầu vào với từ khóa chung ("kw1"), sẽ được sử dụng cho một số mục đích khác.
Câu hỏi / nghi ngờ của tôi là:
- Liệu nó có ý nghĩa để sử dụng word2vec cho một nhiệm vụ như thế này? về mặt kỹ thuật có đúng không khi sử dụng khi xem xét kích thước nhỏ của tệp đầu vào?
Tôi đã tải xuống mã từ code.google.com: https://code.google.com.vn/p/word2vec/ và vừa cho nó chạy khô như sau:
time ./word2vec -train $file -output vectors.bin -cbow 1 -size 200 -window 10 -negative 25 -hs 1 -sample 1e-3 -threads 12 -binary 1 -iter 50
./distance vectors.bin
Từ kết quả của tôi, tôi thấy tôi nhận được nhiều thuật ngữ ồn ào (từ khóa) khi tôi đang sử dụng công cụ 'khoảng cách' để có được các thuật ngữ liên quan đến "kw1". Vì vậy, tôi đã loại bỏ các từ khóa và các thuật ngữ ồn ào khác như đề cập đến người dùng. Nhưng tôi chưa thấy bất cứ nơi nào mà word2vec yêu cầu dữ liệu đầu vào được làm sạch ...?
Làm thế nào để bạn chọn đúng tham số? Tôi thấy kết quả (từ việc chạy công cụ khoảng cách) thay đổi rất nhiều khi tôi thay đổi các tham số như '-window', '-iter'. Tôi nên sử dụng kỹ thuật nào để tìm các giá trị chính xác cho các tham số. (bản dùng thử thủ công và lỗi là không thể đối với tôi vì tôi sẽ nhân rộng bộ dữ liệu).