300 lines
8.5 KiB
Python
300 lines
8.5 KiB
Python
from pydantic import BaseModel
|
||
from typing import List, Optional, Union
|
||
|
||
# برچسب های گرامری
|
||
word_class_dict = {
|
||
"noun": "اسم",
|
||
"proper_noun": "اسم خاص",
|
||
"plural_noun": "اسم جمع",
|
||
"verb": "فعل",
|
||
"auxiliary_verb": "فعل کمکی",
|
||
"adjective": "صفت",
|
||
"adverb": "قید",
|
||
"pronoun": "ضمیر",
|
||
"conjunction": "حرف ربط",
|
||
"particle": "حروف ربط کوچک",
|
||
"preposition": "حرف اضافه",
|
||
"interjection": "صوت/حرف ندا",
|
||
"numeral": "عدد",
|
||
"determiner": "تعیین کننده",
|
||
"classifier": "شمارنده",
|
||
"modal_verb": "فعل وجهی",
|
||
"brand": "نام تجاری",
|
||
"trademark": "علامت تجاری",
|
||
"rare": "نادر",
|
||
"nonce": "واژه ساخته شده برای یک موقعیت خاص",
|
||
"constructed": "ساخته شده توسط هوش مصنوعی",
|
||
"neologism": "واژه تازه ابداع شده",
|
||
"unknown": "ناشناخته",
|
||
"other": "غیره",
|
||
}
|
||
|
||
# برچسب های غیر گرامری کلمه
|
||
tags_dict = {
|
||
"loanword": "واژه وام گرفته شده",
|
||
"foreign": "واژه خارجی گردان شده",
|
||
"formal": "رسمی",
|
||
"informal": "غیررسمی",
|
||
"colloquial": "محاوره ای/گفتاری",
|
||
"slang": "عامیانه",
|
||
"vulgar": "رکیک",
|
||
"offensive": "توهین آمیز",
|
||
"derogatory": "تحقیرآمیز",
|
||
"euphemistic": "مؤدبانه",
|
||
"archaic": "منسوخ",
|
||
"archaism": "کلمه ای قدیمی که گاهی برای اثر هنری استفاده می شود",
|
||
"obsolete": "کاملاً منسوخ شده",
|
||
"dated": "قدیمی ولی هنوز کمی استفاده می شود",
|
||
"historical": "تاریخی",
|
||
"poetic": "کاربرد شعری",
|
||
"literary": "ادبی",
|
||
"modern": "مدرن",
|
||
"literal": "",
|
||
"figurative": "",
|
||
"idiomatic": "اصطلاحی",
|
||
"metaphorical": "اصطلاحی",
|
||
"hyperbolic": "اغراق آمیز",
|
||
"regional": "منطقه ای",
|
||
"dialect": "لهجه ای",
|
||
"united-state": "آمریکایی",
|
||
"united-kingdom": "بریتانیایی",
|
||
"per-iranian": "فارسی ایران",
|
||
"per-afghanian": "فارسی افغانستان",
|
||
"per-tajiks": "فارسی تاجیکستان",
|
||
"persian-gulf-arabic": "عربی خلیج فارس",
|
||
"egyptian-arabic": "عربی مصری",
|
||
"yemenian-arabic": "عربی یمنی",
|
||
"tehrani": "لهجه تهرانی",
|
||
"qomi": "لهجه قمی",
|
||
"colloquial-ersian": "فارسی محاوره ای",
|
||
"humorous": "طنزآمیز",
|
||
"sarcastic": "کنایه ای",
|
||
"ironic": "طعنه آمیز",
|
||
"pejorative": "تحقیرآمیز",
|
||
"affectionate": "محبت آمیز",
|
||
"neutral": "خنثی",
|
||
"elevated": "فاخر",
|
||
"polite": "مؤدبانه",
|
||
"rude": "بی ادبانه",
|
||
"gendered": "(مذکر/مونث) جنسیتی",
|
||
"inclusive": "خنثی جنسیتی",
|
||
"racist": "نژادپرستانه",
|
||
"classist": "طبقاتی",
|
||
}
|
||
|
||
# زبان کلمه
|
||
lang_dict = {
|
||
"persian": "فارسی",
|
||
"old_persian": "فارسی کهن",
|
||
"arabic": "عربی",
|
||
"english": "انگلیسی",
|
||
"turkish": "ترکی",
|
||
"kurdish": "کوردی",
|
||
"azeri": "آذری",
|
||
"etc": "سایر زبان ها",
|
||
}
|
||
|
||
# حوزه کلمه
|
||
scope_dict = {
|
||
"medical": "پزشکی",
|
||
"legal": "حقوقی",
|
||
"scientific": "علمی",
|
||
"technical": "فنی",
|
||
"religious": "مذهبی",
|
||
"mythological": "اساطیری",
|
||
"military": "نظامی",
|
||
"internet": "اینترنت",
|
||
"unknown": "ناشناخته",
|
||
"other": "سایر حوزه ها",
|
||
"public": "روزمره",
|
||
"economic ": "اقتصادی",
|
||
"financial": "مالی",
|
||
"business": "تجارت",
|
||
"tax": "مالیات",
|
||
"budget": "بودجه",
|
||
"industry": "صنعت",
|
||
"agricultural": "کشاورزی",
|
||
"transportation": "حمل و نقل",
|
||
"estate": "املاک",
|
||
"insurance": "بیمه",
|
||
"social": "اجتماعی",
|
||
"culture": "فرهنگ",
|
||
"literature": "ادبیات",
|
||
"art": "هنر",
|
||
"ُsport": "ورزش",
|
||
"family": "خانواده",
|
||
"education": "آموزش",
|
||
"media": "رسانه",
|
||
"environment": "محیط زیست",
|
||
"administrative": "اداری",
|
||
"security": "امنیت",
|
||
"police": "انتظامی",
|
||
"elections": "انتخابات",
|
||
"development": "توسعه",
|
||
"documents": "اسناد",
|
||
"civil": "مدنی",
|
||
"political": "سیاسی",
|
||
"historical": "تاریخی",
|
||
"philosophical": "فلسفی",
|
||
"technology": "فناوری",
|
||
}
|
||
|
||
|
||
# Base-Model
|
||
class WordCorrector(BaseModel):
|
||
id:str # شناسه یکتا داخل دیتابیس
|
||
word: str # کلمه
|
||
is_correct: bool = False # آیا املای کلمه درست است؟
|
||
nearest_correct_word: str # کلمه اصلاحشده
|
||
origin: str = "" # مصدر
|
||
stem: str = "" # ریشه
|
||
is_proper_noun: Optional[bool] = False # اگر اسم است: True = خاص، False = عام
|
||
word_class: Optional[Union[List[str], str]]
|
||
# = [
|
||
# "noun",
|
||
# "proper_noun",
|
||
# "plural_noun",
|
||
# "verb",
|
||
# "auxiliary_verb",
|
||
# "adjective",
|
||
# "adverb",
|
||
# "pronoun",
|
||
# "conjunction",
|
||
# "particle",
|
||
# "preposition",
|
||
# "interjection",
|
||
# "numeral",
|
||
# "determiner",
|
||
# "classifier",
|
||
# "modal_verb",
|
||
# "brand",
|
||
# "trademark",
|
||
# "rare",
|
||
# "nonce",
|
||
# "constructed",
|
||
# "neologism",
|
||
# "unknown",
|
||
# "other",
|
||
# ]
|
||
|
||
tags: Optional[Union[List[str], str]]
|
||
# = [
|
||
# "loanword",
|
||
# "foreign",
|
||
# "formal",
|
||
# "informal",
|
||
# "colloquial",
|
||
# "slang",
|
||
# "vulgar",
|
||
# "offensive",
|
||
# "derogatory",
|
||
# "euphemistic",
|
||
# "archaic",
|
||
# "archaism",
|
||
# "obsolete",
|
||
# "dated",
|
||
# "historical",
|
||
# "poetic",
|
||
# "literary",
|
||
# "modern",
|
||
# "literal",
|
||
# "figurative",
|
||
# "idiomatic",
|
||
# "metaphorical",
|
||
# "hyperbolic",
|
||
# "regional",
|
||
# "dialect",
|
||
# "united-state",
|
||
# "united-kingdom",
|
||
# "per-iranian",
|
||
# "per-afghanian",
|
||
# "per-tajiks",
|
||
# "persian-gulf-arabic",
|
||
# "egyptian-arabic",
|
||
# "yemenian-arabic",
|
||
# "tehrani",
|
||
# "qomi",
|
||
# "colloquial-ersian",
|
||
# "humorous",
|
||
# "sarcastic",
|
||
# "ironic",
|
||
# "pejorative",
|
||
# "affectionate",
|
||
# "neutral",
|
||
# "elevated",
|
||
# "polite",
|
||
# "rude",
|
||
# "gendered",
|
||
# "inclusive",
|
||
# "racist",
|
||
# "classist",
|
||
# ]
|
||
ner_description: Optional[str] = "" # تشریح کلمه
|
||
llm_description: Optional[str] = "" # توضیحات مدل درباره کلمه
|
||
user_description: Optional[str] = "" # توضیحات شخص درباره کلمه
|
||
admin_description: Optional[str] = "" # توضیحات متخصص درباره کلمه
|
||
confidence: Optional[float] = None # اطمینان مدل
|
||
lang: Optional[Union[List[str], str]]
|
||
# = [
|
||
# "persian",
|
||
# "old_persian",
|
||
# "arabic",
|
||
# "english",
|
||
# "turkish",
|
||
# "kurdish",
|
||
# "azeri",
|
||
# "etc",
|
||
# ]
|
||
scope: Optional[Union[List[str], str]]
|
||
# = [
|
||
# "medical",
|
||
# "legal",
|
||
# "scientific",
|
||
# "technical",
|
||
# "religious",
|
||
# "mythological",
|
||
# "military",
|
||
# "internet",
|
||
# "unknown",
|
||
# "other",
|
||
# "public",
|
||
# "economic ",
|
||
# "financial",
|
||
# "business",
|
||
# "tax",
|
||
# "budget",
|
||
# "industry",
|
||
# "agricultural",
|
||
# "transportation",
|
||
# "estate",
|
||
# "insurance",
|
||
# "social",
|
||
# "culture",
|
||
# "literature",
|
||
# "art",
|
||
# "ُsport",
|
||
# "family",
|
||
# "education",
|
||
# "media",
|
||
# "environment",
|
||
# "administrative",
|
||
# "security",
|
||
# "police",
|
||
# "elections",
|
||
# "development",
|
||
# "documents",
|
||
# "civil",
|
||
# "political",
|
||
# "historical",
|
||
# "philosophical",
|
||
# "technology",
|
||
# ]
|
||
|
||
|
||
# مدل برای POST درخواستها
|
||
class IDRequest(BaseModel):
|
||
id: int = None
|
||
name: Optional[str] = None # فیلد اختیاری برای تست
|
||
|
||
|