Áp dụng các từ nhúng cho toàn bộ tài liệu, để có được một vectơ đặc trưng


38

Làm cách nào để sử dụng từ nhúng để ánh xạ tài liệu tới vectơ đặc trưng, ​​phù hợp để sử dụng với việc học có giám sát?

Một từ nhúng ánh xạ mỗi từ vào một vectơ , trong đó là một số không quá lớn (ví dụ: 500). Các từ nhúng phổ biến bao gồm word2vecGăng tay .v R d dwvRdd

Tôi muốn áp dụng học tập có giám sát để phân loại tài liệu. Tôi hiện đang ánh xạ mỗi tài liệu vào một vectơ đặc trưng bằng cách sử dụng biểu diễn túi từ, sau đó áp dụng trình phân loại ngoài giá. Tôi muốn thay thế vectơ đặc trưng của từ bằng một từ dựa trên cách nhúng từ được đào tạo sẵn, để tận dụng kiến ​​thức ngữ nghĩa có trong từ nhúng. Có một cách tiêu chuẩn để làm điều đó?

Tôi có thể tưởng tượng một số khả năng, nhưng tôi không biết liệu có thứ gì đó có ý nghĩa nhất không. Cách tiếp cận ứng viên mà tôi đã xem xét:

  • Tôi có thể tính toán vectơ cho mỗi từ trong tài liệu và tính trung bình tất cả chúng. Tuy nhiên, điều này có vẻ như có thể mất rất nhiều thông tin. Ví dụ, với cách biểu thị túi từ, nếu có một vài từ có liên quan cao đến nhiệm vụ phân loại và hầu hết các từ không liên quan, trình phân loại có thể dễ dàng học được điều đó; nếu tôi tính trung bình các vectơ cho tất cả các từ trong tài liệu, bộ phân loại không có cơ hội.

  • Ghép các vectơ cho tất cả các từ không hoạt động, vì nó không dẫn đến một vectơ đặc trưng có kích thước cố định. Ngoài ra nó có vẻ như là một ý tưởng tồi bởi vì nó sẽ quá nhạy cảm với vị trí cụ thể của một từ.

  • Tôi có thể sử dụng từ nhúng để phân cụm từ vựng của tất cả các từ thành một cụm cố định, giả sử, 1000 cụm, trong đó tôi sử dụng độ tương tự cosine trên các vectơ như một thước đo độ tương tự của từ. Sau đó, thay vì một cụm từ, tôi có thể có một cụm túi: vectơ đặc trưng mà tôi cung cấp cho lớp này có thể là một vectơ 1000, trong đó thành phần thứ đếm số lượng từ trong tài liệu là một phần của cụm .tôiii

  • Cho một từ , các từ nhúng này cho phép tôi tính toán một bộ gồm 20 từ giống nhau nhất hàng đầu và điểm tương tự của chúng . Tôi có thể điều chỉnh vectơ đặc trưng giống như từ bằng cách sử dụng cái này. Khi tôi thấy từ , ngoài việc tăng phần tử tương ứng với từ thêm , tôi cũng có thể tăng phần tử tương ứng với từ theo , tăng phần tử tương ứng với từ lên , v.v.w 1 , ... , w 20 s 1 , ... , s 20 w w 1 w 1 s 1 w 2 s 2ww1,,w20s1,,s20ww1w1s1w2s2

Có cách tiếp cận cụ thể nào có khả năng hoạt động tốt để phân loại tài liệu không?


Tôi không tìm kiếm đoạn2vec hoặc doc2vec; những người yêu cầu đào tạo trên một kho dữ liệu lớn và tôi không có kho dữ liệu lớn. Thay vào đó, tôi muốn sử dụng một từ nhúng hiện có.


1
Bạn đã quyết định một phương pháp cụ thể để thể hiện các tài liệu bằng cách sử dụng các phần nhúng được đào tạo trước chưa? Có lẽ điều này có thể giúp một chút?
turdus-merula

1
@ user115202, gọn gàng! Điều đó không giải quyết được vấn đề tôi gặp phải, nhưng đó là một ý tưởng thông minh nghe có vẻ đáng để biết - cảm ơn bạn đã chỉ ra! Tôi chưa bao giờ tìm thấy một giải pháp rất tốt cho vấn đề này tốt hơn đáng kể so với việc sử dụng từ ngữ. Có lẽ đây không phải là những gì từ nhúng tốt. Cảm ơn!
DW

Điều này cũng liên quan đến vấn đề của bạn, có thể nhiều hơn một chút so với vấn đề trước đây: Học đại diện cho các văn bản rất ngắn bằng cách sử dụng tổng hợp nhúng từ có trọng số .
turdus-merula


1
Tại sao không sử dụng RNN? Các tài liệu có độ dài thay đổi không phải là vấn đề đối với RNN. wildml.com/2015/09/...
Kalu

Câu trả lời:


23

Một kỹ thuật đơn giản có vẻ hoạt động hợp lý tốt cho các văn bản ngắn (ví dụ: câu hoặc tweet) là tính toán vectơ cho mỗi từ trong tài liệu, sau đó tổng hợp chúng bằng cách sử dụng trung bình tọa độ khôn ngoan, tối thiểu hoặc tối đa.

Dựa trên kết quả trong một bài báo gần đây, có vẻ như việc sử dụng min và max hoạt động khá tốt. Nó không tối ưu, nhưng nó đơn giản và tốt hoặc tốt hơn các kỹ thuật đơn giản khác. Cụ thể, nếu các vectơ cho từ trong tài liệu là , thì bạn tính và . Ở đây, chúng ta lấy mức tối thiểu theo tọa độ, tức là tối thiểu là một vectơ sao cho và tương tự cho max. Vectơ đặc trưng là sự kết hợp của hai vectơ này, vì vậy chúng ta có được một vectơ đặc trưng trongnv1,v2,,vnRdmax ( v 1 , ... , v n ) u u i = min ( v 1 i , ... , v n i ) R 2 dmin(v1,,vn)max(v1,,vn)uui=min(vi1,,vin)R2d. Tôi không biết điều này tốt hơn hay tệ hơn cách diễn đạt bằng từ ngữ, nhưng đối với các tài liệu ngắn, tôi nghi ngờ nó có thể hoạt động tốt hơn so với từ ngữ và nó cho phép sử dụng các từ nhúng được đào tạo trước.

TL; DR: Đáng ngạc nhiên, sự kết hợp giữa min và max hoạt động khá tốt.

Tài liệu tham khảo:

Học đại diện cho các văn bản rất ngắn bằng cách sử dụng tổng hợp nhúng từ có trọng số. Cedric De Boom, Steven Van Canneyt, Thomas Demeester, Bart Dhoedt. Thư nhận dạng mẫu; arxiv: 1607.00570. trừu tượng , pdf . Xem đặc biệt Bảng 1 và 2.

Tín dụng: Cảm ơn @ user115202 đã chú ý đến bài báo này.


4
đối với văn bản ngắn, avg / min / max có thể hoạt động tốt, nhưng nếu văn bản dài, chẳng hạn như bài viết tin tức thì sao?

1
Đối với bất kỳ ai đọc qua bài báo đó và bị nhầm lẫn như tôi: bài báo không tập trung vào cách tiếp cận được đề cập bởi @DW, họ chỉ đề cập ngắn gọn trong "5.1. Baselines" như một cách tiếp cận cơ bản. Phần chính của bài viết tập trung vào kỹ thuật riêng của họ, bao gồm đào tạo một bộ phân loại bằng cách sử dụng các phần nhúng, phức tạp hơn nhiều so với cách tiếp cận được nêu ở đây!
Migwell

16

Bạn có thể sử dụng doc2vec tương tự như word2vec và sử dụng mô hình được đào tạo trước từ một kho văn bản lớn. Sau đó sử dụng một cái gì đó như .infer_vector()trong gensim để xây dựng một vectơ tài liệu. Việc đào tạo doc2vec không cần thiết phải đến từ tập huấn luyện.

Một phương pháp khác là sử dụng RNN, CNN hoặc cung cấp mạng chuyển tiếp để phân loại. Điều này kết hợp hiệu quả các vectơ từ thành một vectơ tài liệu.

Bạn cũng có thể kết hợp các tính năng thưa thớt (từ) với các tính năng dày đặc (vectơ từ) để bổ sung cho nhau. Vì vậy, ma trận tính năng của bạn sẽ là sự kết hợp của túi ma trận từ thưa thớt với trung bình của vectơ từ. https://research.googleblog.com/2016/06/ Worldwide-deep-learning-better-together-with.html

Một phương pháp thú vị khác là sử dụng thuật toán tương tự word2vec nhưng thay vì dự đoán từ mục tiêu, bạn có thể dự đoán nhãn đích. Điều này trực tiếp điều chỉnh các vectơ từ cho nhiệm vụ phân loại. http://arxiv.org/pdf/1607.01759v2.pdf

Đối với các phương pháp ad hoc hơn, bạn có thể thử cân các từ khác nhau tùy theo cú pháp. Ví dụ, bạn có thể cân động từ mạnh hơn các yếu tố quyết định.


6

Nếu bạn đang làm việc với văn bản tiếng Anh và muốn bắt đầu nhúng từ được đào tạo trước, thì vui lòng xem điều này: https://code.google.com.vn/archive/p/word2vec/

Đây là phiên bản C gốc của word2vec. Cùng với bản phát hành này, họ cũng đã phát hành một mô hình được đào tạo trên 100 tỷ từ được lấy từ các bài báo của Google News (xem tiểu mục có tiêu đề: "Các vectơ từ và cụm từ được đào tạo trước").

Theo ý kiến ​​và kinh nghiệm của tôi khi làm việc với các từ nhúng, để phân loại tài liệu, một mô hình như doc2vec (với CBOW) hoạt động tốt hơn nhiều so với túi từ.

Vì, bạn có một kho văn bản nhỏ, tôi đề nghị, bạn khởi tạo ma trận nhúng từ của mình bằng các nhúng được đào tạo trước được đề cập ở trên. Sau đó đào tạo cho vectơ đoạn trong mã doc2vec. Nếu bạn cảm thấy thoải mái với python, bạn có thể kiểm tra phiên bản gensim của nó, rất dễ sửa đổi.

Đồng thời kiểm tra bài viết này để biết chi tiết hoạt động bên trong của word2vec / doc2vec: http://arxiv.org/abs/1411.2738 . Điều này sẽ làm cho việc hiểu mã gensim rất dễ dàng.


1
Cảm ơn những lời đề nghị. Tôi không yêu cầu nhúng từ; Tôi đã biết làm thế nào để có được một từ nhúng được đào tạo trước (tôi đã đề cập đến word2vec trong câu hỏi của tôi). Câu hỏi của tôi là làm thế nào để xây dựng các vectơ đặc trưng từ việc nhúng từ được đào tạo trước. Tôi đánh giá cao tài liệu tham khảo về doc2vec, nhưng kho dữ liệu của tôi khá nhỏ và vì vậy tôi nghi ngờ / sợ rằng việc cố gắng đào tạo mã doc2vec sẽ phù hợp và hoạt động kém (ngay cả khi tôi khởi tạo ma trận bằng các nhúng nhúng được đào tạo trước).
DW
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.