81 lines
3.2 KiB
Python
81 lines
3.2 KiB
Python
import textwrap
|
||
|
||
def get_masking_prompt(text: str) -> str:
|
||
"""
|
||
Returns the prompt for masking sensitive information in legal documents.
|
||
|
||
Args:
|
||
text (str): The input text to be masked
|
||
|
||
Returns:
|
||
str: The formatted prompt with the input text
|
||
"""
|
||
prompt = textwrap.dedent("""
|
||
您是一位专业的法律文档脱敏专家。请按照以下规则对文本进行脱敏处理:
|
||
|
||
规则:
|
||
1. 人名:
|
||
- 两字名改为"姓+某"(如:张三 → 张某)
|
||
- 三字名改为"姓+某某"(如:张三丰 → 张某某)
|
||
2. 公司名:
|
||
- 保留地理位置信息(如:北京、上海等)
|
||
- 保留公司类型(如:有限公司、股份公司等)
|
||
- 用"某"替换核心名称
|
||
3. 保持原文其他部分不变
|
||
4. 确保脱敏后的文本保持原有的语言流畅性和可读性
|
||
|
||
输入文本:
|
||
{text}
|
||
|
||
请直接输出脱敏后的文本,无需解释或其他备注。
|
||
""")
|
||
|
||
return prompt.format(text=text)
|
||
|
||
def get_masking_mapping_prompt(text: str) -> str:
|
||
"""
|
||
Returns a prompt that generates a mapping of original names/companies to their masked versions.
|
||
|
||
Args:
|
||
text (str): The input text to be analyzed for masking
|
||
|
||
Returns:
|
||
str: The formatted prompt that will generate a mapping dictionary
|
||
"""
|
||
prompt = textwrap.dedent("""
|
||
您是一位专业的法律文档脱敏专家。请分析文本并生成一个脱敏映射表,遵循以下规则:
|
||
|
||
规则:
|
||
1. 人名映射规则:
|
||
- 对于同一姓氏的不同人名,使用字母区分:
|
||
* 第一个出现的用"姓+某"(如:张三 → 张某)
|
||
* 第二个出现的用"姓+某A"(如:张四 → 张某A)
|
||
* 第三个出现的用"姓+某B"(如:张五 → 张某B)
|
||
依此类推
|
||
- 三字名同样遵循此规则(如:张三丰 → 张某某,张四海 → 张某某A)
|
||
|
||
2. 公司名映射规则:
|
||
- 保留地理位置信息(如:北京、上海等)
|
||
- 保留公司类型(如:有限公司、股份公司等)
|
||
- 用"某"替换核心名称,但保留首尾字(如:北京智慧科技有限公司 → 北京智某科技有限公司)
|
||
- 对于多个相似公司名,使用字母区分(如:
|
||
北京智慧科技有限公司 → 北京某科技有限公司
|
||
北京智能科技有限公司 → 北京某科技有限公司A)
|
||
|
||
3. 公权机关不做脱敏处理(如:公安局、法院、检察院、中国人民银行、银监会及其他未列明的公权机关)
|
||
|
||
请分析以下文本,并生成一个JSON格式的映射表,包含所有需要脱敏的名称及其对应的脱敏后的形式:
|
||
|
||
{text}
|
||
|
||
请直接输出JSON格式的映射表,格式如下:
|
||
{{
|
||
"原文1": "脱敏后1",
|
||
"原文2": "脱敏后2",
|
||
...
|
||
}}
|
||
如无需要输出的映射,请输出空json,如下:
|
||
{{}}
|
||
""")
|
||
|
||
return prompt.format(text=text) |