Add tf_idf model-family provenance classifiers (code domain, 10k rows/family, 6 one-vs-rest)
cfd7c14 verified Download preprocessing.py from SupritiVijay/classifiers_model_provenance: direct link, hf CLI and curl.
- Browser
- Download file 2.13 kB
-
https://huggingface.co/SupritiVijay/classifiers_model_provenance/resolve/main/preprocessing.py
- Command line
-
hf download hf://SupritiVijay/classifiers_model_provenance/preprocessing.py
-
curl -L -o preprocessing.py https://huggingface.co/SupritiVijay/classifiers_model_provenance/resolve/main/preprocessing.py
2.13 kB
| from __future__ import annotations | |
| import math | |
| import re | |
| import string | |
| from typing import Any, Iterable, List | |
| import numpy as np | |
| try: | |
| import pandas as pd | |
| except ImportError: # pragma: no cover | |
| pd = None | |
| def is_missing(value: Any) -> bool: | |
| if value is None: | |
| return True | |
| if isinstance(value, float) and math.isnan(value): | |
| return True | |
| if pd is not None: | |
| try: | |
| missing = pd.isna(value) | |
| if isinstance(missing, (bool, np.bool_)): | |
| return bool(missing) | |
| except (TypeError, ValueError): | |
| pass | |
| return False | |
| def coerce_text(value: Any) -> str: | |
| if is_missing(value): | |
| return "" | |
| return str(value) | |
| def extract_chat_prompt(value: Any) -> str: | |
| if is_missing(value): | |
| return "" | |
| if isinstance(value, str): | |
| return value | |
| if isinstance(value, np.ndarray): | |
| value = value.tolist() | |
| if isinstance(value, (list, tuple)): | |
| if not value: | |
| return "" | |
| first = value[0] | |
| if isinstance(first, dict): | |
| return coerce_text(first.get("content", "")) | |
| return coerce_text(first) | |
| if isinstance(value, dict): | |
| return coerce_text(value.get("content", "")) | |
| return coerce_text(value) | |
| def extract_prompt_from_row( | |
| row: Any, | |
| prompt_column: str = "prompt", | |
| legacy_input_column: str = "input", | |
| ) -> str: | |
| if prompt_column in row and not is_missing(row[prompt_column]): | |
| return coerce_text(row[prompt_column]) | |
| if legacy_input_column in row: | |
| return extract_chat_prompt(row[legacy_input_column]) | |
| return "" | |
| def preprocess_text(text: Any) -> str: | |
| text = coerce_text(text).lower() | |
| text = re.sub(r"\d+", " ", text) | |
| common_punct = string.punctuation.replace("-", "") | |
| text = text.translate(str.maketrans(common_punct, " " * len(common_punct))) | |
| text = re.sub(r"\s+", " ", text) | |
| return text.strip() | |
| def preprocess_batch(texts: Iterable[Any]) -> List[str]: | |
| return [preprocess_text(text) for text in texts] | |
| def simple_tokenizer(text: str) -> List[str]: | |
| return text.split() | |