我正在研究R的tm包中的定性分析项目。我已经构建了一个语料库并创建了一个术语文档矩阵和长篇故事,我需要编辑我的术语文档矩阵并将其部分行混淆。为此,我使用
将其导出write.csv()
然后我将csv文件导回到R中,但我很难弄清楚如何让R将其作为TermDocumentMatrix
或DocumentTermMatrix
读取。
我尝试使用以下示例代码的建议但没有用。
似乎继续阅读我的矩阵,好像它是一个语料库,每个单元格都是单个文档。
# 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的情况下将被读取为termdocumentmatrix
或documenttermmatrix
?
答案 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()函数。