áp dụng word2vec trên các tệp văn bản nhỏ


11

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).

Câu trả lời:


9

Word2Vec không phải là một lựa chọn tốt cho bộ dữ liệu có kích thước như vậy. Từ các nghiên cứu tôi đã thấy, nó sẽ giải phóng sức mạnh của nó nếu bạn cung cấp ít nhất vài triệu từ, các tweet 3k sẽ không đủ cho một từ tương tự ngắn gọn.


chúng ta có cần xóa mật khẩu như một bước xử lý dữ liệu không?
samsamara

2
Không, theo cách tiếp cận word2vec, bạn không cần phải làm điều đó, vì thuật toán tự dựa vào ngữ cảnh rộng để tìm sự tương đồng trong từ, vì vậy hãy dừng các từ (hầu hết là giới từ, đại từ và đại từ) là một khẳng định quan trọng cho thuật toán .
chewpakabra

nhưng khi tôi đang sử dụng công cụ khoảng cách để tìm hầu hết các từ tương tự với một từ nhất định, phiên bản có từ khóa bị loại bỏ đã cho tôi những từ hợp lý hơn phiên bản không có. bạn có thể đoán điều này có nghĩa là gì không?
samsamara

Có thể, bạn đang sử dụng bối cảnh quá hẹp: nếu mô hình của bạn nhìn vào, giả sử, hai từ trở lại và chuyển tiếp, bạn sẽ có tới 2 từ khóa trong ngữ cảnh và điều đó có thể cho kết quả tồi tệ hơn. Nếu bạn sẽ mở rộng bối cảnh (sẽ làm cho mô hình lớn hơn và thời gian đào tạo lâu hơn), mô hình với mật khẩu sẽ cho bạn kết quả tốt hơn, tôi giả sử.
chewpakabra

cảm ơn cho đầu vào, có ý nghĩa hơn bây giờ. Ngoài ra vì word2vec xử lý câu đầu vào theo câu, điều gì sẽ xảy ra nếu tôi trộn các câu trong tài liệu đầu vào? Điều đó hoàn toàn nên thay đổi các vectơ đầu ra phải không? Ngoài ra, một lần nữa, với việc xử lý được gửi bằng cách gửi, word2vec khác với doc2vec như thế nào? cảm ơn lần nữa
samsamara
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.