2013-10-12 4 views
0

Je n'ai qu'un seul document (une compilation d'enquête). Je veux faire une association de mots dans un seul document avec findAssocs. Jusqu'à présent, tous les exemples que j'ai vus sont tous une combinaison de quelques documents.findAssocs dans un seul document

inspect(myDtm) 
A term-document matrix (864 terms, 1 documents) 

Non-/sparse entries: 864/0 (what is this for?) 
Sparsity   : 0% (what is this for? what does it mean if its 0%) 
Maximal term length: 20 
Weighting   : term frequency (tf) 

mes données ressemble à ce

unwanted    1 
upgrade    3 
valid     1 

ceci est mon code et je finis avec les résultats = numérique (0)

findAssocs(myDtm, "salary", 0.5) 
numeric(0) 

s'il vous plaît aider.

Répondre

1

Sparsity mesure le pourcentage d'éléments (cellules) dans la matrice qui sont égaux à zéro. Lorsque la densité est élevée, vous avez beaucoup de termes qui n'apparaissent que dans un ou quelques documents. Vous n'avez qu'un seul document dans votre exemple, donc tous les termes doivent apparaître dans ce document. En règle générale, un degré plus faible de parcimonie est plus utile pour étudier la similarité des documents (si c'est ce que vous faites ... ce n'est pas clair d'après votre question).

La réponse courte est que votre question a already been asked and answered: vous devez avoir plus d'un doc dans votre dtm pour calculer les associations de termes en utilisant findAssocs.

Vous devrez inclure un reproducible example si vous souhaitez une aide plus spécifique avec findAssocs. Essayez d'utiliser l'ensemble de données 'brut' fourni avec le module tm et expérimentez avec findAssocs pour voir ce qui se passe lorsque vous modifiez les paramètres. Consultez le tm [documentation] (http://cran.r- project.org/web/packages/tm/vignettes/tm.pdf) pour en savoir plus sur l'utilisation des données intégrées.

Voici un exemple en utilisant le haut-données, essayez par vous-même:

require(tm) 
data(crude) 
dtm <- DocumentTermMatrix(crude) 

# one doc in dtm, doesn't work... 
dtm1 <- dtm[1,] 
findAssocs(dtm1, "oil", 0.01) 

# ten docs, does work 
dtm10 <- dtm[1:10,] 
findAssocs(dtm10, "oil", 0.01) 
0

Vous pouvez utiliser findAssocs en ajoutant vos données de la manière suivante

data <- data.frame(text=txt, stringsAsFactors=FALSE) 

tdm <- TermDocumentMatrix(Corpus(DataframeSource(data))) 

Fondamentalement importer vos données dans une "Source", votre "Source" dans un "Corpus", et puis faire un TDM de votre "Corpus"

0

J'ai quelques années de retard. Mais j'ai couru au même problème récemment. C'est parce que votre matrice de terme-document (TDM) se compose d'un seul document. Au contraire, votre tdm devrait être composé de plusieurs documents. Si vous utilisez paste() pour récupérer du texte à partir d'une trame de données, vous ne devez pas utiliser paste(data$text, collapse = " "), mais paste(data$text) avant de le transformer en TDM.

Mais si vous présentez un exemple reproductible, nous pouvons vous aider.

Questions connexes