Как я могу создать файл данных поезда как [текст, автор] для задачи НЛП - PullRequest
0 голосов
/ 27 февраля 2019

В задании NLP у меня есть несколько текстовых файлов для некоторых авторов.Данные находятся в таких папках:

  |author1|
     |text_file1|
     |text_file2|
     ...
  |author2|
     |text_file1|
     |text_file2|
     ...
  ...

Я хочу пройтись по этим папкам и создать наборы данных поезда и проверки, как показано ниже.Данные проверки содержат два случайных файла от каждого автора

id  text                                                author
0   This process, however, afforded me no means of...   author1
1   It never once occurred to me that the fumbling...   author1
.   ...
.   In his left hand was a gold snuff box, from wh...   author2
.   ...

Каков наилучший подход для создания этих наборов данных?

Я пробовал что-то вроде этого:

train = []
val = []
for folder_name in folders:
    file_path = data_path +'/' + folder_name
    files = os.listdir(file_path)

    v1 = np.random.randint(0, len(files))
    v2 = np.random.randint(0, len(files))
    for i, fn in enumerate(files):
      fn = file_path + '/' + fn    
      f = open(fn)
      text = f.read()
      # preprocessing text
      if i == v1 or i == v2:
        val.append(text)
      else:
        train.append(text)
      f.close()

ОднакоМоя проблема - связать folder_name с каждым текстом и сохранить все данные в формате, который я описал выше.

1 Ответ

0 голосов
/ 27 февраля 2019

Используйте словарь, чтобы вывести каждую строку в нем и, в конце концов, преобразовать ее в Dataframe.

 train = []
    val = []
    for folder_name in folders:
        file_path = data_path +'/' + folder_name
        files = os.listdir(file_path)

        v1 = np.random.randint(0, len(files))
        v2 = np.random.randint(0, len(files))
        for i, fn in enumerate(files):
            dict = {}
          fn = file_path + '/' + fn
          f = open(fn)
          text = f.read()
          # preprocessing text
          dict['author'] = folder_name
          dict['text'] = text
          if i == v1 or i == v2:
            val.append(dict)
          else:
            train.append(dict)

        df = pd.DataFrame(val)
        f.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...