Создание матрицы документа термина из текстового файла

Я пытаюсь прочитать один текстовый файл и создать матрицу документа термина, используя пакеты 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

До сих пор в этой книге в основном обсуждался процесс поиска ad hoc.

Попутно мы изучим некоторые важные методы машинного обучения.

Вывод будет представлять собой матрицу документов терминов, в основном, сколько раз встречается одно конкретное слово. Выходное изображение: http://postimg.org/image/eidddlkld/

введите здесь описание изображения


person J4cK    schedule 10.05.2013    source источник
comment
Вы не совсем задали вопрос. Каков результат, который вы получаете? Чего вы ожидаете? Что не работает? Какие сообщения об ошибках?   -  person Burhan Khalid    schedule 10.05.2013
comment
Как я упоминаю в вопросе, из текстового файла каждую строку я добавляю одну за другой в массив, но как я могу добавить все содержимое файла. Таким образом, он считывает каждую строку из текстового файла и показывает матрицу термина документа? Спасибо   -  person J4cK    schedule 10.05.2013
comment
@Burhan Khalid Вопрос теперь обновлен изображением.   -  person J4cK    schedule 11.05.2013
comment
Для других, работающих над созданием TDM, я бы посмотрел следующий учебник по gensim: radimrehurek.com/gensim/ tut1.html   -  person duhaime    schedule 21.04.2014


Ответы (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

Я действительно не смог протестировать этот код, поэтому вывод может быть неправильным. Надеюсь, это поможет вам на вашем пути.

person Fred Kroon    schedule 10.05.2013

@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

Я пытаюсь прочитать текстовый файл и создать матрицу документа термина.

person J4cK    schedule 10.05.2013