2012-01-26 35 views
6

Ví dụ, tôi có hàng tỷ cụm từ ngắn và tôi muốn các cụm từ tương tự nhau.cách tìm các câu/cụm từ tương tự trong R?

> strings.to.cluster <- c("Best Toyota dealer in bay area. Drive out with a new car today", 
         "Largest Selection of Furniture. Stock updated everyday" , 
         " Unique selection of Handcrafted Jewelry", 
         "Free Shipping for orders above $60. Offer Expires soon", 
         "XXXX is where smart men buy anniversary gifts", 
         "2012 Camrys on Sale. 0% APR for select customers", 
         "Closing Sale on office desks. All Items must go" 
         ) 

giả định rằng vectơ này là hàng trăm nghìn hàng. Có một gói trong R để cụm các cụm từ này bằng ý nghĩa? hoặc ai đó có thể đề xuất một cách để xếp hạng các cụm từ "tương tự" theo nghĩa cho một cụm từ nhất định.

+0

Bạn đề xuất định nghĩa "ý nghĩa" như thế nào? Những cụm từ mẫu nào của bạn nên được nhóm lại với nhau? – tripleee

Trả lời

7

Bạn có thể xem cụm từ của mình là "túi từ", nghĩa là xây dựng ma trận (ma trận "tài liệu"), với một hàng cho mỗi cụm từ, một cột cho mỗi từ, với 1 nếu từ xuất hiện trong cụm từ và 0 nếu không. (Bạn có thể thay thế 1 bằng một số trọng lượng sẽ tính đến độ dài cụm từ và tần suất từ). Sau đó, bạn có thể áp dụng bất kỳ thuật toán phân cụm nào. Gói tm có thể giúp bạn tạo ma trận này.

library(tm) 
library(Matrix) 
x <- TermDocumentMatrix(Corpus(VectorSource(strings.to.cluster))) 
y <- sparseMatrix(i=x$i, j=x$j, x=x$v, dimnames = dimnames(x)) 
plot(hclust(dist(t(y)))) 
+0

Tắt đề xuất của Vincent có một chỉ số khác nhau trong gói tm có nhiều đối số khoảng cách bao gồm "pearson". Bạn có thể sử dụng một số loại mức độ tương tự/dissimilaerty và chỉ chọn các câu mà thịt tiêu chí thiết lập. –

+0

@TylerRinker, cảm ơn câu hỏi của bạn. Tôi đang nghĩ về hầu hết các cụm từ liên quan đến ý nghĩa. Trong ví dụ của tôi, "đóng cửa bán hàng trên bàn làm việc .." và "Lựa chọn đồ nội thất lớn nhất ..." được nhóm lại với nhau (cùng với những người khác) –

+0

Nếu phương pháp này không hoạt động (ví dụ: bạn cần nhiều câu với cả từ "bàn" và "đồ nội thất" để tự động nhận dạng chúng là có liên quan), bạn có thể thêm một số kiến ​​thức về ý nghĩa của từ (có gói 'wordnet', biết rằng bàn là một phần của đồ nội thất) hoặc tự gắn thẻ một số câu (đặt chúng trong các lớp khác nhau, ví dụ: "xe hơi", "đồ nội thất", "du lịch", "đồ ăn", v.v.) và sử dụng chúng như một bộ đào tạo để tự động gắn thẻ phần còn lại của dữ liệu. –

1

Có thể xem tài liệu này: http://www.inside-r.org/howto/mining-twitter-airline-consumer-sentiment có thể giúp, sử dụng R và xem xét tâm lý thị trường cho các hãng hàng không sử dụng twitter.

+0

đó là một cách tiếp cận thú vị nhưng xuất hiện phù hợp hơn để phân loại (ví dụ: tốt/xấu, + ve/-ve) và không cho số liệu tương tự dựa trên cụm/ý nghĩa mà tôi quan tâm. –

+0

@sgtpepper Có lẽ gói tm có thể là một nơi tốt để bắt đầu tìm kiếm. – aatrujillob

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