티스토리 뷰
1. kss 모듈을 먼저쓸까? 정제와 토큰화 후 kss를 쓸까?
-> 모듈을 사용하여 불러온 pdf를 split('\n')해주고, 함수를 사용하여 정제 후 깨끗한 한글문장에서 kss를 사용.
2. kss 사용을 위한 문자열 변환 시키기
-> 임의의 ex_sentence = '' 를 생성 후 한글을 출력해 string sentence를
ex_sentence =+ sentence 이용하여 만듬
2. 파이참에서 출력 시 부분적으로 짤리는 오류가 있었고, 터미널에선 없었는데 왜 그럴까?
-> 추후 추가
3. footer의 규칙없는 더러운 내용 지우는 방법?
-> 정규식을 써야할 지, 다른 방법이 있나 고민 중...
4. all_text = '' / all_text += sentence 의 사용으로 ''를 붙이자
5. input과 output 정확히 알기
-> 주석을 이용하여 채킹하기.
6.명확하게 모르는 부분 알기, 하다가 다른 방향으로 빠지지 않기.
7. stanza, nltk, kss 등 다양한 라이브러리 사용법 숙지
-> 다양한 모듈로 불러올 때 어떤식으로 불러올 수 있는지, 어떤 차이점이 있고, 무엇이 더 좋을지 알기
8. 참고문항 아래 글 삭제 고민해보기
->'참고문항'이라는 글이 두개 이상일 때도 생각해서 if문 사용으로 만들어 보기
9. 리턴
-> 함수 자체로직을 불러온다는 개념으로 이해
10. ''.join() 후 Tokenizer 사용하기.
11. 내 로직
import re
from kss import split_sentences
import pandas as pd
import pdftotext
# from regex_function import *
with open("/Users/ichanghyeon/Desktop/day_monday/러일전쟁 이전 대한제국 원수부의 군무정책 강화와 군사운영의 성격.pdf", "rb") as f:
pdf = pdftotext.PDF(f)
pdfToken = []
for page in pdf:
pdfToken.extend(page.strip().lstrip().split("\n"))
delete_header_index = -1
delete_footer_index = -1
for sentence in pdfToken: # sentence = str
if "1. 머리말" in sentence: # delete_header
delete_header_index = pdfToken.index(sentence)
elif "원고투고일" in sentence: # delete_footer
delete_footer_index = pdfToken.index(sentence)
del pdfToken[:delete_header_index]
del pdfToken[delete_footer_index:]
modified_pdf = []
all_text = ''
for idx, sentence in enumerate(pdfToken):
sentence = check_delete_word(sentence)
sentence = check_delete_word(sentence)
sentence = specialChar_delete(sentence)
sentence = delete_count(sentence)
sentence = delete_line(sentence)
sentence = assist_word_delete(sentence)
# print(sentence.strip())
# print('-------------')
modified_pdf.append(sentence.strip())
# all_text += sentence
# modified_pdf.append("".join(sentence))
# result = "".join(modified_pdf)
# use_list = split_sentences(result) # 문장단위 파싱 list
modified_pdf
import re
def check_delete_word(sentence):
check_word = re.compile(r'그리고|그런데|그러나|그러므로|또한|그래서|하지만|예를 들어|예를들어|예를 들면|예를들면|구체적으로')
delete_sentence = re.sub(check_word, '', sentence)
return delete_sentence # 지워진 문장이 delete_sentence에 담김 그리고 sentence이름으로 넘겨줌
def specialChar_delete(sentence):
check_word = re.compile(r'^[a-zA-Z\{\}\[\]\/?.,;:|\)~\`!^\-_+<>@\#$%&\\\=\(\’\”\s]*$')
delete_sentence = re.sub(check_word, '', sentence)
return delete_sentence
def delete_count(sentence):
specific_start_word = re.compile(r'[첫째|둘째|셋째].[,]')
delete_word = re.sub(specific_start_word, '', sentence)
return delete_word
def delete_line(sentence): #1. 한글 2. 한글, 가. 한글 ...삭제
stapling_sentence = re.compile(r'(^[\d|I|II|III|가|나|다][.]\s[가-힣ㄱ-ㅎ].+)|(^[\s].[가|나|다][.].+)|[\d]{0,5}[\)]')
delete_word = re.sub(stapling_sentence, '', sentence.strip())
return delete_word
def assist_word_delete(sentence): #병기문자안 영어 러시아어 등 삭제
sentence.split('\n')
check_word = re.compile(r'([「]|[\(])+[\.a-zA-Z一-龥\sЁёА-я]+([\)]|[」])+')
assist_delete = re.sub(check_word, '', sentence)
return assist_delete
def delete_NIDA(sentence):
find_word = re.compile(r'[?!아니다][니다].+$')
delete_NIDA_word = re.search(find_word, sentence)
if delete_NIDA_word is None:
return delete_NIDA_word
def check_word_count(regex_list): # 15 ~ 30 어절 찾기 함수 # 문자열로 들어옴
if 31 > len(regex_list.split(' ')) and len(regex_list.split(' ')) > 9:
return regex_list
else:
#
return regex_list
'💻 개발 > 언어' 카테고리의 다른 글
[Python] 어절수 조건에 일치하는 경우만 출력하기 (0) | 2021.06.30 |
---|---|
[Python] 여러가지 함수 input, output 정리 (0) | 2021.06.29 |
[Python] pdf to text | Parsing 기본, 기초,시작 정규식(병기표현) (0) | 2021.06.23 |
[Typescript] 특징 (0) | 2021.03.02 |
[Typescript] 시작하기 (0) | 2021.03.02 |
- Total
- Today
- Yesterday