본문 바로가기

NLP 자연어 처리, Natural Language Processing

Wikipedia Dataset Preprocessing

1. Data를 다운받아줍니다.

 

dumps.wikimedia.org/enwiki/latest/

 

Index of /enwiki/latest/

 

dumps.wikimedia.org

일반적으로 enwiki-latest-pages-articles1.xml-p1xxx.bz2 데이터를 사용합니다.

클릭하면 자동으로 다운이 받아집니다.

 

한번씩 많은 데이터를 받으려고 할 때에는 오류가 나기때문에 중간 데이터가 없다고 생각하시지말고 천천히 순차적으로 받아주시면 되겠습니다.

 

우선은 제일 오른쪽에는 용량이 나와있습니다. 기본 byte로 표시되어 있고 계산기를 통해 1024씩 나눠서 KB, MB, GB로 확인 하실 수 있습니다.

 

다운을 받으셨다면 폴더를 하나 만들어줍니다.

 

만든 폴더에서 터미널을 여신후 아래의 코드를 입력해주시면 Wikipedia Dataset을 전처리 할 수 있는 패키지가 다운로드 됩니다.

git clone "https://github.com/attardi/wikiextractor.git"

 

이후 설치된 폴더에서 setup.py 있는 경로에서 다음 코드를 입력합니다.

python setup.py install

 

그렇게되면 나머지 패키지들이 해당 폴더에 설치 됩니다.

 

2. 데이터 전처리하기

설치가 완료되면 다운로드 받은 파일들을 setup.py 가 있는 해당 폴더 내에 새로 폴더를 만들어 옮겨줍니다.

아래의 사진은 압축을 푼 후의 해당 폴더의 사진입니다.

선택한 폴더는 아까 위키피디아에서 다운 받은 데이터 입니다.

 

데이터를 추출하는 방법은 다음과 같습니다.

python -m wikiextractor.WikiExtractor ./wikidata/enwiki-latest-pages-articles1.xml-p1p41242.bz2

위의 코드를 입력하시면 아래와 같이 처리가 되고 완료 메세지가 뜹니다.

해당 폴더안의 text 폴더가 새로 생기면서 파일은 1M 크기의 파일로 저장됩니다.

 

3. 한번에 처리하기

 

해당 폴더에서 실행하는 법을 주피터 노트북/랩 에서 똑같이 실행할 수 있습니다.

자동으로 모든 파일이 추출됩니다.

from glob import glob
list_input = sorted(glob('./wikidata/enwiki-latest-pages-artic*.bz2'))

for i in list_input:
    !python -m wikiextractor.WikiExtractor $i

반응형