blueradiance commited on
Commit
4f1ff3d
·
verified ·
1 Parent(s): 69bf182

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -53
app.py CHANGED
@@ -43,64 +43,39 @@ def extract_names(text):
43
  if len(name) >= 2 and name not in names:
44
  names.append(name)
45
 
46
- title_suffixes = [
47
- # 직함/직책
48
- '대표', '이사', '전무', '상무', '부장', '차장', '과장', '대리', '사원',
49
- '실장', '팀장', '소장', '국장', '본부장', '주임', '총무', '회장', '부회장', '사무장',
50
- '직원', '매니저', '지점장',
51
-
52
- # 교육 관련
53
- '선생님', '선생', '교사', '교장', '교감', '부교장', '조교수', '교수', '연구원', '강사',
54
-
55
- # 학위/전문가
56
- '박사', '석사', '학사', '의사', '간호사', '간병인',
57
-
58
- # 학생 관련
59
- '학생', '수험생', '초등학생', '중학생', '고등학생', '학부모',
60
-
61
- # 가족/친척
62
- '어머니', '아버지', '엄마', '아빠', '형', '누나', '언니', '오빠', '동생',
63
- '아들', '', '할머니', '할아버지', '외할머니', '외할아버지',
64
- '이모', '고모', '삼촌', '숙모', '외삼촌', '고모부', '이모부', '조카', '사촌',
65
- '남편', '아내', '부인', '와이프', '신랑', '장모', '장인', '사위', '며느리',
66
- '올케', '형수', '제수씨', '매형', '처제', '시누이',
67
-
68
- # 그 외 지칭
69
- '보호자', '피해자', '당사자', '대상자', '주민', '어르신', '기사님'
70
  ]
71
- pattern = r'\b([가-힣]{2,4})(' + '|'.join(title_suffixes) + r')\b'
72
- matches = re.findall(pattern, text)
73
- for match in matches:
 
 
 
 
 
74
  name = match[0]
75
  if name not in names:
76
  names.append(name)
77
 
78
- honorific_suffixes = [
79
- # 직함/직책
80
- '대표', '이사', '전무', '상무', '부장', '차장', '과장', '대리', '사원',
81
- '실장', '팀장', '소장', '국장', '본부장', '주임', '총무', '회장', '부회장', '사무장',
82
- '직원', '매니저', '지점장',
83
-
84
- # 교육 관련
85
- '선생님', '선생', '교사', '교장', '교감', '부교장', '조교수', '교수', '연구원', '강사',
86
-
87
- # 학위/전문가
88
- '박사', '석사', '학사', '의사', '간호사', '간병인',
89
-
90
- # 학생 관련
91
- '학생', '수험생', '초등학생', '중학생', '고등학생', '학부모',
92
-
93
- # 가족/친척
94
- '어머니', '아버지', '엄마', '아빠', '형', '누나', '언니', '오빠', '동생',
95
- '아들', '딸', '할머니', '할아버지', '외할머니', '외할아버지',
96
- '이모', '고모', '삼촌', '숙모', '외삼촌', '고모부', '이모부', '조카', '사촌',
97
- '남편', '아내', '부인', '와이프', '신랑', '장모', '장인', '사위', '며느리',
98
- '올케', '형수', '제수씨', '매형', '처제', '시누이',
99
-
100
- # 그 외 지칭
101
- '보호자', '피해자', '당사자', '대상자', '주민', '어르신', '기사님'
102
- ]
103
- spaced_pattern = r'\b([가-힣]{2,4})\s+(' + '|'.join(honorific_suffixes) + r')\b'
104
  spaced_matches = re.findall(spaced_pattern, text)
105
  for match in spaced_matches:
106
  name = match[0]
@@ -109,6 +84,7 @@ def extract_names(text):
109
 
110
  return names
111
 
 
112
  def refactored_mask_names(original_text, names, start_counter=100):
113
  korean_josa = ['이가','를','은','는','을','도','만','과','와','��게','에서','으로',
114
  '까지','조차','마저','이며','이다','이나','이나마','밖에','이든','이라도',
 
43
  if len(name) >= 2 and name not in names:
44
  names.append(name)
45
 
46
+ COMMON_SUFFIXES = [
47
+ # 직함/직책
48
+ '대표', '이사', '전무', '상무', '부장', '차장', '과장', '대리', '사원',
49
+ '실장', '팀장', '소장', '국장', '본부장', '주임', '총무', '회장', '부회장', '사무장',
50
+ '직원', '매니저', '지점장',
51
+ # 교육/전문가
52
+ '선생님', '선생', '교사', '교장', '교감', '부교장', '조교수', '교수', '연구원', '강사',
53
+ '박사', '석사', '학사', '의사', '간호사', '간병인',
54
+ # 학생 관련
55
+ '학생', '수험생', '초등학생', '중학생', '고등학생', '학부모',
56
+ # 가족/친척
57
+ '어머니', '아버지', '엄마', '아빠', '형', '누나', '언니', '오빠', '동생',
58
+ '아들', '딸', '할머니', '할아버지', '외할머니', '외할아버지',
59
+ '이모', '고모', '삼촌', '숙모', '외삼촌', '고모부', '이모부', '조카', '사촌',
60
+ '남편', '아내', '부인', '와이프', '신랑', '장모', '장인', '사위', '며느리',
61
+ '올케', '형수', '제수씨', '매형', '처제', '시누이',
62
+ # 지칭
63
+ '보호자', '피해자', '당사자', '대상자', '주민', '어르신', '기사님'
 
 
 
 
 
 
64
  ]
65
+
66
+ # 조사 포함 패턴
67
+ KOREAN_JOSA = r'(이[가]|은|는|을|를|과|와|의|도|만|께서|에서|으로|에게|한테|보다|까지|부터)?'
68
+
69
+ # 붙여쓰기: 이민지선생님, 김대리와
70
+ attached_pattern = r'([가-힣]{2,4})(' + '|'.join(COMMON_SUFFIXES) + r')' + KOREAN_JOSA
71
+ attached_matches = re.findall(attached_pattern, text)
72
+ for match in attached_matches:
73
  name = match[0]
74
  if name not in names:
75
  names.append(name)
76
 
77
+ # 띄어쓰기: 이민지 선생님, 김대리 와
78
+ spaced_pattern = r'([가-힣]{2,4})\s+(' + '|'.join(COMMON_SUFFIXES) + r')' + KOREAN_JOSA
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  spaced_matches = re.findall(spaced_pattern, text)
80
  for match in spaced_matches:
81
  name = match[0]
 
84
 
85
  return names
86
 
87
+
88
  def refactored_mask_names(original_text, names, start_counter=100):
89
  korean_josa = ['이가','를','은','는','을','도','만','과','와','��게','에서','으로',
90
  '까지','조차','마저','이며','이다','이나','이나마','밖에','이든','이라도',