我正在尝试阅读一个文本文件,并使用文本包创建一个术语文档矩阵。我可以创建术语文档矩阵,我需要逐行添加每个文档矩阵。问题是我想一次包含整个文件。我在以下代码中遗漏了什么?提前感谢任何建议?
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/
答案 0 :(得分: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
我实际上无法测试此代码,因此输出可能不正确。希望它会让你顺利。
答案 1 :(得分: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
我正在尝试阅读文本文件并创建术语文档矩阵。