1.23 修了开评定标提示词 废标无效标 增加了'十、废标条件' 这种的提取
This commit is contained in:
parent
d3558a9c21
commit
c930c272e7
@ -19,9 +19,12 @@ def clean_dict_datas(extracted_contents, keywords, excludes): # 让正则表达
|
|||||||
# 定义用于分割句子的正则表达式,包括中文和西文的结束标点
|
# 定义用于分割句子的正则表达式,包括中文和西文的结束标点
|
||||||
split_pattern = r'(?<=[。!?\!\?])'
|
split_pattern = r'(?<=[。!?\!\?])'
|
||||||
clean_pattern = (r'^\s*(?:[((]\s*\d+\s*[)))]|'
|
clean_pattern = (r'^\s*(?:[((]\s*\d+\s*[)))]|'
|
||||||
r'[A-Za-z]?\d+(?:\.\s*\d+)*[\s\.、.)\)]?|' #12.1
|
r'[A-Za-z]?\d+(?:\.\s*\d+)+[\s*\.、.))]?|' #12.1
|
||||||
r'[一二三四五六七八九十]+、|'
|
r'[一二三四五六七八九十]+、|'
|
||||||
r'[A-Za-z][))\.、.]?\s*)')
|
r'[A-Za-z]\s*[))\.、.]?\s*)|'
|
||||||
|
r'\d+\s*[))\.、.]?\s*|'
|
||||||
|
r'[\s*\.、.))]?')
|
||||||
|
|
||||||
idx = 0 # 共享的序号标记
|
idx = 0 # 共享的序号标记
|
||||||
for key, text_list in extracted_contents.items():
|
for key, text_list in extracted_contents.items():
|
||||||
if len(text_list) == 1:
|
if len(text_list) == 1:
|
||||||
@ -31,10 +34,10 @@ def clean_dict_datas(extracted_contents, keywords, excludes): # 让正则表达
|
|||||||
if any(exclude in data for exclude in excludes):
|
if any(exclude in data for exclude in excludes):
|
||||||
continue # 如果包含任何排除字符串,跳过这个数据
|
continue # 如果包含任何排除字符串,跳过这个数据
|
||||||
# 去掉开头的序号,eg:1 | (1) |(2) | 1. | 2.(全角点)| 3、 | 1.1 | 2.3.4 | A1 | C1.1 | 一、
|
# 去掉开头的序号,eg:1 | (1) |(2) | 1. | 2.(全角点)| 3、 | 1.1 | 2.3.4 | A1 | C1.1 | 一、
|
||||||
print("--------------")
|
# print("---------")
|
||||||
print(data)
|
# print(data)
|
||||||
data = re.sub(clean_pattern, '', data).strip()
|
data = re.sub(clean_pattern, '', data).strip()
|
||||||
print(data)
|
# print(data)
|
||||||
keyword_match = re.search(keywords, data)
|
keyword_match = re.search(keywords, data)
|
||||||
if keyword_match:
|
if keyword_match:
|
||||||
# 从关键词位置开始查找结束标点符号
|
# 从关键词位置开始查找结束标点符号
|
||||||
@ -100,6 +103,8 @@ def preprocess_paragraphs(elements):
|
|||||||
pattern_numeric_header_fallback = re.compile(
|
pattern_numeric_header_fallback = re.compile(
|
||||||
r'^(\d+\.)\s*(.+)$' # 匹配如 '12. 内容'
|
r'^(\d+\.)\s*(.+)$' # 匹配如 '12. 内容'
|
||||||
)
|
)
|
||||||
|
# pattern_numbered = re.compile(r'^\s*([一二三四五六七八九十]{1,2})\s*、\s*')
|
||||||
|
# pattern_parentheses = re.compile(r'^\s*[((]\s*([一二三四五六七八九十]{1,2})\s*[))]\s*')
|
||||||
|
|
||||||
# 是否存在连续超过指定长度的空白字符序列: 排除遇到表格、填空的情况
|
# 是否存在连续超过指定长度的空白字符序列: 排除遇到表格、填空的情况
|
||||||
def has_long_spaces(text, max_space_count=5):
|
def has_long_spaces(text, max_space_count=5):
|
||||||
@ -143,6 +148,7 @@ def preprocess_paragraphs(elements):
|
|||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
current_text = elements[index].text.strip() # 去除当前段落的前后空白
|
current_text = elements[index].text.strip() # 去除当前段落的前后空白
|
||||||
|
# print(current_text)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
# 如果段落对象没有 text 属性,跳过该段落
|
# 如果段落对象没有 text 属性,跳过该段落
|
||||||
index += 1
|
index += 1
|
||||||
@ -192,7 +198,7 @@ def preprocess_paragraphs(elements):
|
|||||||
index = skip_index
|
index = skip_index
|
||||||
continue # 继续下一个循环
|
continue # 继续下一个循环
|
||||||
|
|
||||||
# 检查是否为以数字序号开头的段落
|
# 检查是否为以数字序号开头的段落eg:11.2
|
||||||
match = pattern_numeric_header.match(current_text)
|
match = pattern_numeric_header.match(current_text)
|
||||||
if not match:
|
if not match:
|
||||||
match = pattern_numeric_header_fallback.match(current_text)
|
match = pattern_numeric_header_fallback.match(current_text)
|
||||||
@ -585,54 +591,54 @@ def combine_find_invalid(invalid_docpath, output_dir):
|
|||||||
os.path.join(output_dir, "temp1.txt"),
|
os.path.join(output_dir, "temp1.txt"),
|
||||||
"否决和无效投标情形"
|
"否决和无效投标情形"
|
||||||
),
|
),
|
||||||
# (
|
(
|
||||||
# r'废\s*标',
|
r'废\s*标',
|
||||||
# """以下是从招标文件中摘取的内容,文本中序号分明,文本内之间的信息以'...............'分割。
|
"""以下是从招标文件中摘取的内容,文本中序号分明,文本内之间的信息以'...............'分割。
|
||||||
# 任务目标:
|
任务目标:
|
||||||
# 请根据以下内容,筛选出 废标项的情况 (明确描述导致 废标 的情况)并返回对应的序号。
|
请根据以下内容,筛选出 废标项的情况 (明确描述导致 废标 的情况)并返回对应的序号。
|
||||||
# 要求与指南:
|
要求与指南:
|
||||||
# 文本中可能存在无关的信息,请准确筛选符合条件的信息,并将符合条件的信息的序号返回。
|
文本中可能存在无关的信息,请准确筛选符合条件的信息,并将符合条件的信息的序号返回。
|
||||||
# 输出格式:
|
输出格式:
|
||||||
# 返回结果以 [x, x, x] 的形式,其中 x 为符合条件的信息的序号,为自然数。无需额外返回解释与说明。
|
返回结果以 [x, x, x] 的形式,其中 x 为符合条件的信息的序号,为自然数。无需额外返回解释与说明。
|
||||||
# 如果文本中没有任何符合条件的废标情况,请返回 []。
|
如果文本中没有任何符合条件的废标情况,请返回 []。
|
||||||
# 示例输出,仅供格式参考:
|
示例输出,仅供格式参考:
|
||||||
# [1,3,4,6]
|
[1,3,4,6]
|
||||||
# 文本内容:{full_text}
|
文本内容:{full_text}
|
||||||
# """,
|
""",
|
||||||
# os.path.join(output_dir, "temp2.txt"),
|
os.path.join(output_dir, "temp2.txt"),
|
||||||
# "废标项"
|
"废标项"
|
||||||
# ),
|
),
|
||||||
# (
|
(
|
||||||
# r'不\s*得(?!\s*(分|力))|禁\s*止\s*投\s*标',
|
r'不\s*得(?!\s*(分|力))|禁\s*止\s*投\s*标',
|
||||||
# """以下是从招标文件中摘取的内容,文本中序号分明,文本内的条款以'...............'分割。条款规定了各方不得存在的情形。请根据以下要求进行筛选:
|
"""以下是从招标文件中摘取的内容,文本中序号分明,文本内的条款以'...............'分割。条款规定了各方不得存在的情形。请根据以下要求进行筛选:
|
||||||
# **投标相关主体与非投标相关主体的定义**:
|
**投标相关主体与非投标相关主体的定义**:
|
||||||
# 投标相关主体:包括但不限于“投标人”、“中标人”、“供应商”、“联合体投标各方”、“响应人”、“应答人”或其他描述投标方的词语。
|
投标相关主体:包括但不限于“投标人”、“中标人”、“供应商”、“联合体投标各方”、“响应人”、“应答人”或其他描述投标方的词语。
|
||||||
# 非投标相关主体:包括但不限于“招标人”、“采购人”、“评标委员会”或其他描述非投标方的词语。
|
非投标相关主体:包括但不限于“招标人”、“采购人”、“评标委员会”或其他描述非投标方的词语。
|
||||||
# **筛选要求**:
|
**筛选要求**:
|
||||||
# 1. **仅筛选**明确描述投标相关主体禁止情形或不得存在的情形的条款,不包含笼统或未具体说明情形的条款。例如:
|
1. **仅筛选**明确描述投标相关主体禁止情形或不得存在的情形的条款,不包含笼统或未具体说明情形的条款。例如:
|
||||||
# 若条款内容包含'投标人不得存在的其他关联情形'这样的笼统描述,而未说明具体的情形,则无需添加该条款。
|
若条款内容包含'投标人不得存在的其他关联情形'这样的笼统描述,而未说明具体的情形,则无需添加该条款。
|
||||||
# 2. **排除**仅描述非投标相关主体行为限制或禁止情形的条款,例如“招标人不得泄露信息”或“评标委员会不得收受贿赂”,则无需返回。
|
2. **排除**仅描述非投标相关主体行为限制或禁止情形的条款,例如“招标人不得泄露信息”或“评标委员会不得收受贿赂”,则无需返回。
|
||||||
# 3. 若条款同时描述了对投标相关主体与非投标相关主体的行为限制、禁止情形,也需返回。
|
3. 若条款同时描述了对投标相关主体与非投标相关主体的行为限制、禁止情形,也需返回。
|
||||||
# 4. **特殊情况**:如果条款中包含“磋商小组”、”各方“等既能指代投标相关主体又能指代非投标相关主体的词汇:
|
4. **特殊情况**:如果条款中包含“磋商小组”、”各方“等既能指代投标相关主体又能指代非投标相关主体的词汇:
|
||||||
# 若在语境中其指代或包含投标相关主体,则应将其考虑在内;否则,排除该条款。
|
若在语境中其指代或包含投标相关主体,则应将其考虑在内;否则,排除该条款。
|
||||||
#
|
|
||||||
# **输出格式**:
|
**输出格式**:
|
||||||
# 返回结果以 [x, x, x] 的形式,其中 x 为符合条件的条款的序号,为自然数。无需额外返回解释与说明。
|
返回结果以 [x, x, x] 的形式,其中 x 为符合条件的条款的序号,为自然数。无需额外返回解释与说明。
|
||||||
# 如果没有符合条件的条款,返回 `[]`。
|
如果没有符合条件的条款,返回 `[]`。
|
||||||
# **示例**:
|
**示例**:
|
||||||
# - **符合条件**:
|
- **符合条件**:
|
||||||
# - `1. 投标人不得...` → 包含,返回序号 1。
|
- `1. 投标人不得...` → 包含,返回序号 1。
|
||||||
# - `3. 联合体投标各方不得...` → 包含,返回序号 3。
|
- `3. 联合体投标各方不得...` → 包含,返回序号 3。
|
||||||
# - **不符合条件**:
|
- **不符合条件**:
|
||||||
# - `2. 采购人不得...` → 主语为“采购人”,排除。
|
- `2. 采购人不得...` → 主语为“采购人”,排除。
|
||||||
# -示例输出: [1,3]
|
-示例输出: [1,3]
|
||||||
# 请根据上述筛选要求,阅读以下文本内容,并返回符合条件的条款序号,
|
请根据上述筛选要求,阅读以下文本内容,并返回符合条件的条款序号,
|
||||||
#
|
|
||||||
# 文本内容:{full_text}
|
文本内容:{full_text}
|
||||||
# """,
|
""",
|
||||||
# os.path.join(output_dir, "temp3.txt"),
|
os.path.join(output_dir, "temp3.txt"),
|
||||||
# "不得存在的情形"
|
"不得存在的情形"
|
||||||
# )
|
)
|
||||||
]
|
]
|
||||||
results = []
|
results = []
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user