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
끝
'프로그래밍공부 > 파이썬' 카테고리의 다른 글
공공데이터 api를 이용해서 코로나 현황 웹페이지에 띄우기 (4) | 2020.09.04 |
---|---|
공공데이터api로 코로나 감염자수 증감률 확인해보기 (0) | 2020.09.03 |
토이프로젝트 (0) | 2020.08.21 |
문장만들기툴 (0) | 2020.06.30 |
코퍼스 검색툴 (0) | 2020.06.30 |