Goal

既存プロジェクトの調査

既存プロジェクトの検証

フィルタリングを適用して,どのような文章がフィルタリングされるか確認する

llm-jp-corpusのフィルタリングの全て

has_valid_domain()

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

has_valid_extension()

読み込むファイルの拡張子フィルタリング?

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