説明

import jsonlines
import fasttext

def load_blocklist(file_path):
    with open(file_path, 'r') as f:
        return set(line.strip() for line in f)

def is_valid_url(url, blocklist):
    return not any(block in url for block in blocklist)

def is_japanese(text, model):
    text = text.replace('\\n', ' ')  # 改行文字をスペースに置き換える
    lang, _ = model.predict(text)
    return lang[0] == '__label__ja'

def is_valid_article(item, blocklist, model):
    if not is_valid_url(item['url'], blocklist):
        return False
    if not is_japanese(item['text'], model):
        return False
    return True

def main():
    blocklist_file = 'RefinedWeb_DomainBlocklist.txt'
    fasttext_model = 'lid.176.bin'
    input_file = 'wikibooks_ja.jsonl'
    output_file = 'wikibooks_ja_filtered.jsonl'
    
    blocklist = load_blocklist(blocklist_file)
    model = fasttext.load_model(fasttext_model)
    
    total_articles = 0
    filtered_articles = 0
    
    with jsonlines.open(input_file) as reader, jsonlines.open(output_file, 'w') as writer:
        for item in reader:
            total_articles += 1
            if is_valid_article(item, blocklist, model):
                writer.write(item)
                filtered_articles += 1
    
    print(f'元のデータ数: {total_articles}')
    print(f'抽出された記事数: {filtered_articles}')
    print(f'除外された記事数: {total_articles - filtered_articles}')

if __name__ == '__main__':
    main()
    
    
元のデータ数: 17648
抽出された記事数: 17362
除外された記事数: 286

#FastTextによる日本語判定、RefinedWeb_DomainBlocklist.txtブロックリストを適用。

※ja_valid_domains.txtを有効にすると、抽出される記事数は5件まで減る(減ってしまう)
→(ja_valid_domains.txt)
biz
cc
com
info
jp
me
net
org
site
tokyo
tv
work
xyz

4/22(日)時点

wikibooks_ja_filtered.jsonl

todo

wikibooks

学術的なデータの収集のため、