Найти строку, начиная с определенной строки в текстовых файлах и классифицировать - PullRequest
0 голосов
/ 16 апреля 2019

Я делаю домашнее задание, и я прочитал похожие темы, нашел одну очень интересную здесь: Найти строку между двумя подстроками

Моя цель - использовать python для поиска 3 конкретных шаблоновЯ ищу в текстовых файлах, мне нужно выполнить поиск в некатегоризованных текстовых файлах, и мне нужно:

1) начать поиск по ключевому слову «дополнительная информация» (обойти информацию до этого)

2) классифицировать документы на основе: A1) строка: «большой дом» и его цена A2) строка: «большой дом» цена не найдена B1) строка: «маленький дом» и его цена B2) строка: «маленький дом» нет ценынайдено C1) строки: «большой дом» И «маленький дом» и их цена C2) строки: «большой дом» И «маленький дом» их цена отсутствует D) Строки не найдены (большой дом или маленький дом)

для A, B, C, найдите цену и напечатайте = 'Цена большого дома 50USD', если цена не найдена, упомяните об этом.

Я провожу исследование текста с помощью python, и он возвращает таксономию найденных ключевых слов,мне нужно классифицировать документы(текстовые файлы) на основе вышеупомянутых шаблонов A, B, C и D

data_train['classi'] = data_train['text'].apply(lambda x: len([x for x in x if x.startswith('classi')]))
data_train[['text','classi']].head()

Вот вывод:

text    classi
0   [big home, forrest, suburb, more info,          0
1   [town, pool, more info,                         0
2   [small home,more info,  forrest, suburb         1
3   [big home, more info,  forrest, price 50        1
4   [big home, forrest,  more info,  city           0

Я ожидаю: 1) начать поиск по ключевому слову 'дополнительная информация '2) классифицировать текстовые документы, которые я ищу, по A, B, C, D (получить строки с ценой, если цена не указана.

Любая поддержка высоко ценится!

РЕДАКТИРОВАТЬ:

  • может быть, здесь интересно использовать NLTK, любая идея?

  • На самом деле играть с https://pythex.org/

1 Ответ

0 голосов
/ 16 апреля 2019

Я хотел бы сделать что-то похожее на это:

from pathlib import Path
for file in Path("my_folder").glob("*.txt"):
    with file.open('r') as f:
        more_info_flag = False
        for line in f:
            if not more_info_flag:
                if "more info" in line:
                    more_info_flag = True
                else:
                    continue
            if "big_home" in line:
                if "price is" in line:
                    price = int(line.split("price is")[1].split(" ")[0])
                else:
                    price = None
                do_something(price)

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

...