위키피디아 데이터 다운로드
위키피디아는 주기적으로 데이터(덤프)를 제공하고 있다.
아래 사이트에 접속하면 직접 다운로드할 수 있다.
https://ko.wikipedia.org/wiki/위키백과:데이터베이스_다운로드
하지만 현재 jupyter notebook을 사용하고 있기 때문에
아래 command를 이용해서 다운로드하였다.
!wget https://dumps.wikimedia.org/kowiki/latest/kowiki-latest-pages-articles.xml.bz2
※ 해당 url은 사이트에서 확인할 수 있듯이 일반 문서의 최신판 덤프이다.
데이터 파싱
위 과정을 진행하면 kowiki-latest-pages-articles.xml.bz2 파일을 얻을 수 있다.
이를 파싱 하기 위해 wikiextractor 패키지를 설치한다.
!pip install wikiextractor
설치받은 wikiextractor를 이용해서 데이터를 파싱 한다.
!python -m wikiextractor.WikiExtractor kowiki-latest-pages-articles.xml.bz2
아래 명령어를 입력하면 text/ 폴더가 새로 생긴 것을 확인할 수 있다.
%ls
text 폴더 내부에는 AA ~ AJ까지의 폴더가 존재하고,
각 폴더 내부에는 약 100개의 파일이 들어가 있다.
파일을 열어보면 아래와 같이 <doc> 태그 내에 본문이 있는 형태이다.
파일 하나로 통합
AA~AJ 안에 있는 모든 위키 파일을 하나로 통합해 보자.
이를 위해 우선 내부에 있는 모든 파일 경로를 리스트화한다.
import os
def get_filename_list(dirname):
filepaths = []
filenames = os.listdir(dirname)
for filename in filenames:
filepath = os.path.join(dirname, filename)
if os.path.isdir(filepath):
filepaths.extend(list_wiki(filepath))
else:
find = re.findall(r"wiki_[0-9][0-9]", filepath)
if 0 < len(find):
filepaths.append(filepath)
return sorted(filepaths)
filepaths = get_filename_list('text')
위에서 리스팅 한 파일을 wiki.txt파일에 모두 합친다.
with open("wiki.txt", "w") as resfile:
for filename in filepaths:
with open(filename) as reqfile:
contents = reqfile.read()
resfile.write(contents)
반응형
'💻 개발IT > 기타' 카테고리의 다른 글
CSTS 요약 3 - 테스트 프로세스 (0) | 2023.06.13 |
---|---|
CSTS 요약 2 - 테스트 설계 기법 (0) | 2023.06.12 |
CSTS 요약 1 - 테스트 개요 (0) | 2023.06.12 |
[gitlab-ci.yaml] config contains unknown keys: rules (0) | 2023.03.21 |
[FastText] 단어 유사도 구현하기 (0) | 2023.02.07 |
[Word2Vec] 단어 유사도 구현하기 (0) | 2023.02.01 |
[Gensim] The vocab attribute was removed from KeyedVector in Gensim 4.0.0. (0) | 2023.01.29 |
[selenium] ElementClickInterceptedException: Message: element click intercepted: (0) | 2022.09.26 |