#python #text #nlp
#python #текст #nlp
Вопрос:
Я впервые имею дело с более чем одним файлом неструктурированных данных, и мне нужно знать, является ли то, что я делаю, наилучшим подходом или есть что-то лучше.
У меня есть более 1000 текстовых файлов для разных романов, содержащих текст до 139965 или более. и я прочитал их и сохранил в фрейме данных, как показано ниже:
file_list = glob.glob("C:/.../TextFiles/*.txt")
data = pd.DataFrame({'Name':[],'Content':[]})
for file in file_list:
with open(file, 'r',encoding="utf8", errors='ignore') as myfile:
new_name=os.path.splitext(file)[0]
data=data.append({'Name':re.sub(".*\\", " ",new_name), 'Content': myfile.read()},ignore_index=True)
затем я начал очищать тексты, переходя строка за строкой.
data['Name'] = data['Name'].apply(lambda x: " ".join(x.split()))
как вы думаете, это лучший подход к работе с несколькими и большими текстовыми файлами путем сохранения их во фрейме данных?
мой следующий шаг будет извлекать определенную информацию из текста и сохранять их в столбцах.
любой совет?
Ответ №1:
Итеративное добавление строк к фрейму данных может быть более трудоемким с точки зрения вычислений, чем одно объединение. Лучшим решением является добавление этих строк в список, а затем одновременное объединение списка с исходным фреймом данных.
В вашем случае работает список [name, content]
подсписков.
file_list = glob.glob("C:/.../TextFiles/*.txt")
data = []
for file in file_list:
with open(file, 'r',encoding="utf8", errors='ignore') as myfile:
new_name=os.path.splitext(file)[0]
data.append([re.sub(".*\\", " ",new_name),
" ".join(myfile.read().split())])
data = pd.Dataframe(data, columns=['Name','Content'])