Не могли бы вы помочь мне разделить список текстов?

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

Например, на моем примере сайта тексты называются так: cv100.txt, cv203.txt, cv900.txt и так далее. Поэтому автор использует следующий код, чтобы разделить эти тесты на 9:1.

if filename.startswith('cv9'): и if not filename.startswith('cv9'):

Однако для другой задачи, над которой я сейчас работаю, имена файлов текстов перечислены следующим образом: 0000Data, 0001Data, ..., 0299Data.

Что мне нужно сделать, так это иметь тексты от 0000Data до 0200Data в качестве набора данных поезда и от 0200Data до 0299Data в качестве набора тестовых данных.

Но я понял, что это не работает с методом filename.startswith(''). В общем, имена файлов, такие как cv000 ~ cv999, можно разделить на 9:1 на filename.startswith('cv9'), но я хочу разделить имена файлов, такие как 0000Data~0299Data, на 1:2. Однако я не могу придумать умного способа разделить их.

Должен быть хороший способ понять это, но я не могу его придумать, хотя много искал и думал.


person Gogo    schedule 02.05.2020    source источник


Ответы (1)


Если ваша книга называется "Глубокое обучение для обработки естественного языка. Разработка моделей глубокого обучения для естественного языка в Python" и покрывает одно и то же, тогда вам просто не хватает нужного набора данных.

Исходный датасет можно скачать по ссылке http://www.cs.cornell.edu/people/pabo/movie-review-data/review_polarity.tar.gz содержит точно то же, что вы описали.

review_polarity tree
.
├── poldata.README.2.0.md
└── txt_sentoken
    ├── neg
    │   ├── cv000_29416.txt
    │   ├── cv001_19502.txt
    │   ├── cv002_17424.txt
  [...]
    │   ├── cv997_5152.txt
    │   ├── cv998_15691.txt
    │   └── cv999_14636.txt
    └── pos
        ├── cv000_29590.txt
        ├── cv001_18431.txt
        ├── cv002_15918.txt
      [...]
        ├── cv003_11664.txt
        ├── cv004_11636.txt
        ├── cv005_29443.txt
person Sergey Fedorov    schedule 02.05.2020
comment
Большое спасибо за данные. Но я думаю, что не дал достаточного объяснения. Я хотел спросить, что текстовые файлы в задаче, над которой я работаю, похоже, не разделены так, как в примере. Имена файлов, такие как 'cv000' ~ 'cv999', могут быть разделены на 9:1 с помощью 'filename.startswith('cv9'), но я хочу разделить имена файлов, такие как 0000Data~0299Data, на 1:2. Однако я не могу придумать умного способа разделить их. - person Gogo; 02.05.2020
comment
Недостаточно информации, чтобы понять, что вы хотите. Книга такая же? Если да, то какой номер страницы или название главы с вашей задачей? Далее, где вы взяли текстовые файлы для задачи? Не могли бы вы описать пошагово? - person Sergey Fedorov; 02.05.2020
comment
comment
Я имел в виду, что я работаю над задачей, похожей на пример. Пример - это то, о чем говорит ссылка. Для меня моя задача заключается в следующем. Во-первых, у меня есть набор новостных статей, разделенный на 5 разделов. Я очистил, закодировал и дополнил их. Однако я застрял на этом этапе, когда мне нужно разделить весь набор данных на данные поезда и тестовые данные. Поскольку набор данных состоит из текстовых файлов с именами 0000Data, 0001Data, ..., 0299Data для первого раздела, 1000Data 1001Data ... 1299Data для второго и 4000Data 4001Data ... 4299Data для пятого раздела. - person Gogo; 02.05.2020
comment
Для каждого раздела я хотел разделить текстовые файлы на данные обучения и данные испытаний в соотношении 2:1. Итак, для первого раздела текстовые файлы между 0000Data и 0200Data будут помещены в данные поезда, а файлы между 0201Data и 0299Data — в тестовые данные. Согласно примеру задачи, о которой я говорю, файлы были разделены в соотношении 9:1, и он был разделен кодом if filename.startswith('cv9'):. Таким образом, текстовые файлы от cv000 до cv899 помещаются в данные поезда, а от cv900 до cv999 — в тестовые данные. - person Gogo; 02.05.2020
comment
Однако для моей задачи я не могу придумать код, который разделил бы 0000Data ~ 0299Data на обучающие и тестовые данные в соотношении 2:1. Я действительно благодарю вас за вашу помощь. Я очень ценю это. - person Gogo; 02.05.2020