import os import word, pdf from nltk.corpus.reader.plaintext import PlaintextCorpusReader def getText(txtFileName): file = open(txtFileName, 'r') return file.read() # 새로운 corpus 폴더 생성-디렉터리 newCorpusDir = 'mycorpus/' if not os.path.isdir(newCorpusDir): os.mkdir(newCorpusDir) txt1 = getText('sample_feed.txt') txt2 = pdf.getTextPDF('sample-pdf.pdf') txt3 = word.getTextWord('sample-one-line.docx') # 세 문자열 객체의 내용을 디스크에 파일로 작성(쓰기모드) files = [txt1, txt2, txt3] for idx, f in enumerate(files): with open(newCorpusDir + str(idx) + '.txt', 'w') as fout: fout.write(f) # 파일을 저장한 디렉터리에서 plaintext 객체 생성 newCorpus = PlaintextCorpusReader(newCorpusDir, '.*') print(newCorpus.words()) #0.txt 모든 단어 출력 print(newCorpus.sents(newCorpus.fileids()[1])) #1.txt 문장 출력 print(newCorpus.sents(newCorpus.fileids()[0])) #0.txt 단락별 출력
# 2장 처리 전 텍스트, 소싱, 정규화 - 파이썬에서 워드 문서 읽기 import docx import word # 문서 경로 초기화 및 전체 문서 출력 docName = '/workspace/NLP_python/codes/Chapter2/Files/sample-one-line.docx' print('Document in full :\n', word.getTextWord(docName)) # 단락 정보 # 단락 수 출력 doc = docx.Document(docName) print('단락 수 : ', len(doc.paragraphs)) # 2번 단락만 출력 및 2번 단락 스타일 출력 print('2번 단락 : ', doc.paragraphs[1].text) print('2번 단락 스타일 : ', doc.paragraphs[1].style) # 실행(run) 횟수 확인 print('Paragraph 1:', doc.paragraphs[0].text) print('Number of runs in paragraph 1:', len(doc.paragraphs[0].runs)) for idx, run in enumerate(doc.paragraphs[0].runs): print('Run %s : %s' % (idx, run.text)) # 각 실행의 스타일 식별 print('is Run 5 underlined:', doc.paragraphs[0].runs[5].underline) print('is Run 1 bold:', doc.paragraphs[0].runs[1].bold) print('is Run 3 italic:', doc.paragraphs[0].runs[3].italic)
file = open(txtFileName, 'r') return file.read() # 말뭉치 폴더 생성 newCorpusDir = 'mycorpus/' if not os.path.isdir(newCorpusDir): # 말뭉치 폴더가 이미 존재하는가? os.mkdir(newCorpusDir) # 파일 읽기 # 일반 텍스트 파일 txt1 = getText('./Files/sample_feed.txt') # PDF 파일 txt2 = pdf.getTextPDF('./Files/sample-pdf.pdf') # DOCX 파일 txt3 = word.getTextWord('./Files/sample-one-line.docx') # 파일 쓰기 files = [txt1, txt2, txt3] for idx, f in enumerate(files): with open(newCorpusDir + str(idx) + '.txt', 'w') as fout: fout.write(f) # 사용자 정의 말뭉치 만들기 # 폴더 내의 모든 파일을 읽어와 파일들로부터 말뭉치를 생성한다 newCorpus = PlaintextCorpusReader(newCorpusDir, '.*') # 사용자 정의 말뭉치가 잘 만들어 졌는지 확인 print(newCorpus.words()) # 말뭉치의 모든 단어를 포함하는 배열 print(newCorpus.sents(newCorpus.fileids()[1])) # 1.txt에 있는 모든 문장 배열을 출력 print(newCorpus.paras(newCorpus.fileids()[0])) # 0.txt에 있는 모든 단락 배열을 출력