フィルタリングを適用して,どのような文章がフィルタリングされるか確認する
llm-jp-corpusの検証
mC4フィルタリングをCommonCrawlのサンプルデータに適用
各フィルタによってフィルタリングされたデータを確認
サンプルデータ(776件)
フィルタリング | 件数 | コメント |
---|---|---|
is_japanese | 59 | 漢字多めの日本語や,英語+日本語の文章も混ざっている |
is_not_ad_content | 10 | 全体的に質が悪い→rephrasingに回せそう? |
is_not_adult_content | 37 | アダルト以外もある |
is_not_discrimination_content | 15 | 差別的な文章ではないような… |
is_not_violence_content | 6 | av 2件,闇金被害相談の広告,小説,etc |
has_good_average_sentence_length | 248 | 全体的に質が悪い |
has_good_compression_ratio | 156 | 閾値ゆるめてもいいかも? |
is_not_adult_content_false.jsonl
is_not_discrimination_content_false.jsonl
is_not_violence_content_false.jsonl
has_good_average_sentence_length_false.jsonl
has_good_compression_ratio_false.jsonl
URLフィルタリング
def has_valid_domain() -> Callable[..., bool]:
# BASE_PATHから有効なドメインのリストを含むファイルのパスを結合
dict_path = BASE_PATH.joinpath("dict/ja_valid_domains.txt")
# ファイルから有効なドメインのリストを読み込み、セットとして保存
# ドメインのリスト [biz,cc,com,info,jp,me,net,org,site,tokyo,tv,work,xyz]
valid_domains = set(dict_path.read_text().splitlines())
def judge(example: dict[str, Any]) -> bool:
# もしURLが"<https://ja.wikipedia.org/>"で始まるなら、無効と判断
if example["meta"]["url"].startswith("<https://ja.wikipedia.org/>"):
return False
# URLからドメイン名を抽出(例:'example.com'から'example.com'を抽出)
domain: typing.Optional[str] = urlparse(example["meta"]["url"]).hostname
# ドメインがNoneでないことを保証(URL解析が正しく行われたことを確認)
assert domain is not None
# ドメイン名からトップレベルドメイン(TLD)を抽出(例:'example.com'から'com'を抽出)
tld = domain.split(".")[-1]
# TLDが有効なドメインのセットに含まれているか判定し、結果を返す
return tld in valid_domains
# 内部関数judgeを返す
return judge
備考
if example["meta"]["url"].startswith("<https://ja.wikipedia.org/>"):
return False
読み込むファイルの拡張子フィルタリング?
def has_valid_extension() -> Callable[..., bool]:
# BASE_PATHから有効なファイル拡張子のリストを含むファイルのパスを結合
dict_path = BASE_PATH.joinpath("dict/code_valid_extensions.txt")
# ファイルから有効なファイル拡張子のリストを読み込み、セットとして保存
# ファイル拡張子リスト [asm, bat, cmd, c, h, cs, cpp, hpp , c++, etc...]
valid_extensions = set(dict_path.read_text().splitlines())
def judge(example: dict[str, Any]) -> bool:
# 与えられた辞書型データの'meta'キーに含まれる'ext'キー(ファイル拡張子)が
# 有効なファイル拡張子のセットに含まれているかどうかを判断
# 有効な拡張子の場合はTrue、そうでない場合はFalseを返す
return example["meta"]["ext"] in valid_extensions
# 判定用の内部関数judgeを返す
return judge