Я использовал некоторую логику для итерации моего tsv-файла таким образом, что каждой текстовой группе будет присвоен номер группы.Этот код вы можете найти в ответах, я изменил вопрос, который у меня был ранее, с помощью @Jeril я смог получить этот код.
import pandas as pd
import numpy as np
main_df = pd.read_csv('sampleOutput.tsv', delimiter='\t')
main_df = main_df.dropna(subset=['text'], axis=0)
final_df = pd.DataFrame()
for page_no in main_df['page_num'].unique():
df = main_df[main_df['page_num'] == page_no].copy(deep=True)
df['top'] = df['top'].astype(int)
df['bool'] = (df['top'] - df['top'].shift(-1)) < -50
df.loc[df['bool'] == True, 'group'] = range(
1, (df['bool'] == True).sum() + 1)
df['group'] = df['group'].replace({0: np.nan}).bfill()
df['group'] = df['group'].fillna((df['bool'] == True).sum() + 1)
final_df = pd.concat([final_df, df])
print(final_df)
Так что это моя таблица, которую яЯ должен получить выходные данные, логика, которую я использовал, принимает пороговое значение (300,50), каждая текстовая группа будет иметь различное groupNo, это я делаю так, чтобы я мог отображать свои выходные данные более разумным способом.Группировка предложений: а) Слова в той же строке группируются, если x расстояние <порог b) Слова в следующей строке группируются с предыдущим, если y расстояние <порог </p>
x = current_left - previous_left (left относится к «left»)столбец)
y = current_line_top - previous_line_top (top относится к «верхнему» столбцу)
INPUT: - 
ОЖИДАЕМЫЙ ВЫХОД:- Это пример того, как написать весь ввод снова сложно, в основном каждое логическое предложение будет в одной группе, логика постоянна
x = текущая строка в «левом» столбце - предыдущаястрока в «левом» столбце (слева относится к «левому» столбцу)
x
y = current_line_top_column - previous_line_top_column (top относится кстолбец "top")
y
Я не могу реализовать эту логику, если кто-то может помочь!
page_num block_num line_num word_num left top width text groupNo
1 27 1 1 405 420 129 Property 1
1 27 1 2 543 420 31 of 1
1 27 1 3 578 420 159 Accenture 1
1 27 4 1 409 581 105 INTERPRET 2
1 27 4 2 520 581 90 DRAWING 2
1 27 4 3 616 581 38 PER 2
1 27 4 4 659 581 113 APPLICABLE 2
1 27 4 5 779 581 267 STANDARD: 2
1 27 5 1 411 603 114 Accenture 2
1 27 5 2 532 603 84 ACCOO1 2
2 46 1 1 480 800 114 yoyoyo 3
2 46 1 2 550 800 84 heloo 3
Пожалуйстаспросите, если вопрос не ясен.