6

Trong NLP, nó luôn luôn là trường hợp mà kích thước của các tính năng là rất lớn. Ví dụ, đối với một dự án trong tầm tay, kích thước của các tính năng là gần 20 nghìn (p = 20.000), và mỗi đối tượng là một số nguyên 0-1 để cho biết một từ hoặc gam cụ thể được trình bày trong một bài báo hay không là điểm dữ liệu $ x \ trong R^{p} $).Trong xử lý ngôn ngữ tự nhiên (NLP), làm cách nào để bạn giảm kích thước hiệu quả?

Tôi biết sự thừa trong số các đối tượng địa lý là rất lớn, do đó việc giảm kích thước là cần thiết. Tôi có ba câu hỏi:

1) Tôi có 10 nghìn điểm dữ liệu (n = 10.000) và mỗi điểm dữ liệu có 10 nghìn đối tượng địa lý (p = 10.000). Cách hiệu quả để tiến hành giảm kích thước là gì? Ma trận $ X \ trong R^{n \ lần p} $ quá lớn đến mức cả PCA (hoặc SVD, SVD cắt ngắn là OK, nhưng tôi không nghĩ SVD là cách tốt để giảm độ mờ cho các tính năng nhị phân) và Túi Từ ngữ (hoặc K-means) khó có thể được thực hiện trực tiếp trên $ X $ (Chắc chắn, nó thưa thớt). Tôi không có máy chủ, tôi chỉ sử dụng PC của mình :-(

2) Làm thế nào để đánh giá sự giống nhau hoặc khoảng cách giữa hai điểm dữ liệu? Tôi nghĩ khoảng cách Euclide có thể không hoạt động tốt cho các tính năng nhị phân. Làm thế nào về chuẩn L0? Bạn dùng gì?

3) Nếu tôi muốn sử dụng máy SVM (hoặc các phương pháp hạt nhân khác) để tiến hành phân loại, tôi nên sử dụng hạt nhân nào?

Rất cám ơn!

+3

trông giống như một câu hỏi hay cho cộng đồng này http://stats.stackexchange.com/ – Leo

Trả lời

2

1) Bạn không cần giảm kích thước. Nếu bạn thực sự muốn, bạn có thể sử dụng một trình phân loại tuyến tính bị phạt L1 để giảm thiểu các tính năng hữu ích nhất.

2) Mức độ tương tự của Cosin thường được sử dụng hoặc tương tự cosin của các vectơ được thay đổi TFIDF.

3) SVM tuyến tính hoạt động tốt nhất với nhiều tính năng.

Có một hướng dẫn tốt về cách làm việc phân loại như thế này trong python đây: http://scikit-learn.org/dev/tutorial/text_analytics/working_with_text_data.html

Các vấn đề liên quan