NAV
C# Python Java PHP

شروع به کار

دریافت کلید API برنامه‌نویسان برای استفاده از امکانات از سایت https://app.text-mining.ir است.

استفاده‌کنندگان رایگان از API، حداکثر مجاز به ارسال روزی ۱۰۰۰ واحد درخواست (فراخوانی) و در هر ثانیه یک درخواست هستند.

لیست کامل توابع API در قالب swagger در آدرس https://api.text-mining.ir در دسترس است.

به مستندات سرویس متن‌کاوی فارسی‌یار خوش آمدید.

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

توجه: برای استفاده از هر یک از امکانات وب سرویس متن‌کاوی باید کلید API داشته باشید. همچنین برای جلوگیری از تکرار در نمونه کد بعضی از زبان‌ها مانند پایتون، بعضی از توابع پایه‌ای مثل تابع فراخوانی Rest API یا دریافت توکن تنها یک بار اضافه شده‌اند.

احراز هویت

مطمئن شوید که YOUR_API_KEY را با کلید API دریافتی خود جایگزین کرده‌اید.


private string GetJWTToken()
{
    string jwtToken = string.Empty;
    HttpClient client = new HttpClient();
    var response = client.GetAsync($"https://api.text-mining.ir/api/Token/GetToken?apikey={YOUR_API_KEY}").Result;
    if (response.IsSuccessStatusCode)
    {
        string res = response.Content.ReadAsStringAsync().Result;
        jwtToken = (string) JObject.Parse(res)["token"];
    }
    return jwtToken;
}


import requests
import json

def callApi(url, data, tokenKey):
    headers = {
        'Content-Type': "application/json",
        'Authorization': "Bearer " + tokenKey,
        'Cache-Control': "no-cache"
    }
    response = requests.request("POST", url, data=data.encode("utf-8"), headers=headers)
    return response.text

##################### Get Token by Api Key ##########################

baseUrl = "http://api.text-mining.ir/api/"
url = baseUrl + "Token/GetToken"
querystring = {"apikey":"YOUR_API_KEY"}
response = requests.request("GET", url, params=querystring)
data = json.loads(response.text)
tokenKey = data['token']


OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/Token/GetToken?apikey=YOUR_API_KEY")
  .get()
  .addHeader("Content-Type", "application/json")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/Token/GetToken');
$request->setMethod(HTTP_METH_GET);

$request->setQueryData(array(
  'apikey' => 'YOUR_API_KEY'
));

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Content-Type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

در صورت موفق بودن درخواست، خروجی شبیه زیر برگردانده می‌شود که TOKEN_VALUE همان توکن احراز هویت شماست.

{
  "token": "TOKEN_VALUE"
}

اولین گام در استفاده از توابع API متن‌کاوی احراز هویت است. احراز هویت به وسیله توکن‌های JWT در درخواست http انجام می‌شود. برای شروع باید یک کلید API دریافت کنید. سپس برای دریافت توکن تابع زیر را فراخوانی کنید

GET https://api.text-mining.ir/api/Token/GetToken?apikey=YOUR_API_KEY

بعد از دریافت خروجی که یک JWT Token است باید برای احراز هویت (Authentication & Authorization) برای استفاده از هر یک از توابع وب سرویس در Header مربوط به Http Request خود برای آن تابع مقدار توکن دریافتی را وارد کنید. کدهای نمونه فراخوانی توابع وب سرویس این مورد را به شما نمایش می‌دهند

پیش پردازش متون

استانداردسازی متن ورودی

این تابع، متن ورودی را با یکسان‌سازی حروف عربی و فارسی ، اصلاح نیم‌فاصله‌‌ها و فاصله‌ها، تبدیل به متن استاندارد می‌کند. در این تابع بیشتر از ۹۰۰ جایگزینی کاراکتر بر روی متن ووردی انجام می‌شود


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string inputText = "ولــے اگــر دڪــمــه مــڪــث رو لــمــس ڪــنــیــم ڪــلــا مــتــن چــنــدیــن صــفــحــه جــابــه جــا مــیــشــه و دیــگــه نــمــیــشــه فــهمــیــد ڪــدوم آیــه تــلــاوت مــی شود بــایــد چــے ڪــنــیــم؟.";
string json = JsonConvert.SerializeObject(new
    {
        Text = inputText,
        RefineQuotationPunc = false,
        RefineSeparatedAffix = true
    });
var response = client.PostAsync(_baseAddress + "PreProcessing/NormalizePersianWord", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(resp);


######################## Call Normalizer ############################

baseUrl = "http://api.text-mining.ir/api/"
url =  baseUrl + "PreProcessing/NormalizePersianWord"
payload = u"{\"text\":\"ولــے اگــر دڪــمــه مــڪــث رو لــمــس ڪــنــیــم ڪــلــا مــتــن چــنــدیــن صــفــحــه جــابــه جــا مــیــشــه و دیــگــه نــمــیــشــه فــهمــیــد ڪــدوم آیــه تــلــاوت مــی شود بــایــد چــے ڪــنــیــم؟.\", \"refineSeparatedAffix\":true}"
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\"ولــے اگــر دڪــمــه مــڪــث رو لــمــس ڪــنــیــم ڪــلــا مــتــن چــنــدیــن صــفــحــه جــابــه جــا مــیــشــه و دیــگــه نــمــیــشــه فــهمــیــد ڪــدوم آیــه تــلــاوت مــی شود بــایــد چــے ڪــنــیــم؟.\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/PreProcessing/NormalizePersianWord")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/PreProcessing/NormalizePersianWord');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:"ولــے اگــر دڪــمــه مــڪــث رو لــمــس ڪــنــیــم ڪــلــا مــتــن چــنــدیــن صــفــحــه جــابــه جــا مــیــشــه و دیــگــه نــمــیــشــه فــهمــیــد ڪــدوم آیــه تــلــاوت مــی شود بــایــد چــے ڪــنــیــم؟."
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: ولی اگر دکمه مکث رو لمس کنیم کلا متن چندین صفحه جابه جا میشه و دیگه نمیشه فهمید کدوم آیه تلاوت می‌شود باید چی کنیم؟.

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/PreProcessing/NormalizePersianWord

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
text متن ورودی
replaceWildChar true آیا کاراکترها و علائم خاص با نسخه استاندارد آن جایگزین شوند
replaceDigit true آیا ارقام (اعداد) عربی و انگلیسی با ارقام استاندارد فارسی جایگزین شوند
refineSeparatedAffix true آیا نیم فاصله بین پسوند و پیشوند کلمات اصلاح شود
refineQuotationPunc true آیا فاصله گذاری استاندارد بین علائم و عبارت نقل قول اعمال شود

شناسایی مرز جملات ساده

در این تابع شناسایی مرز جملات ساده/مرکب آن انجام می‌شود


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string inputText = "من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم. سپس به دانشگاه راه یافتیم";
string json = JsonConvert.SerializeObject(new
    {
        Text = inputText,
        Normalize = true,       // نرمالسازی نیز انجام شود
        NormalizerParams = new  // تنظیم پارامترهای نرمالسازی متن (اختیاری)
        {
            Text = "required but don't care :)",
            RefineQuotationPunc = false
        },
        CheckSlang = true,  // عملیات تبدیل متن محاوره‌ای به رسمی نیز انجام شود
        ComplexSentence = true  // جملات مرکب (غیرتودرتو) نیز جدا شوند
    });
var response = client.PostAsync(baseAddress + "PreProcessing/SentenceSplitter", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
var result = JsonConvert.DeserializeObject<List<string>>(resp);
Console.WriteLine(resp);


##################### Call Sentence Splitter ########################
url =  baseUrl + "PreProcessing/SentenceSplitter"
payload = u'''{\"text\": \"من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم. سپس به دانشگاه راه یافتیم\",
    \"checkSlang\": true,
    \"normalize\": true,
    \"normalizerParams\": {
        \"text\": \"don't care\",
        \"RefineQuotationPunc \": false
    },
    \"complexSentence\": true
}'''
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\"من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم. سپس به دانشگاه راه یافتیم\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/PreProcessing/SentenceSplitter")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/PreProcessing/SentenceSplitter');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:"من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم. سپس به دانشگاه راه یافتیم"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: [“من با دوستم به مدرسه می‌رفتیم”,“و در آنجا مشغول به تحصیل بودیم .”,“سپس به دانشگاه راه یافتیم”]

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/PreProcessing/SentenceSplitter

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
text متن ورودی
checkSlang true آیا تبدیل محاوره ای به رسمی انجام شود
normalize true آیا نرمالسازی متن نیز انجام شود
normalizerParams پارامترهای نرمالسازی متن ورودی
complexSentence true آیا بخشهای جملات مرکب غیرتودرتو نیز جدا شوند

شناسایی مرز جملات و جداسازی کلمات

در این تابع شناسایی مرز جملات ساده/مرکب و جداسازی کلمات (توکن‌ها) آن انجام می‌شود


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string inputText = "من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم. سپس به دانشگاه راه یافتیم";
string json = JsonConvert.SerializeObject(new
    {
        Text = inputText,
        Normalize = true,       // نرمالسازی نیز انجام شود
        NormalizerParams = new  // تنظیم پارامترهای نرمالسازی متن (اختیاری)
        {
            Text = "required but don't care :)",
            RefineQuotationPunc = false
        },
        CheckSlang = true,  // عملیات تبدیل متن محاوره‌ای به رسمی نیز انجام شود
        ComplexSentence = true  // جملات مرکب (غیرتودرتو) نیز جدا شوند
    });
var response = client.PostAsync(baseAddress + "PreProcessing/SentenceSplitterAndTokenize", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
var result = JsonConvert.DeserializeObject<List<List<string>>>(resp);
Console.WriteLine(resp);


############# Call Sentence Splitter and Tokenizer #################
url =  baseUrl + "PreProcessing/SentenceSplitterAndTokenize"
payload = u'''{\"text\": \"من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم. سپس به دانشگاه راه یافتیم\",
    \"checkSlang\": true,
    \"normalize\": true,
    \"normalizerParams\": {
        \"text\": \"don't care\",
        \"replaceWildChar\": true,
        \"replaceDigit\": true,
        \"refineSeparatedAffix\": true,
        \"refineQuotationPunc\": false
    },
    \"complexSentence\": true
}'''
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\"من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم. سپس به دانشگاه راه یافتیم\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/PreProcessing/SentenceSplitterAndTokenize")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/PreProcessing/SentenceSplitterAndTokenize');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:"من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم. سپس به دانشگاه راه یافتیم"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: [[“من”,“با”,“دوستم”,“به”,“مدرسه”,“می‌رفتیم”],[“و”,“در”,“آنجا”,“مشغول”,“به”,“تحصیل”,“بودیم”,"."],[“سپس”,“به”,“دانشگاه”,“راه”,“یافتیم”]]

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/PreProcessing/SentenceSplitterAndTokenize

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
text متن ورودی
checkSlang true آیا تبدیل محاوره ای به رسمی انجام شود
normalize true آیا نرمالسازی متن نیز انجام شود
normalizerParams پارامترهای نرمالسازی متن ورودی
complexSentence true آیا بخشهای جملات مرکب غیرتودرتو نیز جدا شوند

جداسازی توکن‌های متن

در این تابع شناسایی مرز جملات ساده/مرکب آن انجام می‌شود


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string inputText = "من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم... سپس به دانشگاه راه یافتیم";
string json = JsonConvert.SerializeObject(inputText);
var response = client.PostAsync(baseAddress + "PreProcessing/Tokenize", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
var result = JsonConvert.DeserializeObject<List<string>>(resp);
Console.WriteLine(resp);


######################## Call Tokenizer ############################

url =  baseUrl + "PreProcessing/Tokenize"
payload = u"\"من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم. سپس به دانشگاه راه یافتیم\""
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\tinputText:\"من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم. سپس به دانشگاه راه یافتیم\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/PreProcessing/Tokenize")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/PreProcessing/Tokenize');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	inputText:"من با دوستم به مدرسه می رفتیم و در آنجا مشغول به تحصیل بودیم. سپس به دانشگاه راه یافتیم"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: [“من”,“با”,“دوستم”,“به”,“مدرسه”,“می”,“رفتیم”,“و”,“در”,“آنجا”,“مشغول”,“به”,“تحصیل”,“بودیم”,"…",“سپس”,“به”,“دانشگاه”,“راه”,“یافتیم”]

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/PreProcessing/Tokenize

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
inputText متن ورودی

بهبود متون

پیشنهاد کلمات صحیح با توجه به زمینه

این تابع اشتباهات تایپی/املایی متن ورودی با توجه به محتوای جمله اصلاح میکند


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string inputText = @"ستر حیوانی است که در صحرا با مقدار کم آب زندگی میکند";
string json = JsonConvert.SerializeObject(new
{
    Text = inputText,
    Normalize = true,
    CandidateCount = 3
});
var response = client.PostAsync(baseAddress + "TextRefinement/SpellCorrectorInContext", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(resp);


rl =  baseUrl + "TextRefinement/SpellCorrectorInContext"
payload = u'''{\"text\": \"ستر حیوانی است که در صحرا با مقدار کم آب زندگی میکند\",
            \"normalize\": true,
            \"candidateCount\": 3}'''
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\"ستر حیوانی است که در صحرا با مقدار کم آب زندگی میکند\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/TextRefinement/SpellCorrectorInContext")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/TextRefinement/SpellCorrectorInContext');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:"ستر حیوانی است که در صحرا با مقدار کم آب زندگی میکند"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: {شتر,سطر,سفر} {حیوانی,حیوان,یونانی} {است,دست,هست} که در {صحرا,صفرا,صدرا} با {مقدار,مدار,مقدر} کم آب {زندگی,بندگی,زدگی} {می‌کند,می‌کند,مکند}

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/TextRefinement/SpellCorrectorInContext

مدل دریافتی به عنوان پارامتر

عنوان توضیح پارامتر
CandidateCount تعداد کلمات کاندید برای جایگزین کردن با کلمه ناآشنای درون متن
Normalize آیا نرمالسازی متن نیز انجام شود
Text متن ورودی

اصلاح اشتباهات تایپی

این تابع وب سرویس، اشتباهات تایپی را بر اساس لیست کلمات خود اصلاح می‌کند و کلمه درست را برمی‌گرداند. این تابع مانند همه توابع دیگر نیاز به توکن JWT برای احراز هویت دارد


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string inputText = @"فهوه با مبات میجسبد";
string json = JsonConvert.SerializeObject(new
{
    Text = inputText,
    Normalize = true,
    CandidateCount = 3
});
var response = client.PostAsync(baseAddress + "TextRefinement/SpellCorrector", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(resp);


########################## Call SpellCorrector ##########################
url =  baseUrl + "TextRefinement/SpellCorrector"
payload = u'''{\"text\": \"فهوه با مبات میجسبد\",
            \"checkSlang\": true,
            \"normalize\": true,
            \"candidateCount\": 2}'''
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\"فهوه با مبات میجسبد\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/TextRefinement/SpellCorrector")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/TextRefinement/SpellCorrector');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:"فهوه با مبات میجسبد"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: قهوه با {نبات,ملات,مباد} {می‌چسبد,می‌جنبد}

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/TextRefinement/SpellCorrectors

مدل دریافتی به عنوان پارامتر

عنوان توضیح پارامتر
inputText متن ورودی که حاوی کلمات اشتباه است و بر اساس لیست کلمات صحیح، در خروجی بازگردانده می‌شود

تبدیل محاوره به رسمی

کلمات محاوره‌ای درون متن به شکل (معادل) رسمی آنها تبدیل می‌شود


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string inputText = @"اگه اون گزینه رو کلیک کنین، یه پنجره باز میشه که میتونین رمز عبورتون رو اونجا تغییر بدین
    داشتم مي رفتم برم، ديدم گرفت نشست، گفتم بذار بپرسم ببينم مياد نمياد ديدم ميگه نميخوام بيام بذار برم بگيرم بخوابم نمیتونم بشینم.
    کتابای خودتونه
    نمیدونم چی بگم که دیگه اونجا نره
    ساعت چن میتونین بیایین؟";
string json = JsonConvert.SerializeObject(inputText);
var response = client.PostAsync(baseAddress + "TextRefinement/FormalConverter", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(resp);


################ Call Slang to Formal Converter ##################
url =  baseUrl + "TextRefinement/FormalConverter"
payload = u'''"اگه اون گزینه رو کلیک کنین، یه پنجره باز میشه که میتونین رمز عبورتون رو اونجا تغییر بدین
    داشتم مي رفتم برم، ديدم گرفت نشست، گفتم بذار بپرسم ببينم مياد نمياد ديدم ميگه نميخوام بيام بذار برم بگيرم بخوابم نمیتونم بشینم.
    کتابای خودتونه
    نمیدونم چی بگم که دیگه اونجا نره
    ساعت چن میتونین بیایین؟"'''
print(callApi(url, payload, tokenKey))

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\n\t\"اگه اون گزینه رو کلیک کنین، یه پنجره باز میشه که میتونین رمز عبورتون رو اونجا تغییر بدین داشتم مي رفتم برم، ديدم گرفت نشست، گفتم بذار بپرسم ببينم مياد نمياد ديدم ميگه نميخوام بيام بذار برم بگيرم بخوابم نمیتونم بشینم.  کتابای خودتونه  نمیدونم چی بگم که دیگه اونجا نره ساعت چن میتونین بیایین؟\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/TextRefinement/FormalConverter")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/TextRefinement/FormalConverter');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:
	"اگه اون گزینه رو کلیک کنین، یه پنجره باز میشه که میتونین رمز عبورتون رو اونجا تغییر بدین داشتم مي رفتم برم، ديدم گرفت نشست، گفتم بذار بپرسم ببينم مياد نمياد ديدم ميگه نميخوام بيام بذار برم بگيرم بخوابم نمیتونم بشینم.  کتابای خودتونه  نمیدونم چی بگم که دیگه اونجا نره ساعت چن میتونین بیایین؟"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: اگر آن گزینه را کلیک کنید، یک پنجره باز می‌شود که می‌توانید رمز عبورتان را آنجا تغییر بدهید داشتم می‌رفتم بروم، دیدم گرفت نشست، گفتم بگذار بپرسم ببینم می‌آید نمی‌آید دیدم می‌گوید نمی‌خواهم بیایم بگذار بروم بگیرم بخوابم نمی‌توانم بنشینم. کتاب‌های خودتان است نمی‌دانم چه بگویم که دیگر آنجا نرود ساعت چند می‌توانید بیایید؟

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/TextRefinement/FormalConverter

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
inputText متن ورودی

تشخیص کلمات رکیک و ناسزا

این تابع کلمات زشت/ناسزا (در دو سطح از اهانت) را تشخیص و تعیین میکند


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string inputText = "خـــــــرررررهای دیووووونههه  -   صکس  س.ک.س ی  \r\n بیپدرومادر";
string json = JsonConvert.SerializeObject(inputText);
var response = client.PostAsync(baseAddress + "TextRefinement/SwearWordTagger", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
var result = JsonConvert.DeserializeObject<Dictionary<string, string>>(resp);
Console.WriteLine(resp);


################## Call Swear Word Detector ######################
url =  baseUrl + "TextRefinement/SwearWordTagger"
payload = u'"خـــــــرررررهای دیووووونههه  -   صکس  س.ک.س ی  \r\n بیپدرومادر"'
result = json.loads(callApi(url, payload, tokenKey))
## for item in result: ...
print(result)


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\"خـــــــرررررهای دیووووونههه  -   صکس  س.ک.س ی  \\r\\n بیپدرومادر\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/TextRefinement/SwearWordTagger")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/TextRefinement/SwearWordTagger');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:"خـــــــرررررهای دیووووونههه  -   صکس  س.ک.س ی  \\r\\n بیپدرومادر"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: {“خرررررهای”:“MildSwearWord”,“دیووووونههه”:“MildSwearWord”,“صکس”:“StrongSwearWord”,“س.ک.س”:“StrongSwearWord”,“بیپدرومادر”:“StrongSwearWord”}

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/TextRefinement/SwearWordTagger

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
inputText متن ورودی

زبان متون

شناسایی نوع زبان

این تابع حدود ۶۰ نوع زبان را برای متن ورودی شناسایی کند https://iso639-3.sil.org/code_tables/639/data/all


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject("شام ییبسن یا یوخ. سن سیز بوغازیمنان گتمیر شام. به به نه قشه یردی. ساغ اول سیز نئجه سیز. نئجه سن؟ اوشاقلار نئجه دیر؟ سلام لاری وار سیزین کی لر نئجه دیر. یاخچی");
var response = client.PostAsync(baseAddress + "LanguageDetection/Predict", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(resp);


##################### Call Language Detection #######################
url =  baseUrl + "LanguageDetection/Predict"
payload = u'"شام ییبسن یا یوخ. سن سیز بوغازیمنان گتمیر شام. به به نه قشه یردی. ساغ اول سیز نئجه سیز. نئجه سن؟ اوشاقلار نئجه دیر؟ سلام لاری وار سیزین کی لر نئجه دیر. یاخچی"'
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\"شام ییبسن یا یوخ. سن سیز بوغازیمنان گتمیر شام. به به نه قشه یردی. ساغ اول سیز نئجه سیز. نئجه سن؟ اوشاقلار نئجه دیر؟ سلام لاری وار سیزین کی لر نئجه دیر. یاخچی\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/LanguageDetection/Predict")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/LanguageDetection/Predict');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:"شام ییبسن یا یوخ. سن سیز بوغازیمنان گتمیر شام. به به نه قشه یردی. ساغ اول سیز نئجه سیز. نئجه سن؟ اوشاقلار نئجه دیر؟ سلام لاری وار سیزین کی لر نئجه دیر. یاخچی"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: azb

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/LanguageDetection/Predict

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
inputText متن ورودی

موجودیت‌های نامدار متون

شناسایی موجودیت‌های نامدار متن

لیست عبارات بهمراه برچسب نوع موجودیت. این برچسب یکی از موارد زیر می‌باشد:


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string inputText = "احمد عباسی به تحصیلات خود در دانشگاه آزاد اسلامی در مشهد ادامه داد";
var response = client.PostAsync(baseAddress + "NamedEntityRecognition/Detect",
                    new StringContent(JsonConvert.SerializeObject(inputText), Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;

// parse and generate result:
JArray tokens = JArray.Parse(resp);
var result = new StringBuilder();
foreach (JObject token in tokens.Children<JObject>())
    result.AppendLine($"{{{token["word"]},{token["tags"]["NER"]["item1"]}}}");
Console.WriteLine(result.ToString());


############################ Call NER ###############################
url =  baseUrl + "NamedEntityRecognition/Detect"
payload = u'"احمد عباسی به تحصیلات خود در دانشگاه آزاد اسلامی در مشهد ادامه داد"'
result = json.loads(callApi(url, payload, tokenKey))
for phrase in result:
    print("("+phrase['word']+","+phrase['tags']['NER']['item1']+") ")


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\tinputText:\"احمد عباسی به تحصیلات خود در دانشگاه آزاد اسلامی در مشهد ادامه داد\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/NamedEntityRecognition/Detect")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/NamedEntityRecognition/Detect');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	inputText:"احمد عباسی به تحصیلات خود در دانشگاه آزاد اسلامی در مشهد ادامه داد"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: {احمد,B-PER} {عباسی,I-PER} {به,O} {تحصیلات,O} {خود,O} {در,O} {دانشگاه,B-ORG} {آزاد,I-ORG} {اسلامی,I-ORG} {در,O} {مشهد,I-LOC} {ادامه,O} {داد,O}

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/NamedEntityRecognition/Detect

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
inputText متن ورودی

نقش کلمات متون

تعیین برچسب نقش ادات سخن

این تابع عملیات برچسب زنی نقش (اسم، ضمیر، صفت، قید، فعل، …) کلمات در جمله را انجام می دهد.


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string inputText = "احمد و علی به مدرسه پایین خیابان می رفتند.";
var response = client.PostAsync(baseAddress + "PosTagger/GetPos",
                    new StringContent(JsonConvert.SerializeObject(inputText), Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;

// parse and generate result:
JArray tokens = JArray.Parse(resp);
var result = new StringBuilder();
foreach (JObject token in tokens.Children<JObject>())
    result.AppendLine($"{{{token["word"]},{token["tags"]["POS"]["item1"]}}}");
Console.WriteLine(result.ToString());


######################## Call POS-Tagger ############################
url =  baseUrl + "PosTagger/GetPos"
payload = u'"احمد و علی به مدرسه پایین خیابان می رفتند"'
result = json.loads(callApi(url, payload, tokenKey))
for phrase in result:
    print("("+phrase['word']+","+phrase['tags']['POS']['item1']+") ")


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\"احمد و علی به مدرسه پایین خیابان می رفتند\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/NamedEntityRecognition/Detect")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/NamedEntityRecognition/Detect');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:"احمد و علی به مدرسه پایین خیابان می رفتند"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: {احمد,N} {و,CON} {علی,N} {به,P} {مدرسه,N} {پایین,ADJ} {خیابان,N} {می‌رفتند,V} {.,DELM}

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/PosTagger/GetPos

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
text متن ورودی

ریشه‌یابی متون

ریشه‌یابی عبارات

از این تابع برای ریشه‌یابی عبارات استفاده می‌شود. به عنوان مثال، خروجی متن کد نمونه به شکل زیر است

[ { "wordComment": "", "simplePos": "", "rootWords": ["دریانورد", "دریا"], "verbInformation": null, "sentenceNumber": 0, "wordNumberInSentence": 0, "startCharIndex": 0, "word": "دریانوردانی", "tags": null, "firstRoot": "دریانورد", "wordCount": 1, "length": 11, "isVerb": false, "isPunc": false }, { "wordComment": "", "simplePos": "", "rootWords": ["فرشته"], "verbInformation": null, "sentenceNumber": 0, "wordNumberInSentence": 0, "startCharIndex": 0, "word": "فرشتگان", "tags": null, "firstRoot": "فرشته", "wordCount": 1, "length": 7, "isVerb": false, "isPunc": false } ]


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject(new
{
    Phrases = new[]
    {
        new { Word = "دریانوردانی" },
        new { Word = "فرشتگان" }
    },
    CheckSlang = false
});

var response = client.PostAsync(baseAddress + "Stemmer/LemmatizePhrase2Phrase", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(resp);


url =  baseUrl + "Stemmer/LemmatizePhrase2Phrase"
payload = u'{"phrases": [{ "word": "دریانوردانی" }, { "word": "فرشتگان" }], "checkSlang": false}'
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"phrases\": [{ \"word\": \"دریانوردانی\" }, { \"word\": \"فرشتگان\" }], \"checkSlang\": false}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/Stemmer/LemmatizePhrase2Phrase")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/Stemmer/LemmatizePhrase2Phrase');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{"phrases": [{ "word": "دریانوردانی" }, { "word": "فرشتگان" }], "checkSlang": false}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/Stemmer/LemmatizePhrase2Phrase

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
CheckSlang آیا در حین ریشه یابی کلمات محاوره‌ای تحلیل و به شکل رسمی تبدیل شوند
ComplexSentence آیا بخش‌های جملات مرکب غیرتودرتو جداسازی شوند
Phrases ورودی به شکل لیست عبارات
Text ورودی به شکل متن

ریشه یابی متن

برای نمایش ریشه افعال شکل گذشته ساده درنظر گرفته میشود و سایر اطلاعات صرفی فعل در متغیر ذیل وجود دارد:

خروجی کد نمونه به شرح زیر است:

‍‍‍‍‍{دانشجویان,[دانشجو,دانش,دان]} {زیادی,[زیاد]} {به,[به]} {مدارس,[مدرسه]} {استعدادهای,[استعداد]} {درخشان,[درخشان]} {راه,[راه]} {پیدا,[پیدا]} {نخواهند کرد,[نکرد]} {که,[که]} {با,[با]} {مشکلات,[مشکل]} {بعدی,[بعد]} {مواجه,[مواجه]} {شوند,[شد]} {.,[]}


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject(new
{
Text = "دانشجویان زیادی به مدارس استعدادهای درخشان راه پیدا نخواهند کرد که با مشکلات بعدی مواجه شوند.",
CheckSlang = false, // بررسی و تبدیل کلمات محاوره ای به شکل رسمی انجام نشود
ComplexSentence = false // شکستن جملات مرکب به چند جمله
});
var response = client.PostAsync(baseAddress + "Stemmer/LemmatizeText2Phrase", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
JArray tokens = JArray.Parse(resp);
var result = new StringBuilder();
foreach (JObject token in tokens.Children<JObject>())
{
result.Append(\$"{{{token["word"]},[");
foreach (var root in token["rootWords"].Children<JValue>())
result.Append(root.Value<string>()).Append(',');
if (result[result.Length - 1].Equals(','))
result.Remove(result.Length - 1, 1);
result.AppendLine("]}");
}
Console.WriteLine(result.ToString());


url =  baseUrl + "Stemmer/LemmatizeText2Phrase"
payload = u'{"text": "دانشجویان زیادی به مدارس استعدادهای درخشان راه پیدا نخواهند کرد که با مشکلات بعدی مواجه شوند.", "checkSlang": false}'
result = json.loads(callApi(url, payload, tokenKey))
for phrase in result:
    print("("+phrase['word']+":"+phrase['firstRoot']+") ")


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"text\": \"دانشجویان زیادی به مدارس استعدادهای درخشان راه پیدا نخواهند کرد که با مشکلات بعدی مواجه شوند.\", \"checkSlang\": false}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/Stemmer/LemmatizeText2Phrase")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/Stemmer/LemmatizeText2Phrase');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{"text": "دانشجویان زیادی به مدارس استعدادهای درخشان راه پیدا نخواهند کرد که با مشکلات بعدی مواجه شوند.", "checkSlang": false}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/Stemmer/LemmatizeText2Phrase

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
CheckSlang آیا در حین ریشه یابی کلمات محاوره‌ای تحلیل و به شکل رسمی تبدیل شوند
ComplexSentence آیا بخش‌های جملات مرکب غیرتودرتو جداسازی شوند
Phrases ورودی به شکل لیست عبارات
Text ورودی به شکل متن

ریشه‌یابی یک متن

متن بهمراه کلمات ریشه (افعال به سوم شخص گذشته ساده تبدیل میشوند)


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject("دانشجویان زیادی به مدارس استعدادهای درخشان راه پیدا نخواهند کرد که با مشکلات بعدی مواجه شوند.");
var response = client.PostAsync(baseAddress + "Stemmer/LemmatizeText2Text", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(resp);


########################## Call Stemmer ##########################
url =  baseUrl + "Stemmer/LemmatizeText2Text"
payload = u'"دانشجویان زیادی به مدارس استعدادهای درخشان راه پیدا نخواهند کرد که با مشکلات بعدی مواجه شوند."'
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\"دانشجویان زیادی به مدارس استعدادهای درخشان راه پیدا نخواهند کرد که با مشکلات بعدی مواجه شوند.\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/Stemmer/LemmatizeText2Text")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/Stemmer/LemmatizeText2Text');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:"دانشجویان زیادی به مدارس استعدادهای درخشان راه پیدا نخواهند کرد که با مشکلات بعدی مواجه شوند."
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

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

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/Stemmer/LemmatizeText2Text

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
inputText ورودی به شکل متن

ریشه‌یابی لیست کلمات ورودی

لیستی از کلمات ورودی را ریشه‌یابی می‌کند.

خروجی کد نمونه به شرح زیر است:

[ { "wordComment":"مشاجرات", "simplePos":"", "rootWords":[ "مشاجرات", "مشاجره" ], "verbInformation":null, "sentenceNumber":1, "wordNumberInSentence":0, "startCharIndex":0, "word":"مشاجرات", "tags":{ }, "firstRoot":"مشاجرات", "wordCount":1, "length":7, "isVerb":false, "isPunc":false }, { "wordComment":"دریانوردانی", "simplePos":"", "rootWords":[ "دریانورد", "دریا" ], "verbInformation":null, "sentenceNumber":1, "wordNumberInSentence":1, "startCharIndex":8, "word":"دریانوردانی", "tags":{ }, "firstRoot":"دریانورد", "wordCount":1, "length":11, "isVerb":false, "isPunc":false }, { "wordComment":"جزایر", "simplePos":"", "rootWords":[ "جزیره" ], "verbInformation":null, "sentenceNumber":1, "wordNumberInSentence":2, "startCharIndex":20, "word":"جزایر", "tags":{ }, "firstRoot":"جزیره", "wordCount":1, "length":5, "isVerb":false, "isPunc":false }, { "wordComment":"فرشتگان", "simplePos":"", "rootWords":[ "فرشته" ], "verbInformation":null, "sentenceNumber":1, "wordNumberInSentence":3, "startCharIndex":26, "word":"فرشتگان", "tags":{ }, "firstRoot":"فرشته", "wordCount":1, "length":7, "isVerb":false, "isPunc":false }, { "wordComment":"تنها", "simplePos":"", "rootWords":[ "تنها" ], "verbInformation":null, "sentenceNumber":1, "wordNumberInSentence":4, "startCharIndex":34, "word":"تنها", "tags":{ }, "firstRoot":"تنها", "wordCount":1, "length":4, "isVerb":false, "isPunc":false } ]


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject(new[] { "مشاجرات", "دریانوردانی", "جزایر", "فرشتگان", "تنها" });
var response = client.PostAsync(baseAddress + "Stemmer/LemmatizeWords2Phrase", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(resp);


url =  baseUrl + "Stemmer/LemmatizeWords2Phrase"
payload = u'["دریانوردانی", "جزایر", "فرشتگان", "تنها"]'
result = json.loads(callApi(url, payload, tokenKey))
for phrase in result:
    print("("+phrase['word']+":"+phrase['firstRoot']+") ")


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "[\"دریانوردانی\", \"جزایر\", \"فرشتگان\", \"تنها\"]");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/Stemmer/LemmatizeWords2Phrase")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/Stemmer/LemmatizeWords2Phrase');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('["دریانوردانی", "جزایر", "فرشتگان", "تنها"]');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/Stemmer/LemmatizeWords2Phrase

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
words آرایه‌ای از کلمات در قالب رشته

شباهت متون

استخراج مترادف‌ها

این تابع کلمات هم‌معنی (معادل مفهومی) با کلمه ورودی در فرهنگ لغت‌های مختلف را برمی‌گرداند


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject("احسان");
var response = client.PostAsync(baseAddress + "TextSimilarity/ExtractSynonyms", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
var result = JsonConvert.DeserializeObject<string[]>(resp);
Console.WriteLine(resp);


###################### Call Text Similarity #########################
url =  baseUrl + "TextSimilarity/ExtractSynonyms"
payload = u"\"احسان\""
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\"احسان\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/TextSimilarity/ExtractSynonyms")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/TextSimilarity/ExtractSynonyms');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:"احسان"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: [“احسان”,“نیکی کردن”,“نیکوکاری”, “بخشش”,“نیکی”,“خوبی”,“نیکویی”,“انعام”, “نکویی”,“اکرام”,“صنع”,“فضل”,“لطف”, “منت”,“نزل”,“نعمت”,“نیکی_کردن”, “احسان (نام)”,“احسان_(نام)"]

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/TextSimilarity/ExtractSynonyms

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
word کلمه ورودی در قالب رشته

محاسبه فاصله (کاراکتری) کلمات

این تابع میزان فاصله براساس کارکترهای مشابه را محاسبه میکند دقت شود که شباهت با فاصله رابطه عکس دارد

Similarity = 1 - Distance

نحوه محاسبه بر اساس موارد زیر است


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject(new
{
    String1 = "ایرانی ها",
    String2 = "ایرانیان",
    DistanceFunc = 2         // JaccardDistance
});
var response = client.PostAsync(baseAddress + "TextSimilarity/GetSyntacticDistance", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
double similarity = 1.0 - double.Parse(resp);
Console.WriteLine(resp);


###################### Call Text Similarity #########################

url =  baseUrl + "TextSimilarity/GetSyntacticDistance"
payload = u'{"string1": "ایرانی ها", "string2": "ایرانیان", "distanceFunc": 2}'  # JaccardDistance
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"string1\": \"ایرانی ها\", \"string2\": \"ایرانیان\", \"distanceFunc\": 2}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/TextSimilarity/GetSyntacticDistance")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/TextSimilarity/GetSyntacticDistance');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{"string1": "ایرانی ها", "string2": "ایرانیان", "distanceFunc": 2}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: 0.333333343

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/TextSimilarity/GetSyntacticDistance

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
DistanceFunc نحوه محاسبه شباهت (کاراکتری) دو رشته
inDistThreshold حداقل فاصله دو کلمه برای انطباق (یکسان فرض نمودن) آنها
String1 کلمه یا رشته ورودی اول
String2 کلمه یا رشته ورودی دوم

محاسبه شباهت براساس کلمات مشابه

این تابع میزان شباهت را برمی‌گرداند


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject(new
{
    String1 = "حمله مغولها به ایران",
    String2 = "حملات مغولان به ایران",
    DistanceFunc = 2             // JaccardDistance
});
var response = client.PostAsync(baseAddress + "TextSimilarity/SentenceSimilarityBipartiteMatching", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
double distance = 1.0 - double.Parse(resp);
Console.WriteLine(resp);


url =  baseUrl + "TextSimilarity/SentenceSimilarityBipartiteMatching"
payload = u'''{
    "string1": "حمله مغولها به ایران",
    "string2": "حملات مغولان به ایران",
    "distanceFunc": 2}'''  # JaccardDistance
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"string1\": \"حمله مغولها به ایران\", \n    \"string2\": \"حملات مغولان به ایران\", \n    \"distanceFunc\": 2}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityBipartiteMatching")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityBipartiteMatching');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
    "string1": "حمله مغولها به ایران",
    "string2": "حملات مغولان به ایران",
    "distanceFunc": 2}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: 0.80357146263122559

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityBipartiteMatching

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
DistanceFunc نحوه محاسبه شباهت (کاراکتری) دو رشته
inDistThreshold حداقل فاصله دو کلمه برای انطباق (یکسان فرض نمودن) آنها
String1 کلمه یا رشته ورودی اول
String2 کلمه یا رشته ورودی دوم

محاسبه شباهت براساس اشتراک کلمات

این تابع میزان شباهت را برمی‌گرداند


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject(new
{
    String1 = "حمله مغولها به ایران",
    String2 = "حملات مغولان به ایران",
    DistanceFunc = 2,             // JaccardDistance
    MinDistThreshold = 0.3        //حداقل فاصله دو کلمه برای انطباق (یکسان فرض نمودن) آنها
});
var response = client.PostAsync(baseAddress + "TextSimilarity/SentenceSimilarityWithIntersectionMatching", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
double distance = 1.0 - double.Parse(resp);
Console.WriteLine(resp);


url =  baseUrl + "TextSimilarity/SentenceSimilarityWithIntersectionMatching"
payload = u'''{
    "string1": "حمله مغولها به ایران",
    "string2": "حملات مغولان به ایران",
    "distanceFunc": 2,
    "minDistThreshold": 0.3}'''  # حداقل فاصله دو کلمه برای انطباق (یکسان فرض نمودن) آنها
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"string1\": \"حمله مغولها به ایران\", \n    \"string2\": \"حملات مغولان به ایران\", \n    \"distanceFunc\": 2,\n    \"minDistThreshold\": 0.3}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityWithIntersectionMatching")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityWithIntersectionMatching');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
    "string1": "حمله مغولها به ایران",
    "string2": "حملات مغولان به ایران",
    "distanceFunc": 2,
    "minDistThreshold": 0.3}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: 0.75

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityWithIntersectionMatching

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
DistanceFunc نحوه محاسبه شباهت (کاراکتری) دو رشته
inDistThreshold حداقل فاصله دو کلمه برای انطباق (یکسان فرض نمودن) آنها
String1 کلمه یا رشته ورودی اول
String2 کلمه یا رشته ورودی دوم

محاسبه شباهت دو جمله

این تابع میزان شباهت را برمی‌گرداند و همچنین این تابع دارای سرعت (کارایی) بالا و مناسب برای حجم بالای متون است


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject(new
{
    String1 = "حمله مغولها به ایران",
    String2 = "حملات مغولان به ایران"
});
var response = client.PostAsync(baseAddress + "TextSimilarity/SentenceSimilarityWithNearDuplicateDetector", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
double distance = 1.0 - double.Parse(resp);
Console.WriteLine(resp);


url =  baseUrl + "TextSimilarity/SentenceSimilarityWithNearDuplicateDetector"
payload = u'''{
    "string1": "حمله مغولها به ایران",
    "string2": "حملات مغولان به ایران"}'''
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"string1\": \"حمله مغولها به ایران\", \n    \"string2\": \"حملات مغولان به ایران\"}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityWithNearDuplicateDetector")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityWithNearDuplicateDetector');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
    "string1": "حمله مغولها به ایران",
    "string2": "حملات مغولان به ایران"}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: 0.5

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityWithNearDuplicateDetector

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
DistanceFunc نحوه محاسبه شباهت (کاراکتری) دو رشته
inDistThreshold حداقل فاصله دو کلمه برای انطباق (یکسان فرض نمودن) آنها
String1 کلمه یا رشته ورودی اول
String2 کلمه یا رشته ورودی دوم

محاسبه شباهت براساس تعداد کلمات مشابه پشت سرهم

این تابع میزان شباهت را برمی‌گرداند


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject(new
{
    String1 = "حمله مغولها به ایران",
    String2 = "حملات مغولان به ایران",
    DistanceFunc = 2,             // JaccardDistance
    MinDistThreshold = 0.3        //حداقل فاصله دو کلمه برای انطباق (یکسان فرض نمودن) آنها
});
var response = client.PostAsync(baseAddress + "TextSimilarity/SentenceSimilarityWithNGramMatching", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
double distance = 1.0 - double.Parse(resp);
Console.WriteLine(resp);


url =  baseUrl + "TextSimilarity/SentenceSimilarityWithNGramMatching"
payload = u'''{
    "string1": "حمله مغولها به ایران",
    "string2": "حملات مغولان به ایران",
    "distanceFunc": 2,
    "minDistThreshold": 0.3}'''  # حداقل فاصله دو کلمه برای انطباق (یکسان فرض نمودن) آنها
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"string1\": \"حمله مغولها به ایران\", \n    \"string2\": \"حملات مغولان به ایران\", \n    \"distanceFunc\": 2,\n    \"minDistThreshold\": 0.3}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityWithNGramMatching")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityWithNGramMatching');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
    "string1": "حمله مغولها به ایران",
    "string2": "حملات مغولان به ایران",
    "distanceFunc": 2,
    "minDistThreshold": 0.3}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: 0.714285708963871

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/TextSimilarity/SentenceSimilarityWithNGramMatching

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
DistanceFunc نحوه محاسبه شباهت (کاراکتری) دو رشته
inDistThreshold حداقل فاصله دو کلمه برای انطباق (یکسان فرض نمودن) آنها
String1 کلمه یا رشته ورودی اول
String2 کلمه یا رشته ورودی دوم

تحلیل نظرات

تحلیل حسی (نسخه آزمایشی)

این تابع نوع حس جمله را به صورت یکی از سه شکل زیر برمی‌گرداند


string baseAddress = "https://api.text-mining.ir/api/";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", GetJWTToken());

string json = JsonConvert.SerializeObject("اصلا خوب نبود");
var response = client.PostAsync(baseAddress + "SentimentAnalyzer/SentimentClassifier", new StringContent(json, Encoding.UTF8, "application/json")).Result;
string resp = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(resp);


################## Call Sentiment Classification ####################
url =  baseUrl + "SentimentAnalyzer/SentimentClassifier"
payload = u"\"اصلا خوب نبود\""
print(callApi(url, payload, tokenKey))


OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n\ttext:\"اصلا خوب نبود\"\n}");
Request request = new Request.Builder()
  .url("https://api.text-mining.ir/api/SentimentAnalyzer/SentimentClassifier")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer TOKEN_VALUE")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


<?php

$request = new HttpRequest();
$request->setUrl('https://api.text-mining.ir/api/SentimentAnalyzer/SentimentClassifier');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'cache-control' => 'no-cache',
  'Authorization' => 'Bearer TOKEN_VALUE',
  'Content-Type' => 'application/json'
));

$request->setBody('{
	text:"اصلا خوب نبود"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

خروجی مثال کد بالا: 0

آدرس و نوع تابع وب‌سرویس

POST https://api.text-mining.ir/api/SentimentAnalyzer/SentimentClassifier2

مدل دریافتی به عنوان پارامتر

عنوان مقدار پیش‌فرض توضیح پارامتر
inputText متن ورودی

خطاها

API متن‌کاوی به صورت کلی خطاهای زیر را برمی‌گرداند

کد خطا معنا
400 Bad Request – درخواست نامعتبر به دلیل اشتباه در پارامترهای ورودی
401 Unauthorized – درخواست شما احراز هویت نشده است. ممکن است به دلیل کلید API اشتباه یا منقضی شده (پایان دوره اعتبار مشخص شده در پنل توسعه‌دهندگان) یا توکن منقضی شده (چون توکن بعد از نیم ساعت منقضی می‌شود) باشد
404 Not Found – آدرس درخواستی شما در لیست توابع API وجود ندارد
500 Internal Server Error – خطا در سرور API