Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 16 additions & 15 deletions src/everyai/classfier/classfy.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,16 @@
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import (accuracy_score, auc, confusion_matrix, f1_score,
precision_recall_curve, precision_score,
recall_score, roc_curve)
from sklearn.metrics import (
accuracy_score,
auc,
confusion_matrix,
f1_score,
precision_recall_curve,
precision_score,
recall_score,
roc_curve,
)
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.svm import SVC
Expand Down Expand Up @@ -168,8 +175,7 @@ def __init__(
)
self.model_config = None
self.model_path = (
MODEL_PATH
/ f"{self.model_name}_{self.tokenizer_name}_{self.data_name}.pkl"
MODEL_PATH / f"{self.model_name}_{self.tokenizer_name}_{self.data_name}.pkl"
)
self.pipeline = pipeline if pipeline is not None else None

Expand All @@ -179,15 +185,13 @@ def load_data(self, texts, labels, data_name):
raise ValueError("Length of texts and labels should be same")
self.texts = texts
self.labels = labels
logging.info(
f"Loading data: {data_name} to classfier {self.model_name}"
)
logging.info(f"Loading data: {data_name} to classfier {self.model_name}")
self.data_name = data_name
self.classfier_name = (
f"{self.model_name}_{self.tokenizer_name}_{self.data_name}"
)
return self.texts, self.labels, self.data_name

def show_score(self):
self.score = evaluate_classification_model(
self.data.y_test,
Expand Down Expand Up @@ -257,9 +261,7 @@ def __init__(self, **classfiy_config):
else:
logging.warning("Split size not provided or not valid")
if self.texts is None or self.labels is None or self.data_name is None:
logging.warning(
"Data not provided, please use the load_data method"
)
logging.warning("Data not provided, please use the load_data method")
if "device" in classfiy_config and classfiy_config["device"] == "cuda":
logging.warning(
"Cuda is not supported in sklearn and setting device to cpu"
Expand Down Expand Up @@ -334,8 +336,7 @@ def _split_data(self, x, y):
x_train,
y_train,
train_indices,
test_size=self.valid_size
/ (self.train_size + self.valid_size),
test_size=self.valid_size / (self.train_size + self.valid_size),
random_state=42,
)
)
Expand Down Expand Up @@ -424,4 +425,4 @@ def __init__(
device,
model,
tokenizer,
)
)
6 changes: 5 additions & 1 deletion src/everyai/data_loader/data_load.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,11 @@ def load_data2list(self, max_count: int = None):
return data[["question", "answer"]].to_dict(orient="records")

def apply_filter(self, orginal_data: pd.DataFrame) -> pd.DataFrame:
return orginal_data if self.filter is None else orginal_data[orginal_data.apply(self.filter, axis=1)]
return (
orginal_data
if self.filter is None
else orginal_data[orginal_data.apply(self.filter, axis=1)]
)


if __name__ == "__main__":
Expand Down
16 changes: 4 additions & 12 deletions src/everyai/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,12 @@ def generate():
file_path=data_config["file_path"],
data_type=data_config["data_type"],
)
qa_datas = data_loader.load_data2list(
max_count=data_config["max_count"]
)
qa_datas = data_loader.load_data2list(max_count=data_config["max_count"])
everyai_dataset = EveryaiDataset(
dataname=data_config["data_name"],
ai_list=[generate_config["model_name"]],
)
for data in tqdm(
qa_datas, desc="Generating data", total=len(qa_datas)
):
for data in tqdm(qa_datas, desc="Generating data", total=len(qa_datas)):
ai_response: str = generator.generate(data["question"])
everyai_dataset.insert_ai_response(
question=data["question"],
Expand Down Expand Up @@ -106,9 +102,7 @@ def classfiy():
)
everyai_dataset.load(format="mongodb")
logging.info(f"Loaded data: {everyai_dataset.data_name}")
texts, labels = everyai_dataset.get_records_with_1ai(
["THUDM/glm-4-9b-chat-hf"]
)
texts, labels = everyai_dataset.get_records_with_1ai(["THUDM/glm-4-9b-chat-hf"])
for classfiy_config in get_config(file_path=CLASSFIY_CONFIG_PATH)[
"classfier_list"
]:
Expand All @@ -119,9 +113,7 @@ def classfiy():
)
case _:
raise ValueError("Classfier type not supported")
text_classfier.load_data(
texts, labels, data_name=everyai_dataset.data_name
)
text_classfier.load_data(texts, labels, data_name=everyai_dataset.data_name)
text_classfier.train()
text_classfier.test()
text_classfier.save_model()
Expand Down