프로그래밍공부/파이썬
코퍼스중복제거툴
중랑구보안관
2020. 6. 30. 11:40
NLU업무에서 원어민들이 문장들 만들어주다보면 중복되는 문장이 상당히 많아진다.
그래서 이걸 제거해줘야 여러모로 편한데 이걸 또 손으로 일일이 할 순 없으니.. 역시 파이썬으로 간단하게 스크립트를 짰다.
이거 이전에 JAVA Swing으로 만든 버전도 있는데 여기 보안상 파일을 올릴 수가 없다 ㅜㅜ(이와 같은 이유로 덩치가 조금 큰 툴들은 다 버리게 생겼다 ㅠㅠ)
쩄든 map이 중복허용이 안되는 점을 이용하여 만들었다.
import sys
import re
def main(argv):
input_file_name = argv[1]
corpus_map = {}
data_list= []
outData_list = []
with open(input_file_name+".txt","r", encoding='UTF8') as file:
for line in file.readlines():
#주석, 공백은 패스
if line.find('#') == 0 or line.find('\t') == -1:
data_list.append(line)
continue
lines = line.split('\t')
sentence=lines[5].replace(" "," ").lower().strip()
sentence=re.sub('(\?|\,|\.|\-|\_)','',sentence)
if sentence in corpus_map:
outData_list.append(line)
else:
data_list.append(line)
corpus_map[sentence] = line
with open(input_file_name+"_after.txt","w",encoding='UTF8') as file:
for data in data_list:
file.write(data)
with open("outsentence.txt","w",encoding='UTF8') as file:
for data in outData_list:
file.write(data)
if __name__ == '__main__':
main(sys.argv)
참고로 여기서 사용하는 코퍼스는 아래와 같이 생겼다
20181228 1 m2 Request m2_common_start start the <Washer:m2_device_washer> NONE NONE
20181228 1 m2 Request m2_common_start start running the <Washer:m2_device_washer> right now NONE NONE
20181228 1 m2 Request m2_common_start start running the <Washer:m2_device_washer> NONE NONE
20181228 1 m2 Request m2_common_start start running <Washer:m2_device_washer> NONE NONE
끝