Skip to content

Panel API

Hamed Saeedi edited this page Dec 31, 2018 · 10 revisions

API پنل تحت وب

در این بخش، توضیحات مربوط به 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 برچسب زنی پیکره NER

پیکره NER فارسی که بر مبنای اطلاعات ویکی پدیا فارسی آماده شده است و خروجی آن به صورت اپن سورس در همین مخزن قرار گرفته، هم از طریق پنل تحت وب و هم از طریق API این پنل قابل استفاده است. در API پنل تحت وب، دو عملیات زیر را می‌توان در رابطه با این پیکره انجام داد:

  • دریافت یک جمله تصادفی جدید از پیکره برای برچسب زنی
  • برچسب زدن یک کلمه در جمله

احراز هویت برای API برچسب زنی پیکره

در هر یک از دو متد اشاره شده در بالا، به همراه درخواست باید 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 بازگردانده می‌شود که به آن معنی است که خطا لاگ شده است و مدیر سیستم از آن مطلع می‌شود

تگ‌های استاندارد NER

چه در زمان دریافت جمله تصادفی و چه در زمان ثبت یک تگ (برچسب) برای کلمات آن جمله، یکی از تگ‌های زیر مورد استفاده قرار می‌گیرد:

  • B-PER برای تگ شروع شخص
  • I-PER برای تگ شخص
  • B-ORG برای تگ شروع سازمان
  • I-ORG برای تگ سازمان
  • B-LOC برای تگ شروع مکان
  • B-LOC برای تگ مکان
  • B-EVE برای تگ شروع رویداد
  • I-EVE برای تگ رویداد
  • B-DAT برای تگ شروع تاریخ و زمان
  • I-DAT برای تگ تاریخ و زمان
  • O برای تگ سایر موارد غیر از موارد بالا
Clone this wiki locally