Open1
日本語wikipediaコーパスを用いたbertの事前学習
wikiデータのダウンロード
wget https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2
bzip2 -d jawiki-latest-pages-articles.xml.bz2
wikiデータの処理
pip install wikiextractor
python -m wikiextractor.WikiExtractor --processes `nproc` jawiki-latest-pages-articles.xml
find text/ | grep wiki | awk '{system("cat "$0" >> wiki.txt")}'
# mac
sed -i '' '/^<[^>]*>$/d' wiki.txt
# Linux
sed -ie 's/<[^>]*>//g' wiki.txt
mecab with neologdを用いる前の正規化およびクリーニング処理
import argparse
import re
from pathlib import Path
import unicodedata
from tqdm import tqdm
import neologdn
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input")
parser.add_argument("-o", "--output")
args = parser.parse_args()
return args
def main():
args = parse_args()
input = Path(args.input)
output = Path(args.output)
basic = re.compile(r"[\u00a1-\u301f]")
hangle = re.compile(r"[\uac00-\ud7ff]")
with input.open() as fin, output.open("w") as fout:
for line in tqdm(fin, total=24863065):
line = neologdn.normalize(line)
line = unicodedata.normalize("NFKC", line)
# 不要そうな記号を除去(要検証)
line = basic.sub("", line)
# ハングルを削除
line = hangle.sub("", line)
# 短い行は除去
if len(line) < 50:
continue
fout.write(line)
# python clean_wiki.py -i wiki.txt -o out.txt
if __name__ == "__main__":
main()
mecabによる分かち書き
cat out.txt | parallel --blocksize 5061291 -L 10000 --pipe mecab -d /home/share/lib/mecab/dic/mecab-ipadic-neologd -Owakati > wiki_tmp.txt
cat wiki_tmp.txt | parallel --pipe --L 10000 --blocksize 6579680 iconv > wiki_mecab.txt
rm -rf wiki_tmp.txt
mecab -F"%Mア" -E"\n" -b 100000 < wiki_norm.txt > wiki.txt.tok