-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript_manipulate.py
More file actions
178 lines (139 loc) · 4.67 KB
/
script_manipulate.py
File metadata and controls
178 lines (139 loc) · 4.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
72
73
74
75
76
77
78
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
import re
# 이중으로 들어간 공백을 수정해주는 함수
def remove_double_blank(line):
temp = ' '.join(line.split())
return temp
def get_only_script(lines, split_keyword='::'):
path_lines = []
script_lines = []
for line in lines:
temp = line.split(split_keyword)
path_lines.append(temp[0])
script_lines.append(temp[1].strip()) # 앞뒤 공백 제거
return path_lines, script_lines
# 특정 감탄사만 제거하는 함수
def remove_interjection(line, keyword='아/ '):
temp = line.replace(keyword, '')
temp = remove_double_blank(temp)
return temp
# 여러개의 감탄사를 제거하는 함수
def remove_interjections_in_list(lines, *args):
dataset = []
for line in lines:
temp = line
for arg in args:
temp = temp.replace(arg, '')
temp = remove_double_blank(temp)
dataset.append(temp)
return dataset
# 여러 형태의 잡음에 대한 스크립트 아이디를 제거하는 함수 ( 한줄짜리)
def remove_noise_id(line, *args):
temp = line
for arg in args:
temp = temp.replace(arg, '')
temp = remove_double_blank(temp)
return temp
# 여러 형태의 잡음에 대한 스크립트 아이디를 제거하는 함수
def remove_noise_id_in_list(lines, *args):
dataset = []
for line in lines:
temp = line
for arg in args:
temp = temp.replace(arg, '')
temp = remove_double_blank(temp)
dataset.append(temp)
return dataset
# 숫자의 경우는 발음전사로 처리애햐 하기 때문에 해당 부분을 수정하는 함수
# 정규식으로 처리하는 것이 좋을지에 대한 부분은 생각을 해보아야 할 듯 함
def change_number_to_pron_in_list(lines):
dataset = []
for line in lines:
if detect_numeric(line):
modified_temp = numeric_to_pron(line)
dataset.append(modified_temp)
else:
dataset.append(line)
return dataset
def change_number_to_pron(line):
if detect_numeric(line):
modified_temp = numeric_to_pron(line)
return modified_temp
else:
return line
# 숫자일 경우 발음전사를 선택하는 부분
def numeric_to_pron(line):
temp = line
pattern = re.compile(r"\((.*?)\)")
find = re.findall(pattern, line)
for s in range(0, len(find), 2):
temp = temp.replace(find[s], '')
temp = remove_bracket_pair(temp)
temp = remove_slash(temp)
temp = remove_double_blank(temp)
return temp
def remove_slash(line):
temp = line.replace('/', '')
return temp
# 소괄호를 제거하는 함수
# 괄호 형태를 조절할 수 있음
def remove_bracket_pair(line, type_size='small'):
if type_size == 'small':
temp = re.sub('[()]', '', line)
elif type_size == 'middle':
temp = re.sub('[{}]', '', line)
elif type_size == 'large':
temp = re.sub('[[]]', '', line)
return temp
# 문장 내에서 숫자를 검출하는 함수
# 만약 문장 내에 숫자가 있다면 True
# 만약 문장 내에 숫자가 없다면 False
def detect_numeric(line):
temp = re.findall('\d', line)
if len(temp) is 0:
return False
else:
return True
# 문장 내에서 이중전사로 처리된 부분을 철자전사로 변경하는 함
def change_pron_to_dic_in_list(lines):
dataset = []
for line in lines:
if detect_numeric(line): # numeric이 존재할 경
dataset.append(line)
else:
modified_temp = select_pron_script(line)
dataset.append(modified_temp)
return dataset
# 문장 내에서 이중전사로 처리된 부분을 철자전사로 변경하는 함
def change_pron_to_dic(line):
if detect_numeric(line): # numeric이 존재할 경
return line
else:
modified_temp = select_pron_script(line)
return modified_temp
def select_pron_script(line):
temp = line
pattern = re.compile(r"\((.*?)\)")
find = re.findall(pattern, line)
for s in range(0, len(find), 2):
temp = temp.replace(find[s], '')
temp = remove_bracket_pair(temp)
temp = remove_slash(temp)
temp = remove_double_blank(temp)
return temp
def remove_punctuation_rules(line, *args):
temp = remove_noise_id(line, *args)
return temp
def is_remove_line(line):
if 'u/' in line:
return True
else:
return False
def replace_alphabet(line):
line = line.replace('B', '비')
line = line.replace('S', '에스')
line = line.replace('D', '디')
line = line.replace('V', '비')
line = line.replace('O', '오')
line = line.replace('T', '티')
line = line.replace('C', '씨')
return line