1. 라이브러리 설치하기
# docx
pip install python-docx
# pdf
pip install pypdf2
# rss
pip install feedparser
# corpus
# nltk 설치 후 www.nltk.org/data.html에서 데이터를 다운로드 할 것
pip install nltk
2. 워드 읽기
import docx
def read_docx(filename):
file = docx.Document(filename)
content = []
for p in file.paragraphs:
content.append(p.text)
# print('단락 스타일:', p.style)
# print('단락 수:', len(file.paragraphs))
return '\n'.join(content) # full content
3. PDF 읽기
from PyPDF2 import PdfFileReader
def read_pdf(filename, password = ''):
pdf_file = open(filename, 'rb') # 파일을 읽기 및 역방향 탐색 모드로 연다
read_pdf = PdfFileReader(pdf_file) # 열린 파일을 PDF 문서를 사용할 PdfFileReader 클래스로 전달
if password:
read_pdf.decrypt(password)
content = []
for i in range(read_pdf.getNumPages()-1):
content.append(read_pdf.getPage(i).extractText())
return '\n'.join(content)
4. RSS 읽기
import feedparser
def read_rss(url):
feed = feedparser.parse(url)
print('피드 제목:', feed['feed']['title'])
print('포스트 수:', len(feed.entries))
for i in range(len(feed.entries)):
post = feed.entries[i]
content = post.content
print('포스트 제목:', post.title)
print('포스트 원본:', content)
5. 말뭉치 생성
import os
import word, pdf
from nltk.corpus.reader.plaintext import PlaintextCorpusReader
def get_text(filename):
file = open(filename, 'r')
return file.read()
def main():
path = 'corpus/'
if not os.path.isdir(path):
os.mkdir(path)
sample_1 = get_text('sample_1.txt')
sample_2 = pdf.getTextPDF('sample_2.pdf')
sample_3 = word.getTextWord('sample_3.docx')
files = [sample_1, sample_2, sample_3]
for index, file in enumerate(files):
with open(path+str(index)+'.txt', 'w') as fout:
fout.write(f)
corpus = PlaintextCorpusReader(path, '.*')
if __name__ == '__main__':
main()
말뭉치는 여러 단어들로 이루어진 문장이다. 자연어 처리 모델을 학습시킬 때 보통 코퍼스를 훈련 데이터로 사용한다.
코퍼스는 보통 아래와 같이 분류한다.
구성(개) | 이름 |
1 | 단일 언어 코퍼스 |
2 | 이중 언어 코퍼스 |
n(n>=2) | 다중 언어 코퍼스 |
pair | 병렬 코퍼스 |
병렬 코퍼스는 ['I like apple.', '나는 사과를 좋아한다.']처럼 서로 다른 언어의 쌍으로 구성되는 것을 말한다.
'Data' 카테고리의 다른 글
이미지 데이터가 부족할 때 생기는 문제(과적합; Over-fitting) 완화 방안 (0) | 2021.04.04 |
---|---|
[자연어처리]파이썬으로 데이터전처리하기 (0) | 2021.03.30 |
[피처엔지니어링]Word2Vec (0) | 2021.03.28 |
[피처 엔지니어링/텍스트 마이닝]텍스트 표현 모델 (0) | 2021.03.27 |
[피처 엔지니어링]피처 정규화 (0) | 2021.03.26 |