2013-05-10 107 views
1

我试图读取一个文本文件并使用textmining包创建术语文档矩阵。我可以创建术语文档矩阵,我需要逐行添加每行。问题是我想一次包含整个文件。以下代码中缺少什么?提前感谢您的任何建议?从文本文件创建术语文档矩阵

import textmining 

def term_document_matrix_roy_1(): 

    '''-----------------------------------------''' 
    with open("data_set.txt") as f: 
     reading_file_line = f.readlines() #entire content, return list 
     print reading_file_line #list 
     reading_file_info = [item.rstrip('\n') for item in reading_file_line] 
     print reading_file_info 
     print reading_file_info [1] #list-1 
     print reading_file_info [2] #list-2 

     '''-----------------------------------------''' 
     tdm = textmining.TermDocumentMatrix() 
     #tdm.add_doc(reading_file_info) #Giving error because of readlines 
     tdm.add_doc(reading_file_info[0])  
     tdm.add_doc(reading_file_info[1]) 
     tdm.add_doc(reading_file_info[2]) 


     for row in tdm.rows(cutoff=1): 
      print row 

示例文本文件:“data_set.txt”包含以下信息:

让我们写一些Python代码

到目前为止,这本书主要探讨特设检索的过程。

一路上我们将​​学习一些重要的机器学习技巧。

输出将成为术语文档矩阵,基本上出现一个特定单词的次数。 输出图像:http://postimg.org/image/eidddlkld/

enter image description here

+0

你没有真正问过一个问题。你得到的输出是什么?你在期待什么?什么不行?什么是错误信息? – 2013-05-10 11:42:08

+2

正如我在问题中提到的那样,我从文本文件中逐行添加一个数组,但是如何添加整个文件内容。所以它从文本文件中逐行读取并显示术语文档矩阵?谢谢 – J4cK 2013-05-10 12:34:37

+2

@Burhan Khalid问题现在已更新为图像。 – J4cK 2013-05-10 20:06:33

回答

1

@Fred感谢您的回复。我想显示它在图像文件中显示的位置。实际上我可以使用下面的代码生成相同的结果,但我希望每行都作为单独的矩阵而不是一个矩阵。

with open("txt_files/input_data_set.txt") as f: 
    reading_file_info = f.read()#reading lines exact content 
    reading_file_info=f.read 
    tdm = textmining.TermDocumentMatrix() 
    tdm.add_doc(reading_file_info) 

    tdm.write_csv('txt_files/input_data_set_result.txt', cutoff=1) 
    for row in tdm.rows(cutoff=1): 
     print row 

我在试图读取文本文件并创建一个文档矩阵。

2

如果我正确认识你,你现在加入您的文件的每一行作为一个单独的文件。要添加整个文件,您可以将这些行连接起来,并将它们一次性添加。

tdm = textmining.TermDocumentMatrix() 
#tdm.add_doc(reading_file_info) #Giving error because of readlines 
tdm.add_doc(' '.join(reading_file_info)) 

如果您正在寻找多个矩阵,你将最终获得只有一行在每个,因为只有一个文件,除非你有分割线在以单独文件的另一种方式。你可能想重新考虑这是否是你真正想要的。不过,我觉得这个代码将会为你做它:

with open("txt_files/input_data_set.txt") as f: 
    tdms = [] 
    for line in f: 
     tdm = textmining.TermDocumentMatrix() 
     tdm.add_doc(line.strip()) 
     tdms.append(tdm) 

    for tdm in tdms: 
     for row in tdm.rows(cutoff=1): 
      print row 

我还没有真正能够测试这个代码,所以输出可能是不对的。希望它能让你走上正轨。