semvec/pypi-packages huggingface dataset:
ghNum 1.1.3
Professional Persian text to number converter
License: MIT

معرفی کتابخانه ghNum

این کتابخانه یک ابزار تخصصی برای تبدیل کلمات و اعداد حروفی فارسی به معادل عددی (ریاضی) در زبان پایتون است. من این پروژه را برای ساده‌سازی فرآیند پردازش متن در اپلیکیشن‌های فارسی‌زبان توسعه داده‌ام.
🌟 قابلیت‌های برجسته

 پشتیبانی از اعداد بسیار بزرگ: تبدیل کلمات از یکان تا مقیاس‌های عظیمی مثل تریلیون و کوادریلیون.

 هوشمندی در اعداد ترتیبی: تشخیص و تبدیل خودکار کلماتی که به پسوندهای «م»، «ام»، «مین» و «امین» ختم می‌شوند (مثلاً: دویست و پنجاهم -> 2000050).

 جداکننده هزارگان (Thousand Separator): قابلیت نمایش خروجی به صورت دسته‌بندی شده با کاما (مثلاً: 1،250،000) برای خوانایی بهتر.

 خروجی چندزبانه: امکان دریافت ارقام در سه حالت انگلیسی (123)، فارسی (۱۲۳) و عربی (١٢٣).

 نرمال‌سازی خودکار متن: مدیریت هوشمند حروف «ی» و «ک» (عربی/فارسی) و حذف نیم‌فاصله‌ها و کاراکترهای مزاحم.

 پردازش لیستی: متدی اختصاصی برای تبدیل همزمان مجموعه‌ای از متون به لیست اعداد.

🛠 پارامترهای اصلی متد convert

برای استفاده حداکثری از قابلیت‌ها، پارامترهای زیر در اختیار شماست:
پارامتر	توضیحات
text	متن ورودی شما به زبان فارسی.
lang	تعیین زبان ارقام خروجی (en برای انگلیسی، fa برای فارسی، ar برای عربی).
thousand_separator	اگر True باشد، عدد را با ویرگول (کاما) جدا می‌کند.
💻 مثال‌های کاربردی

تبدیل پایه (خروجی Integer)
p2n.convert("هزار و سیصد و هشتاد و پنج")
# خروجی: 1385

تبدیل اعداد ترتیبی (Ordinal)
p2n.convert("دو میلیون و پنجاهم")
# خروجی: 2000050

خروجی فرمت‌دهی شده (فارسی + جداکننده)
p2n.convert("هفت میلیارد و دویست میلیون"، lang='fa'، thousand_separator=True)
# خروجی: "۷،۲۰۰،۰۰۰،۰۰۰"

تبدیل لیستی (Batch)
p2n.convert_list(["ده"، "بیست"، "سی"])
# خروجی: [10، 20، 30]
fitsearchcv 1.0.3
A smarter refit to sklearn.GridSearchCV and sklearn.RandomizedSearchCV to reduce over and underfitting
License: MIT
Requires Python: >=3.7

# **FitSearchCV**— A smarter `refit` selector for scikit-learn searches

`selector-mean` is a tiny utility that helps reduce **overfitting** and **underfitting** when tuning hyperparameters with scikit-learn’s `GridSearchCV` or `RandomizedSearchCV`.

It provides a single function:

- **`selector_mean(cv_results_, metric=None, use_abs_gap=True, clip01=True)`**  
  A callable you pass to `refit=...` that picks the parameter set balancing **high test performance** and **small train–test gap**.

---

<img width="1112" height="886" alt="Train AccuracyTest Accuracy Poor Generalization Overfitting" src="https://github.com/user-attachments/assets/fe175fa7-1e97-44a2-bf29-4d6684ecd0d3" />  
   
   
   
<img width="1191" height="841" alt="Train AccuracyTest Accuracy Poor Generalization Overfitting (1)" src="https://github.com/user-attachments/assets/16809770-f807-443f-8eb8-9765934c47bf" />


## Best Use cases

- accuracy_score

- balanced_accuracy_score

- precision_score (binary, micro, macro, weighted)

- recall_score (binary, micro, macro, weighted)

- f1_score (binary, micro, macro, weighted)

- roc_auc_score

- average_precision_score

- jaccard_score

---

## Why?

Vanilla `GridSearchCV` usually selects the highest mean test score, which can sometimes favor models with high variance.  
Here, `test` refers to as `validation accuracy`.  
`selector_mean` instead minimizes: `((|train - test|) + (1 - test))/2`  
This prevents both underfittnig and overfitting. 

`|train-test|` is for reducing the gap between train and test accuracy thus decreasing **overfitting**. 

`(1-test)` is for reducing the gap between test accuracy and 1 hence increasing the score thus reducing **underfitting**.

---

## Want to try? 

Just type  
<pre>pip install fitsearchcv</pre>

PyPI link: [PyPI](https://pypi.org/project/fitsearchcv/)

---

## How to Use?

<pre>from fitsearchcv.selectors import selector_mean
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression

lr=LogisticRegression()

param_grid = [
    {'penalty': ['l1'], 'C': [0.1, 1, 10], 'solver': ['liblinear', 'saga']},
    
    {'penalty': ['l2'], 'C': [0.1, 1, 10], 'solver': ['liblinear', 'lbfgs', 'saga', 'sag', 'newton-cg']},
    
    {'penalty': ['elasticnet'], 'C': [0.1, 1, 10], 'solver': ['saga'], 'l1_ratio': [0.0, 0.25, 0.5, 0.75, 1.0]},
    
    {'penalty': [None], 'solver': ['lbfgs', 'sag', 'newton-cg', 'saga']}  
]

grid1=GridSearchCV(estimator=lr,
                   param_grid=param_grid,
                   refit=selector_mean, # added line
                   cv=5, 
                   return_train_score=True,
                   n_jobs=-1)</pre>


## Citation

If you use FitSearchCV in academic or research work, a citation or acknowledgement
would be appreciated. See `CITATION.cff` for details.