【问题标题】:Creating a Term Document Matrix from Text File从文本文件创建术语文档矩阵
【发布时间】:2015-05-28 15:03:09
【问题描述】:

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

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代码

到目前为止,本书主要讨论了即席检索的过程。

在此过程中,我们将学习一些重要的机器学习技术。

输出将是 Term Document Matrix,基本上是一个特定单词出现了多少次。 输出图片:http://postimg.org/image/eidddlkld/

【问题讨论】:

  • 你并没有真正提出问题。你得到的输出是什么?你在期待什么?什么不起作用?错误信息是什么?
  • 正如我在问题中提到的,从文本文件的每一行中,我将在数组中一一添加,但是如何添加整个文件内容。所以它从文本文件中逐行读取并显示术语文档矩阵?谢谢
  • @Burhan Khalid 问题现已更新为图片。
  • 对于制作 TDM 的其他人,我会查看以下关于 gensim 的教程:radimrehurek.com/gensim/tut1.html

标签: python matrix term-document-matrix


【解决方案1】:

如果我对您的理解正确,您目前正在将文件的每一行添加为单独的文档。要添加整个文件,您可以连接这些行,然后一次添加它们。

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

我还没有真正能够测试这段代码,所以输出可能不正确。希望它能让您顺利上路。

【讨论】:

    【解决方案2】:

    @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
    

    我正在尝试读取文本文件并创建术语文档矩阵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-14
      • 2013-12-31
      • 2015-08-15
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多