Panel API - Text-Mining/Persian-NER GitHub Wiki
سایت متن کاوی دو مدل API ارائه میکند. بخش اصلی API ها مربوط به پردازش متن است که لیست آنها در آدرس https://api.text-mining.ir قابل مشاهده است و مستندات این API ها نیز در آدرس https://docs.text-mining.ir قرار دارد و در حال تکمیل است.
بخش دوم APIها مربوط به پنل تحت وب متن کاوی است که برچسب زنی پیکرهها در آن انجام میشود. این پنل در آدرس https://app-text-mining.ir قرار دارد و مستندات مربوط به API این پنل در این صفحه ویکی که در آن هستید نگهداری میشود.
برای استفاده از APIهای پنل تحت وب، کاربر میبایست ابتدا احراز هویت شود. برای این کار به آدرس زیر یک درخواست ارسال کنید
https://app.text-mining.ir/api/auth/login
درخواست باید از نوع POST
باشد و اطلاعات زیر نیز در Body به صورت Json
ارسال شود
{
Email: "YOUR_TEXTMINING_ACCOUNT_EMAIL",
Password : "YOUR_TEXTMINING_ACCOUNT_PASSWORD"
}
در صورت موفقیت آمیز بودن، کد 200
به همراه توکنJWT
بازگردانده میشود. از این توکن، در احراز هویت سایر API های پنل تحت وب استفاده میشود. در غیر اینصورت کد خطای 400
به همراه پیام خطا بازگردانده میشود.
برای ثبتنام در سامانه در صورتی که حساب کاربری وجود نداشته باشد، از متد زیر در API میتوان استفاده کرد
https://app.text-mining.ir/api/auth/register
درخواست باید از نوع POST
باشد و اطلاعات زیر نیز در Body به صورت Json
ارسال شود
{
Email: "YOUR_EMAIL",
Password : "YOUR_PASSWORD",
ConfirmPassword : "RETYPE_YOUR_PASSWORD",
}
در صورت موفقیت آمیز بودن، کد 200
به همراه پیام موفقیت بازگردانده میشود. در غیر اینصورت کد خطای 400
به همراه پیام خطا بازگردانده میشود.
در صورتی که مدل ارسالی ایرادی داشته باشد نیز خطای 400
به همراه توضیحات خطا در قالب message برگردانده میشود.
پیکره NER فارسی که بر مبنای اطلاعات ویکی پدیا فارسی آماده شده است و خروجی آن به صورت اپن سورس در همین مخزن قرار گرفته، هم از طریق پنل تحت وب و هم از طریق API این پنل قابل استفاده است. در API پنل تحت وب، سه عملیات زیر را میتوان در رابطه با این پیکره انجام داد:
- دریافت یک جمله تصادفی جدید از پیکره برای برچسب زنی
- برچسب زدن یک کلمه در جمله
- دریافت برچسبهای استاندارد NER
در هر یک از دو متد اشاره شده در بالا، به همراه درخواست باید Header
مربوط به Authorization
از نوع Bearer Token
ارسال شود و در آن مقدار دریافتی توکن بعد از استفاده از متد login
که در بخش احراز هویت توضیح داده شد قرار گیرد.
برای این کار به آدرس زیر یک درخواست ارسال کنید. این درخواست همانطور که در بالا توضیح داده شد باید توکن احراز هویت داشته باشد.
https://app.text-mining.ir/api/ner/GetRandomSentence
این درخواست از نوع GET
میباشد و این متد ورودی ندارد. خروجی آن در صورت موفقیت کد 200
به همراه اطلاعات زیر در قالب Json
میباشد. توجه فرمایید که خروجی زیر نمونه است و مقادیر خروجی درخواست شما، بر حسب جمله دریافتی متفاوت خواهد بود.
{
"sentenceId": "8028e32b-e00c-e911-9e31-ac220b2bc74b",
"words": [
{
"WordId": "649c7032-3b05-4988-b734-158a6f62ec5d",
"NerTagId": "7dc3ce92-8259-46ec-a252-049283f668b7",
"Word": "برای",
"WordOrder": 1,
"Tag": "O"
},
{
"WordId": "8accc0b0-9b32-420d-b906-505ea1682877",
"NerTagId": "7fd0f2d6-9d82-4482-9f06-6d9681afb102",
"Word": "نمونه",
"WordOrder": 2,
"Tag": "O"
},
...
}
در خروجی بالا، sentenceId
شناسه جملهای که به صورت تصادفی به کاربر اختصاص یافته است. این شناسه بعداً در زمان برچسب زنی با متد TagWord
که در ادامه توضیح داده میشود استفاده میشود.
در ادامه این خروجی آرایهای از کلمات جمله، به صورت پشت سر هم میآید. در هر یک از عناصر این آرایه، خود کلمه در Word
و ترتیب آن در جمله که عددی میباشد و از عدد ۱ شروع میشود با WordOrder
مشخص است و تگ فعلی این کلمه نیز با Tag
مشخص شده است که یکی از حالات زیر میباشد:
-
B-PER
برای تگ شروع شخص -
I-PER
برای تگ شخص -
B-ORG
برای تگ شروع سازمان -
I-ORG
برای تگ سازمان -
B-LOC
برای تگ شروع مکان -
B-LOC
برای تگ مکان -
B-EVE
برای تگ شروع رویداد -
I-EVE
برای تگ رویداد -
B-DAT
برای تگ شروع تاریخ و زمان -
I-DAT
برای تگ تاریخ و زمان -
O
برای تگ سایر موارد غیر از موارد بالا
علاوه بر موارد بالا، شناسه کلمه نیز در اطلاعات خروجی هر آیتم آرایه کلمات با WordId
مشخص میشود که بعداً در زمان برچسب زنی با متد TagWord
که در ادامه توضیح داده میشود استفاده خواهد شد.
در صورتی که عملیات دریافت جمله تصادفی، موفق نباشد، کد خطای 400
به همراه پیام خطا بازگردانده میشود. خطاهای زیر ممکن است از این تابع بازگردانده شوند:
-
Invalid authentication method
این خطا به صورت موقت ارائه میشود و بعداً با کد خطای دیگری جایگزین میشود. معنی آن این است که توکن که درHeader
درخواست برای احراز هویت به روشJWT
ارسال شده نامعتبر است -
Invalid user data
به معنی آن است که اطلاعات موجود در توکن احراز هویت، قابل شناسایی نیست
در سایر حالات خطا، عبارت کلی An error occurred and we logged it, for security reasons we can't share more details
بازگردانده میشود که به آن معنی است که خطا لاگ شده است و مدیر سیستم از آن مطلع میشود.
برای این کار به آدرس زیر یک درخواست ارسال کنید. این درخواست همانطور که در بالا توضیح داده شد باید توکن احراز هویت داشته باشد.
https://app.text-mining.ir/api/ner/tagword
این درخواست از نوع POST
میباشد و ورودی آن به شکل زیر میباشد. توجه فرمایید که ورودی زیر نمونه است و به جای مقادیر آن باید مقدار شناسه جمله، شناسه کلمه و تگ خود را قرار دهید.
{
SentenceId: "8028e32b-e00c-e911-9e31-ac220b2bc74b",
WordId:"649c7032-3b05-4988-b734-158a6f62ec5d",
UserTag:"I-PER"
}
در صورت موفقیت آمیز بودن ثبت تگ برای کلمه، کد 200
برگردانده میشود و در غیر اینصورت یکی از پیامهای خطای زیر به همراه کد خطای 400
بازگردانده خواهد شد:
-
Invalid model
مدل ورودی غیرمعتبر است. مدل را از جهت وجود همه فیلدها به همان اسم اشاره شده در نمونه بالا مجدداً بررسی کنید. -
Model is not valid. All fields are required
مدل نامعتبر است و بعضی از فیلدهای آن مقدار ندارند یا مقدارشان غیرمتعبر است. -
Invalid authentication method
این خطا به صورت موقت ارائه میشود و بعداً با کد خطای دیگری جایگزین میشود. معنی آن این است که توکن که درHeader
درخواست برای احراز هویت به روشJWT
ارسال شده نامعتبر است -
Invalid user data
به معنی آن است که اطلاعات موجود در توکن احراز هویت، قابل شناسایی نیست -
SentenceId is in incorrect format
شناسه جمله که در قالب یک داده GUID باید ارسال شود غیر معتبر است. -
WordId is in incorrect format
شناسه کلمه که در قالب یک داده GUID باید ارسال شود غیر معتبر است. -
Sentence Not found
جمله مورد نظر شما پیدا نشد. یعنی شناسه جمله در بانک اطلاعاتی موجود نیست -
Sentence is not assigned to you
جمله برای برچسب زنی به شما محول نشده است. وقتی کاربر درخواست یک جمله تصادفی میکند، آن جمله برای برچسبزنی به وی اختصاص داده میشود. یک کاربر نمیتواند جملاتی که به خودش محول نشده است را برچسب زنی کند. -
Invalid tag name
عنوان تگ ارسالی شما نامعتبر است و یکی از تگهای استاندارد نیست
در سایر حالات خطا، عبارت کلی An error occurred and we logged it, for security reasons we can't share more details
بازگردانده میشود که به آن معنی است که خطا لاگ شده است و مدیر سیستم از آن مطلع میشود
این متد نیازی به احراز هویت ندارد و با فراخوانی آدرس زیر قابل دسترس است.
https://app.text-mining.ir/api/ner/standardtags
این درخواست از نوع GET
میباشد و این متد ورودی ندارد. خروجی آن در صورت موفقیت کد 200
به همراه اطلاعات زیر در قالب Json
میباشد.
{
"NerStandardTags": [
{
"Title": "B-PER",
"Color": "#8bc34a",
"PersianName": "شروع شخص",
"Description": "بخش ابتدایی (آغازین) یک موجودیت از نوع شخص، مثال: «آقای» در عبارت «آقای دکتر فراهانی» یا «مهدی» در عبارت «مهدی حسنی» یا «علی» و «مجتبی» در عبارت «علی مجتبی را دوست دارد» (چون علی و مجتبی دو شخص یا موجودیت مجزا و غیر وابسته هستند)",
"Shortcut": "alt+p"
},
{
"Title": "I-PER",
"Color": "#4caf50",
"PersianName": "شخص",
"Description": "اسم، فامیل یا لقب شخص (بغیر از اولین کلمه عبارت منتسب به آن شخص). مثال: «دکتر» و «فراهانی» در عبارت «آقای دکتر فراهانی» یا «حسنی» در عبارت «مهدی حسنی»",
"Shortcut": "p"
},
...
}
خروجی این متد، آرایهای از تگهای استاندارد است که در آن تگ انگلیسی استاندارد با Title
و اسم فارسی تگ با PersianName
و مثال استفاده از تگ با Description
و رنگ بک گراند تگ با Color
و همچنین کلید میانبر تگ با Shortcut
مشخص شده است
چه در زمان دریافت جمله تصادفی و چه در زمان ثبت یک تگ (برچسب) برای کلمات آن جمله، یکی از تگهای زیر مورد استفاده قرار میگیرد:
-
B-PER
برای تگ شروع شخص -
I-PER
برای تگ شخص -
B-ORG
برای تگ شروع سازمان -
I-ORG
برای تگ سازمان -
B-LOC
برای تگ شروع مکان -
B-LOC
برای تگ مکان -
B-EVE
برای تگ شروع رویداد -
I-EVE
برای تگ رویداد -
B-DAT
برای تگ شروع تاریخ و زمان -
I-DAT
برای تگ تاریخ و زمان -
O
برای تگ سایر موارد غیر از موارد بالا