この質問は私の以前の質問に関連しています。スペースで区切られた単語を同じように扱う
他のユーザーが簡単に見つけるのに役立つ可能性があるため、別のものとして投稿します。
問題は、現在パッケージごとterm document matrix
に計算される方法に関するものです。tm
以下で説明するように、この方法を少し調整したいと思います。
現在、すべての用語ドキュメント マトリックスは、ドキュメント内で「milky」という単語を (文字列としてではなく) 別の単語として検索することによって作成されます。たとえば、2 つのドキュメントがあるとします。
document 1: "this is a milky way galaxy"
document 2: "this is a milkyway galaxy"
現在のアルゴリズムの仕組み (パッケージ) によると、「milky」は最初のドキュメントで見つかりますが、アルゴリズムは用語を別の単語としてtm
検索するため、2 番目のドキュメントでは見つかりません。milky
しかし、アルゴリズムがmilky
関数のような文字列を検索した場合grepl
、2 番目のドキュメントにも「milky」という用語が見つかります。
grepl('milky', 'this is a milkyway galaxy')
TRUE
誰かが私の要件を満たす用語文書マトリックスを作成するのを手伝ってくれませんか (これはmilky
両方の文書で用語を見つけることができるようにすることです. 単語または に固有の解決策は望んでいないことに注意してください.milky
一般的な解決策が必要です.そのようなすべてのケースを処理するために、より大規模に適用されます)? tm
パッケージを使わないソリューションでも構いません。最終的には、自分の要件を満たす用語ドキュメント マトリックスを取得する必要があります。最終的には、その中の各用語が、問題のドキュメントのすべての文字列内で (単語としてだけでなく) 文字列として検索されるように、用語ドキュメント マトリックスを取得できるようにしたいと考えています (grepl
用語ドキュメント マトリックスの計算中の機能など)。
用語文書マトリックスを取得するために使用する現在のコードは
doc1 <- "this is a document about milkyway"
doc2 <- "milky way is huge"
library(tm)
tmp.text<-data.frame(rbind(doc1,doc2))
tmp.corpus<-Corpus(DataframeSource(tmp.text))
tmpDTM<-TermDocumentMatrix(tmp.corpus, control= list(tolower = T, removeNumbers = T, removePunctuation = TRUE,stopwords = TRUE,wordLengths = c(2, Inf)))
tmp.df<-as.data.frame(as.matrix(tmpDTM))
tmp.df
1 2
document 1 0
huge 0 1
milky 0 1
milkyway 1 0
way 0 1