2012-01-26 26 views
6

例、私は数十億の短いフレーズを持っていて、それらのクラスターに似ています。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" 
         ) 

このベクトルが何十万行もあると仮定します。これらのフレーズを意味づけするためにRにパッケージがありますか? 、または誰かが、特定のフレーズに意味を付けて "類似した"フレーズをランク付けする方法を提案する可能性があります。

+0

"意味"を定義する方法をどのように提案しますか?あなたの模範的なフレーズのどれを一緒に集めるべきですか? – tripleee

答えて

7

フレーズを「単語の袋」として見ることができます。つまり、フレーズごとに1つの行、単語ごとに1つの列、単語内に単語がある場合は1つの行列(「用語 - 文書」行列)それ以外は0です。 (フレーズの長さと単語の頻度を考慮した重みを1に置き換えることができます)。その後、任意のクラスタリングアルゴリズムを適用できます。 tmパッケージは、このマトリックスを構築するのに役立ちます。

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

ヴィンセントの提案から離れて、 "ピアソン"を含む多くの距離の引数を取るtmパッケージの相違点の統計があります。あなたは類似/相違のレベルのいくつかの並べ替えのレベルを使用することができ、肉の設定された基準の文だけを選択します。 –

+0

@TylerRinker、ご質問ありがとうございます。私は主に意味に関連するフレーズを考えています。私の例では、「オフィスデスクでの販売を閉鎖します」と「家具の最大の選択...」と一緒にクラスタ化されます(おそらく他の人と一緒に) –

+0

この方法がうまくいかない場合(たとえば、 「デスク」と「家具」の両方の単語を使用して関連性のあるものとして自動的に識別することができます)、単語の意味に関する知識を追加することができます(ワードネットパッケージがあります。家具)、「手すり」、「旅行」、「食べ物」などの異なるクラスに入れて、手動でタグ付けして残りのものに自動的にタグ付けするトレーニングセットとして使用することができますデータの –

1

http://www.inside-r.org/howto/mining-twitter-airline-consumer-sentiment 多分この文書を見て、Rを使用して、Twitterを使用している航空会社のマーケット感情を調べます。

+0

興味深いアプローチですが、私が興味を持っているクラスタリング/意味ベースの類似性メトリックではなく、分類(例えば、良い/悪い、+ ve/-ve)に適しているようです。 –

+0

@sgtpepperおそらくパッケージはおそらく探し始めるには良い場所になれます。 – aatrujillob

関連する問題