From 8c16afa66a541ff6f3b4e61896a59b3d8657e8ce Mon Sep 17 00:00:00 2001 From: weiweiw <14335254+weiweiw22@user.noreply.gitee.com> Date: Thu, 16 Jan 2025 10:00:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E6=A1=A3=E6=A0=87?= =?UTF-8?q?=E9=A2=98=E5=8A=A0=E5=BC=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer_zh_title_enhance.py | 73 +++++++++---------- 1 file changed, 35 insertions(+), 38 deletions(-) diff --git a/libs/chatchat-server/chatchat/server/file_rag/text_splitter/customer_zh_title_enhance.py b/libs/chatchat-server/chatchat/server/file_rag/text_splitter/customer_zh_title_enhance.py index 242593e..9cb447c 100644 --- a/libs/chatchat-server/chatchat/server/file_rag/text_splitter/customer_zh_title_enhance.py +++ b/libs/chatchat-server/chatchat/server/file_rag/text_splitter/customer_zh_title_enhance.py @@ -21,8 +21,9 @@ def get_fist_level_title( return "" FIRST_TITLE = r'((?1: - Second_line = splitlines[1] - if TITLE_PUNCT_RE.search(Second_line) is not None: - return Second_line + match = TITLE_PUNCT_RE.search(text) + if match: + return match.group(1) return "" #judge if it is 2nd level content @@ -105,34 +95,30 @@ def get_third_level_title( print("Not a title. Text is empty or longer than 25.") return "" - splitlines = text.splitlines() - first_line = splitlines[0] - # 文本中有标点符号,就不是title - # ENDS_IN_PUNCT_PATTERN = r"[^\w\s]\Z" - # ENDS_IN_PUNCT_RE = re.compile(ENDS_IN_PUNCT_PATTERN) - # if ENDS_IN_PUNCT_RE.search(first_line) is not None: - # return "" - #3 **** #3.1 ***** #3.1.1 ***** #3.1.1.1 ***** #另一个分块 #3.1.1.2 ***** 所以三级级目录可能在第三行 和第二行及第一行 + #只查找第一个匹配项 Third_TITLE = r'((?1: - Second_line = splitlines[1] - if TITLE_PUNCT_RE.search(Second_line) is not None: - return Second_line - else: - if len(splitlines)>2: - Second_line = splitlines[2] - if TITLE_PUNCT_RE.search(Second_line) is not None: - return Second_line + match = TITLE_PUNCT_RE.search(text) # 只查找第一个匹配项 + if match: + return match.group(1) + # if TITLE_PUNCT_RE.search(first_line) is not None: + # return first_line + # else: + # if len(splitlines)>1: + # Second_line = splitlines[1] + # if TITLE_PUNCT_RE.search(Second_line) is not None: + # return Second_line + # else: + # if len(splitlines)>2: + # Second_line = splitlines[2] + # if TITLE_PUNCT_RE.search(Second_line) is not None: + # return Second_line return "" @@ -226,6 +212,17 @@ def zh_first_title_enhance(docs: Document) -> Document: if __name__ == "__main__": - str = """1 总 则\n1.1 本导则是编制和审查城市电力网(以下简称城网)规划的指导性文件,其 适用范围为国家电网公司所属的各网省公司、城市供电公司。\n1.2 城网是城市行政区划内为城市供电的各级电压电网的总称。城网是电力系 统的主要负荷中心,作为城市的重要基础设施之一,与城市的社会经济发展密切 相关。各城市应根据《中华人民共和国城市规划法》和《中华人民共和国电力法》 的相关规定,编制城网规划,并纳入相应的城市总体规划和各地区详细规划中。\n1.3 城网规划是城市总体规划的重要组成部分,应与城市的各项发展规划相互 配合、同步实施,做到与城市规划相协调,落实规划中所确定的线路走廊和地下 通道、变电站和配电室站址等供电设施用地。\n1.4 城网规划的目的是通过科学的规划,建设网络坚强、结构合理、安全可靠、 运行灵活、节能环保、经济高效的城市电网,不断提高城网供电能力和电能质量, 以满足城市经济增长和社会发展的需要。 ' metadata={'source': '/home/bns001/Langchain-Chatchat_0.2.9/knowledge_base/test/content/资产全寿命周期管理体系实施指南.docx'}""" + str1 = """1 总 则\n1.1 本导则是编制和审查城市电力网(以下简称城网)规划的指导性文件,其 适用范围为国家电网公司所属的各网省公司、城市供电公司。\n1.2 城网是城市行政区划内为城市供电的各级电压电网的总称。城网是电力系 统的主要负荷中心,作为城市的重要基础设施之一,与城市的社会经济发展密切 相关。各城市应根据《中华人民共和国城市规划法》和《中华人民共和国电力法》 的相关规定,编制城网规划,并纳入相应的城市总体规划和各地区详细规划中。\n1.3 城网规划是城市总体规划的重要组成部分,应与城市的各项发展规划相互 配合、同步实施,做到与城市规划相协调,落实规划中所确定的线路走廊和地下 通道、变电站和配电室站址等供电设施用地。\n1.4 城网规划的目的是通过科学的规划,建设网络坚强、结构合理、安全可靠、 运行灵活、节能环保、经济高效的城市电网,不断提高城网供电能力和电能质量, 以满足城市经济增长和社会发展的需要。 ' metadata={'source': '/home/bns001/Langchain-Chatchat_0.2.9/knowledge_base/test/content/资产全寿命周期管理体系实施指南.docx'}""" + str = """2 作业准备 +作业准备包括现场勘察 、风险管控 、“ 三措一案 ” (施工方。 +2.1 现场勘察 +2.1.1 需要现场勘察的作业项目 metadata={'source': '/home/bns001/Langchain-Chatchat_0.2.9/knowledge_base/test/content/资产全寿命周期管理体系实施指南.docx'}""" + result = is_second_level_content(str) + print(result) title = get_fist_level_title(str) print(title) + title = get_second_level_title(str) + print(title) + title = get_third_level_title(str) + print(title) +