簡體   English   中英

在tm R包中的findAssocs()中使用單詞列表

[英]Using a list of word in findAssocs() in the tm R package

我一直在使用R中tm包中的findAssocs()函數。如果我使用一個單詞使用該函數,我沒有任何問題,可以手動輸入多個單詞,我希望在其中找到關聯以下格式:

findAssoc(corpusname,"cat","dog","elephant",.75,.75,.75)

同樣,手動輸入多個術語也沒有問題。 我試圖找到有時可能接觸30或40個單詞的術語列表的關聯。 我希望我們使用findAssocs()來創建列表或向量,而不必每次都鍵入每個單詞。 任何想法如何做到這一點? 我嘗試制作一個自定義函數,但是對RI來說我還是很陌生,沒有任何運氣。 謝謝。

謝謝您的幫助。 對於新手來說,R的學習曲線相當陡峭。 我嘗試了您建議的第一種方法,並收到錯誤消息“錯誤:is.character(terms)不正確”,我使用的代碼是:

 #data for associates list
wordAssocList<- read.csv("Word Assocs List.txt")
# change TRUE to FALSE if you have no column headings in the CSV
as.character(wordAssocList)
attributes(wordAssocList)
my_assocs <- findAssocs(tdm, wordAssocList, .01)
my_assocs

對於輸出,我得到以下內容:

as.character(wordAssocList)[1]“邏輯(0)”屬性(wordAssocList)$ names [1]“ÿþp”

$ class [1]“ data.frame”

$ row.names整數(0)

my_assocs <-findAssocs(tdm,wordAssocList,.01)錯誤:is.character(terms)不正確

向量應該不是問題。 請參見以下示例。

library(tm)

data("crude")
tdm <- TermDocumentMatrix(crude)

words <- c("oil", "opec", "xyz")
corr <- c(0.7, 0.75, 0.1)

# returns a list
my_assocs <- findAssocs(tdm, words, corr)

# turns list into a list of named dataframes.
my_list <- lapply(my_assocs, function(x) data.frame(terms = names(x), cor = x, stringsAsFactors = FALSE))

編輯:使用新版本的dplyr(0.43),您可以為列表中的數據框創建有用的數據框,向您顯示信息來源的數據框的名稱。 方便進行可視化和其他調查。

my_df <- dplyr::bind_rows(my_list, .id = "source")

Source: local data frame [28 x 3]

   source    terms   cor
    (chr)    (chr) (dbl)
1     oil     15.8  0.87
2     oil  clearly  0.80
3     oil     late  0.80
4     oil   trying  0.80
5     oil      who  0.80
6     oil   winter  0.80
7     oil analysts  0.79
8     oil     said  0.78
9     oil  meeting  0.77
10    oil    above  0.76
..    ...      ...   ...

您甚至可以使用一個數據框而不是2個向量,只需將word和corr替換為數據框中的相應列即可。 這樣做的好處是,您可以在文本文件(或excel)中讀取單詞和相關性列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM