위키피디아 데이터 다운로드
위키피디아는 주기적으로 데이터(덤프)를 제공하고 있다.
아래 사이트에 접속하면 직접 다운로드할 수 있다.
https://ko.wikipedia.org/wiki/위키백과:데이터베이스_다운로드
위키백과:데이터베이스 다운로드 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 이 문서는 한국어 위키백과의 정보문입니다.이 문서는 정책과 지침은 아니지만, 위키백과의 규범과 관습 측면에서 공동체의 확립된 관행을 설명하고 있습니다
ko.wikipedia.org
하지만 현재 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] 단어 유사도 구현하기 (2) | 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 |