将TermDocumentMatrix导入R

时间:2016-05-18 18:47:07

标签: text-mining tm term-document-matrix

我正在研究R的tm包中的定性分析项目。我已经构建了一个语料库并创建了一个术语文档矩阵和长篇故事,我需要编辑我的术语文档矩阵并将其部分行混淆。为此,我使用

将其导出
write.csv()

然后我将csv文件导回到R中,但我很难弄清楚如何让R将其作为TermDocumentMatrixDocumentTermMatrix读取。

我尝试使用以下示例代码的建议但没有用。

似乎继续阅读我的矩阵,好像它是一个语料库,每个单元格都是单个文档。

# change this file location to suit your machine
file_loc <- "C:\\Documents and Settings\\Administrator\\Desktop\\Book1.csv"
# change TRUE to FALSE if you have no column headings in the CSV
 x <- read.csv(file_loc, header = TRUE)
 require(tm)
 corp <- Corpus(DataframeSource(x))
 dtm <- DocumentTermMatrix(corp)

是否有任何方法可以在csv矩阵中导入,如果每个单元格都是文档,那么在没有R读取csv的情况下将被读取为termdocumentmatrixdocumenttermmatrix

2 个答案:

答案 0 :(得分:0)

您没有阅读文档,因此请跳过import multiprocessing from multiprocessing import Process, Queue import numpy as np l = multiprocessing.Lock() semaphore = 0 processHold = 0 def proc1(): global l global semaphore global processHold matrix_inverse() print 'proc1 done' return def proc2(): global l global semaphore global processHold print 'proc2 done' return def matrix_inverse(): global l global semaphore global processHold M = np.random.rand(2500,2500) Minv = np.linalg.inv(M) def main(): global l global semaphore global processHold processQueue = multiprocessing.Queue() while(True): cmd = raw_input('Enter proc1 or proc2') if cmd == 'proc1': name = 'myProc1' processQueue.put(name) elif cmd =='proc2': name = 'myProc2' processQueue.put(name) else: print 'invalid command' if processHold==1: print 'enter here' if p.is_alive==True: processHold==1 print 'process is still alive, set processHold' processHold==0 print 'stuck in processHold' print 'processhold '+str(processHold) print 'qsize '+str(processQueue.qsize()) if (processQueue.qsize()>0)&(processHold==0): if semaphore>0: l.release() semaphore=semaphore-1 print 'stuck in semaphore' print 'semaphore '+str(semaphore) currentProcess = processQueue.get() if currentProcess=='myProc1': l.acquire(block=True, timeout=None) semaphore=semaphore+1 p = Process(name=currentProcess,target=proc1) processHold=processHold+1 print 'stuck in myProc1' elif currentProcess=='myProc2': l.acquire(block=True, timeout=None) semaphore=semaphore+1 p = Process(name=currentProcess,target=proc2) processHold=processHold+1 print 'stuck in myProc2' p.start() elif (processQueue.qsize()>0)&(processHold==1): print 'Current process running: '+str(currentProcess)+' with '+str(processQueue.qsize())+' processes waiting' else: print 'no current processes' if __name__ == '__main__': main() 步骤。这应该直接起作用:

Corpus()

下次考虑将TDM对象保存为.RData,因为这不需要转换,而且效率也高得多。

答案 1 :(得分:0)

如果您想保留任何数据的格式,我建议您使用save() function。 您可以将任何R对象保存到.RData文件中。当您想要检索数据时,可以使用load()函数。