Làm thế nào để tạo một danh sách các từ khóa tốt


9

Tôi đang tìm kiếm một số gợi ý về cách sắp xếp một danh sách các từ khóa. Có ai đó biết / ai đó có thể đề xuất một phương pháp tốt để trích xuất danh sách từ khóa từ chính bộ dữ liệu để tiền xử lý và lọc không?

Dữ liệu:

một lượng lớn văn bản đầu vào của con người có độ dài thay đổi (searchterms và toàn bộ câu (tối đa 200 ký tự)) trong vài năm. Văn bản chứa rất nhiều thư rác (như đầu vào máy từ bot, từ đơn, tìm kiếm ngu ngốc, tìm kiếm sản phẩm ...) và chỉ một vài% có vẻ hữu ích. Tôi nhận ra rằng đôi khi (chỉ rất hiếm khi) mọi người tìm kiếm phía tôi bằng cách hỏi những câu hỏi thực sự hay. Những câu hỏi này rất hay, đến nỗi tôi nghĩ rằng đáng để tìm hiểu sâu hơn về chúng để xem cách mọi người tìm kiếm theo thời gian và những chủ đề mà mọi người đã quan tâm khi sử dụng trang web của tôi.

Vấn đề của tôi:

là tôi đang thực sự vật lộn với quá trình tiền xử lý (tức là bỏ thư rác). Tôi đã thử một số danh sách từ trên web (NLTK, v.v.), nhưng chúng không thực sự giúp ích cho nhu cầu của tôi về bộ dữ liệu này.

Cảm ơn ý kiến ​​và thảo luận của bạn!


1
Mô-đun Python NLTK cung cấp dữ liệu mật khẩu và nếu nó không giúp bạn cung cấp thêm thông tin về tập dữ liệu của bạn. Tại sao nó không hữu ích trong trường hợp của bạn?
Kasra Manshaei

@kasramsh: Khi tôi lọc các SW này, tôi có cảm tưởng rằng điều này không lọc được thư rác. Tôi nghĩ lý do là, những danh sách này được tạo trên các văn bản tự nhiên (không chắc chắn) và do đó không thể sử dụng được cho các truy vấn tìm kiếm và trang web. Giống như khi bạn phân cụm (dựa trên độ tương tự của chuỗi tìm kiếm) tôi có cảm tưởng rằng thư rác có tác động mạnh mẽ ở mức entropy và do đó trộn lẫn kết quả cuối cùng: - /.
PlagTag

1
Tôi nghĩ rằng @PlagTag không hiểu nó là gì stop words. Stop-wrods là danh sách của hầu hết các từ thông dụng trong một số ngôn ngữ, ví dụ I, the, avà vân vân. Bạn sẽ chỉ loại bỏ những từ này khỏi văn bản của bạn trước khi bắt đầu đào tạo thuật toán của bạn để thử xác định văn bản nào là thư rác hay không. Nó không giúp bạn xác định văn bản nào là thư rác hay không, nó có thể cải thiện thuật toán học tập của bạn.
itdxer

@itdxer, cảm ơn bình luận của bạn. Tôi đã sử dụng thuật ngữ mật khẩu ở đây trong một phạm vi rộng hơn (vì tôi nghĩ nó có thể ổn cho mục đích này). Cảm ơn bạn đã làm sáng tỏ vấn đề ;-)
PlagTag

Câu trả lời:


5

Một cách tiếp cận sẽ là sử dụng điểm số tf-idf . Các từ xuất hiện trong hầu hết các truy vấn sẽ giúp ích rất ít trong việc phân biệt các truy vấn tìm kiếm tốt với các truy vấn xấu. Nhưng những cái xảy ra rất thường xuyên (tần số tf hoặc tần số cao) chỉ trong một vài truy vấn (tần số tài liệu idf hoặc nghịch đảo cao) có thể quan trọng hơn trong việc phân biệt các truy vấn tốt với các truy vấn xấu.


Thx rất nhiều, tôi sẽ thử cái này và báo cáo ở đây!
PlagTag

thực sự chỉ có một số điểm IDF cao sẽ làm nên chuyện
CpILL

2

Nó phụ thuộc vào ứng dụng của bạn.

Khi bạn đang thực hiện mô hình chủ đề, trước tiên hãy thử mật khẩu mặc định. Khi có một số từ xuất hiện nổi bật trong nhiều chủ đề (lưu ý công thức khá mơ hồ của tôi), chúng là ứng cử viên tốt cho các từ khóa bổ sung.

Ví dụ, trong một kho văn bản có các văn bản chứa hình và tài liệu dạng bảng, các từ "fig", "hình", "tab" hoặc "bảng" là những từ khóa bổ sung tốt. Trong kết quả, chủ đề của bạn trở nên rõ ràng hơn.


1

Sử dụng TFIDF (tần số tài liệu nghịch đảo tần số) sẽ giải quyết mục đích của bạn. Lấy điểm TFIDF cho mỗi từ trong tài liệu của bạn và sắp xếp các từ theo điểm số của chúng để bạn có thể chọn các từ quan trọng trong dữ liệu của mình.


1

Một cách tiếp cận tôi đã sử dụng để xây dựng một danh sách từ khóa là xây dựng và huấn luyện mô hình hồi quy logistic (do tính dễ hiểu của nó) trên dữ liệu văn bản của bạn. Lấy giá trị tuyệt đối của các hệ số cho mỗi mã thông báo. Sau đó, sắp xếp giảm dần giá trị tuyệt đối của các hệ số của mã thông báo. Sau đó, tạo một danh sách tất cả các mã thông báo có giá trị tuyệt đối hệ số cao có thể dẫn đến quá mức hoặc có thể đáp ứng một số tiêu chí khác để trở thành một từ khóa. Danh sách đó là danh sách từ khóa của bạn. Sau đó, bạn có thể áp dụng danh sách từ khóa đó cho một bộ tài liệu khác thuộc loại này (giống như một bộ kiểm tra), để xem việc loại bỏ chúng có làm tăng độ chính xác, độ chính xác hoặc thu hồi của mô hình bộ kiểm tra hay không.

Chiến lược này có hiệu quả vì nó tính đến tác động của các mã thông báo khi xây dựng danh sách từ khóa.


0

Mật khẩu có thể là một phần của giải pháp tại một số điểm, nhưng không phải là chìa khóa. Trong mọi trường hợp đối với bất kỳ ngôn ngữ chính nào đều tồn tại danh sách tốt các từ dừng, nó không phải là tên miền cụ thể.

Tôi cũng không nghĩ rằng chỉ sử dụng TD-IDF là thực sự chính xác. Có thể có những từ rất hiếm (có khả năng là rác) trong các chuỗi chất lượng kém.

Thay vì cố gắng đoán những tính năng chính xác rất hữu ích: Tôi sẽ bắt đầu bằng cách tạo ra một tập dữ liệu bằng cách chọn ngẫu nhiên một số dữ liệu và ghi nhãn bằng tay (như goodhay bad, hoặc trên thang điểm từ 0,0-1,0). Sau đó, mã hóa một cái gì đó kéo ra nhiều tính năng (độ dài, số lượng từ (mã thông báo), điểm thư rác, cho dù nó có chứa URL hoặc ký tự botish, ngôn ngữ được phát hiện, cho dù nó có dấu hỏi, liệu nó có viết hoa đúng không). Cũng đừng quên bao gồm các tính năng phi ngôn ngữ mà bạn có thể có, như quốc gia của GeoIP của người dùng đã thực hiện truy vấn, cho dù người dùng đã đăng nhập, tài khoản của người dùng bao nhiêu tuổi. Vì vậy, tại thời điểm này, bạn sẽ có một bảng / CSV lớn và một bảng nhỏ hơn có thêm một cột cho nhãn bạn đã thêm.

Sau đó đào tạo một số gói học máy với các ví dụ được dán nhãn để xây dựng một mô hình đủ chính xác cho bạn. Sau đó để mô hình đó chạy trên phần còn lại của dữ liệu.

Nếu bạn không muốn mã quá nhiều, bạn thậm chí có thể chuyển các tính năng đó sang dạng CSV và đưa chúng vào giao diện bảng tính của API Dự đoán của Google .

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.