티스토리 뷰

728x90

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

728x90
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday