Skip to content

Latest commit

 

History

History
423 lines (337 loc) · 22.2 KB

API.md

File metadata and controls

423 lines (337 loc) · 22.2 KB

АзБуки.ML API Documentation

Current stable API endpoint:

PLEASE CONTACT [email protected] TO GET ACCESS TO OUR API

Official API Demo: https://azbuki-ml.com/demo

JavaScript XMLHttpRequest Example:

var xhr = new XMLHttpRequest();
xhr.open("POST", "${API_ENDPOINT}/sentiment", true);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");

xhr.onreadystatechange = function() {
  if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
    console.log(this.response);
  }
}

xhr.send(JSON.stringify({ text: "Обичам да ям банани!" }));

JavaScript Fetch API Example:

fetch("${API_ENDPOINT}/sentiment", {
  method: 'POST',
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ text: "Обичам да ям банани!" })
}).then(resp => resp.json().then(console.log));

JSON HTTP API:

The API works with standard HTTP POST requests, the body of which should be stringified JSON data. Usually you need to provide a text field and some additional fields for the different API routes according to this documentation.

Text-to-Speech

API Route:

POST /SpeechSynthesizer

Data:

{
  "text": "STRING", // REQUIRED
  "apiKey": "STRING", // REQUIRED
  "voice": "STRING - male|female", // OPTIONAL; Defaults to "male"
  "ssml": "BOOLEAN", // OPTIONAL; Defaults to false
  "compress": "BOOLEAN" // OPTIONAL; If true, compresses the output to mp3 format
}

_Request body and headers:_
```js
{
  body: JSON.stringify({ text, apiKey, voice, ssml, compress }),
  headers: {
    "Content-Type": "application/json"
  }
}

Response body and headers:

{
  status: 200, // 500 | 200
  body: Buffer, // Buffer containing binary data. If there was an internal error (500), the buffer could be empty or missing.
  headers: {
    'Content-Disposition': `attachment; filename=${FILE-UID}.mp3`, // This header is used for file tracking - e.g., cost, characters synthesized, debugging.
  }
}

Example:

// Fetch API Example (DO NOT STORE YOUR API KEY IN A FRONT-END APPLICATION!)
fetch(endpoint, {
  method: 'POST',
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ text: input, apiKey: API_KEY, voice: 'Gabbie', ssml: true, compress: true })
}).then(resp => resp.arrayBuffer().then(buffer => {
  // Process the buffer
}));
// Node.JS with `needle`
needle.post(
  endpoint,
  { text: input, apiKey: API_KEY, voice: 'Gabbie', ssml: true, compress: true },
  { json: true },
  function (error, response) {
    if (response.statusCode !== 200) {
      console.error(error);
      console.log(response.body);
    } else {
      // Process the response
      fs.writeFileSync('output.mp3', response.body);
    }
  });

Check sentence in Word Knowledge Graph db

API Route:

POST /sent

Data:

{ "text": "STRING" }

Example:

fetch("${API_ENDPOINT}/sent", {
  method: 'POST',
  headers: { "Accept": "application/json", "Content-Type": "application/json" },
  body: JSON.stringify({ text: "Той спортува всеки ден." })
}).then(resp => resp.json().then(console.log));

/// RESPONSE:
[
    ["той", null, 1, "именителен падеж", "той", "+вин. не`го, +крат. го, +дат. +остар. не`му, +крат. му, +лично мест.\n#1 За заместване на лице или предмет от мъжки род, за които се говори. _Исках да се срещна с доцент Харалампиев, но когато отидох, той беше излязъл. Тръгнахме за друг ресторант, но той пък беше затворен. Виждал ли си моя квартирант? — Изобщо не съм го виждал. Не съм виждал нито него, нито пък приятелката му._\n#2 За посочване на лица от мъжки род; този, това. _– Той — посочи към мене баща ми — ще дойде с тебе, а другият остава тук._", null, "pronominal_personal", "той\nтой\nнего\nго\nнему # Остаряла форма\nнего\nму\n"],
    ["спортува", null, 0, "сег.вр., 3л., ед.ч. \nДруги форми: \nverb_intransitive_imperfective, мин.св.вр., 2л., ед.ч.; \nverb_intransitive_imperfective, мин.св.вр., 3л., ед.ч.; \n", "спортувам", "спортуваш, +несв. Занимавам се със спорт. _Хубаво е да спортуваш._+същ. [[спортуване]], +ср.", null, "verb_intransitive_imperfective", "ам, [^аъиеоуяю]ам\n\nам\nаш\nа\nаме\nате\nат\n\nах\nа\nа\nахме\nахте\nаха\n\nах\nаше\nаше\nахме\nахте\nаха\n\nай\nайте\n\nал\nалия\nалият\nала\nалата\nало\nалото\nали\nалите\n\nал\nалия\nалият\nала\nалата\nало\nалото\nали\nалите\n\nан\nания\nаният\nана\nаната\nано\nаното\nани\nаните\n\nащ\nащия\nащият\nаща\nащата\nащо\nащото\nащи\nащите\n\nайки\n"],
    ["всеки", null, 1, "м.р., ед.ч. \nДруги форми: \npronominal_general, дателен падеж, предложна форма; \n", "всеки", "вся`ка, вся`ко, +мн. все`ки, _обобщ. мест._\n#1 Като +прил., само +ед. Който и да е елемент измежду елементите в една група, без изключение. _Всяка жена обича красивото. Всеки възпитан човек би постъпил така. Всяка вечер съм у тях. Не всяка година ходя на почивка._\n#2 Като +прил., само +мн. В съчетание с _числ._ бройни — която и да е група от елементи измежду елементите в по-обща група, без изключение. _На всеки два часа се стряскаше._\n#3 Като +същ., само +ед. все`ки, +вин. +остар. все`киго, +дат. +остар. все`киму. Което и да е лице без оглед на пола му измежду лицата в една група, без изключение. _Така всеки знае. Искам да се срещна с всеки от вас поотделно. Това всекиго може да обиди. Всекиму добро струва._\n* _За всеки случай._ — Евентуално.\n* _На всяка цена._ — Непременно.\n* _По всяка вероятност._ — Вероятно.", "(обобщ.мест.) всеки един, дядо и баба\n(обобщ.мест.) кой да е, какъв да е, всякакъв", "pronominal_general", "всеки\nвсеки\n-\n-\nвсекиго\nвсекиму\nвсеки\nвсяка\n-\nвсяко\n-\n- # Няма форма за множествено число.\n-\n"],
    ["ден", null, 1, "ед.ч.", "ден", "деня`т, деня`, +мн. дни, (два) де`на и дни, +м.\n#1 Светлата част от денонощието от сутринта до вечерта. _Цял ден се разхождах из гората._\n#2 Денонощие. _След два дни заминаваме._\n#3 Период, определен за извършване на нещо. _Почивен ден. Пазарен ден. Сватбен ден._\n#4 Само +мн. Време, живот. _Прекарвам дните си в размисли и терзания. Безгрижни детски дни._\n#5 +Спец. В астрономията — промеждутък от време, необходим за завъртането на небесното тяло около оста му, или периодът, когато е огрявано от Слънцето.\n#6 Дата, свързана с някакво събитие или празник. _Рожден ден. Ден на родилната помощ._\n* _Бял ден._ — Добър, спокоен, уреден живот.\n* _Ден до пладне._ — Кратко време, за малко.\n* _Ден за ден._ — Без перспективи за бъдещето.\n* _Дните ми са преброени._ — Малко ми остава да живея, скоро ще умра.\n* _Добър ден!_ — За израз на подигравка, ако някой възприема нещо известно като ново.\n* _Имам дни._ — Ще живея още.\n* _За черни дни._ — В случай на нужда, при необходимост.\n* _И утре е ден._ — За подчертаване, че някаква работа може да се отложи.\n* _Силен на деня._ — Влиятелен, властен.\n* _Утрешния ден._ — Бъдещето.\n* _До ден днешен._ — До днес, до този момент.\n* _Тия дни._ — В близко време; скоро.", "дата, денонощие\nсветлина, видело, слънце", "noun_male", "ен, ден\nен\nеня\nенят\nни\nните\nена, ни\n-\n"]
]

Check word in Word Knowledge Graph db

API Route:

POST /word

Data:

{ "text": "STRING" }

Example:

fetch("${API_ENDPOINT}/word", {
  method: 'POST',
  headers: { "Accept": "application/json", "Content-Type": "application/json" },
  body: JSON.stringify({ text: "аванпост" })
}).then(resp => resp.json().then(console.log));

/// RESPONSE:
[["аванпост", null, 1, "ед.ч.", "аванпост", null, null, "noun_male", "0, [^аъиеоуяю]\n0\nа\nът\nове\nовете\nа\n-\n"]]

Part of Speech tagging

API Route:

POST /pos

Data:

{ "text": "STRING" }

Example:

fetch("${API_ENDPOINT}/pos", {
  method: 'POST',
  headers: { "Accept": "application/json", "Content-Type": "application/json" },
  body: JSON.stringify({ text: "Петър плет плете." })
}).then(resp => resp.json().then(console.log));

/// RESPONSE:
[
    [
        ["Петър", "PROPN", "Npmsi", "петър", "nsubj", 3], 
        ["плет", "NOUN", "Ncmsi", "плет", "nmod", 1], 
        ["плете", "VERB", "Vpitf-r3s", "плета-(се)", "root", 0]
    ]
]

Comma predictions

API Route:

POST /pnct

Data:

{ "text": "STRING" }

Example:

fetch("${API_ENDPOINT}/pnct", {
  method: 'POST',
  headers: { "Accept": "application/json", "Content-Type": "application/json" },
  body: JSON.stringify({ text: "Ясно е че децата които растат с домашни любимци се учат в ранна възраст да проявяват отговорно отношение." })
}).then(resp => resp.json().then(console.log));

/// RESPONSE:
[ "Ясно", "е", ",COMMA", "че", "децата", ",COMMA", "които", "растат", "с", "домашни", "любимци", ",COMMA", "се", "учат", "в", "ранна", "възраст", "да", "проявяват", "отговорно", "отношение" ]

Sentiment analysis

Positive/Negative and Neutral/Expressive evaluation.

API Route:

POST /sentiment

Data:

{ "text": "STRING" }

Example:

fetch("${API_ENDPOINT}/sentiment", {
  method: 'POST',
  headers: { "Accept": "application/json", "Content-Type": "application/json" },
  body: JSON.stringify({ text: "Обичам да ям сладолед!" })
}).then(resp => resp.json().then(console.log));

/// RESPONSE:
[
    13.865050315856934, // N < 0.5: neutral; N > 0.5: expressive;
    13.826891899108887  // N < 0.5: negative; N > 0.5: positivie;
]

Positive/Negative word lexicons

API Route:

POST /lex

Data:

{ "text": "STRING" }

Example:

fetch("${API_ENDPOINT}/lex", {
  method: 'POST',
  headers: { "Accept": "application/json", "Content-Type": "application/json" },
  body: JSON.stringify({ text: "Обичам морето, ала мразя, когато изгарям." })
}).then(resp => resp.json().then(console.log));

/// RESPONSE
[
    {"coefficient": 0.166, "count": 1, "dictionary": {"мразя": 1}, "total_words": 6, "unique_count": 1}, // negative
    {"coefficient": 0.166, "count": 1, "dictionary": {"обичам": 1}, "total_words": 6, "unique_count": 1} // positive
]

Text Generation and Smart Suggestions

Generates amount number of words that cloud come after the inputted text in natural speech.

API Route:

POST /gen

Data:

{
  "text": "STRING",
  "amount": "INTEGER"
}
  • The amount field is optional. It defaults to 3.

Example:

fetch("${API_ENDPOINT}/gen", {
  method: 'POST',
  headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },
  body: JSON.stringify({ text: "Да бъдеш или да", amount: 2 })
}).then(resp => resp.json().then(console.log));

/// RESPONSE
["не", "бъдеш"]

Deprecated: GET Requests REST API:

JavaScript Example:

fetch("${API_ENDPOINT}/api?sentiment=" + "Обичам да ям банани!")
  .then(resp => resp.json().then(console.log));

Check sentence in Word Knowledge Graph db

Usage (Deprecated):

GET /api?sent=SENTENCE

Example:

GET /api?sent=Той%20спортува%20всеки%20ден

[
    ["той", null, 1, "именителен падеж", "той", "+вин. не`го, +крат. го, +дат. +остар. не`му, +крат. му, +лично мест.\n#1 За заместване на лице или предмет от мъжки род, за които се говори. _Исках да се срещна с доцент Харалампиев, но когато отидох, той беше излязъл. Тръгнахме за друг ресторант, но той пък беше затворен. Виждал ли си моя квартирант? — Изобщо не съм го виждал. Не съм виждал нито него, нито пък приятелката му._\n#2 За посочване на лица от мъжки род; този, това. _– Той — посочи към мене баща ми — ще дойде с тебе, а другият остава тук._", null, "pronominal_personal", "той\nтой\nнего\nго\nнему # Остаряла форма\nнего\nму\n"],
    ["спортува", null, 0, "сег.вр., 3л., ед.ч. \nДруги форми: \nverb_intransitive_imperfective, мин.св.вр., 2л., ед.ч.; \nverb_intransitive_imperfective, мин.св.вр., 3л., ед.ч.; \n", "спортувам", "спортуваш, +несв. Занимавам се със спорт. _Хубаво е да спортуваш._+същ. [[спортуване]], +ср.", null, "verb_intransitive_imperfective", "ам, [^аъиеоуяю]ам\n\nам\nаш\nа\nаме\nате\nат\n\nах\nа\nа\nахме\nахте\nаха\n\nах\nаше\nаше\nахме\nахте\nаха\n\nай\nайте\n\nал\nалия\nалият\nала\nалата\nало\nалото\nали\nалите\n\nал\nалия\nалият\nала\nалата\nало\nалото\nали\nалите\n\nан\nания\nаният\nана\nаната\nано\nаното\nани\nаните\n\nащ\nащия\nащият\nаща\nащата\nащо\nащото\nащи\nащите\n\nайки\n"],
    ["всеки", null, 1, "м.р., ед.ч. \nДруги форми: \npronominal_general, дателен падеж, предложна форма; \n", "всеки", "вся`ка, вся`ко, +мн. все`ки, _обобщ. мест._\n#1 Като +прил., само +ед. Който и да е елемент измежду елементите в една група, без изключение. _Всяка жена обича красивото. Всеки възпитан човек би постъпил така. Всяка вечер съм у тях. Не всяка година ходя на почивка._\n#2 Като +прил., само +мн. В съчетание с _числ._ бройни — която и да е група от елементи измежду елементите в по-обща група, без изключение. _На всеки два часа се стряскаше._\n#3 Като +същ., само +ед. все`ки, +вин. +остар. все`киго, +дат. +остар. все`киму. Което и да е лице без оглед на пола му измежду лицата в една група, без изключение. _Така всеки знае. Искам да се срещна с всеки от вас поотделно. Това всекиго може да обиди. Всекиму добро струва._\n* _За всеки случай._ — Евентуално.\n* _На всяка цена._ — Непременно.\n* _По всяка вероятност._ — Вероятно.", "(обобщ.мест.) всеки един, дядо и баба\n(обобщ.мест.) кой да е, какъв да е, всякакъв", "pronominal_general", "всеки\nвсеки\n-\n-\nвсекиго\nвсекиму\nвсеки\nвсяка\n-\nвсяко\n-\n- # Няма форма за множествено число.\n-\n"],
    ["ден", null, 1, "ед.ч.", "ден", "деня`т, деня`, +мн. дни, (два) де`на и дни, +м.\n#1 Светлата част от денонощието от сутринта до вечерта. _Цял ден се разхождах из гората._\n#2 Денонощие. _След два дни заминаваме._\n#3 Период, определен за извършване на нещо. _Почивен ден. Пазарен ден. Сватбен ден._\n#4 Само +мн. Време, живот. _Прекарвам дните си в размисли и терзания. Безгрижни детски дни._\n#5 +Спец. В астрономията — промеждутък от време, необходим за завъртането на небесното тяло около оста му, или периодът, когато е огрявано от Слънцето.\n#6 Дата, свързана с някакво събитие или празник. _Рожден ден. Ден на родилната помощ._\n* _Бял ден._ — Добър, спокоен, уреден живот.\n* _Ден до пладне._ — Кратко време, за малко.\n* _Ден за ден._ — Без перспективи за бъдещето.\n* _Дните ми са преброени._ — Малко ми остава да живея, скоро ще умра.\n* _Добър ден!_ — За израз на подигравка, ако някой възприема нещо известно като ново.\n* _Имам дни._ — Ще живея още.\n* _За черни дни._ — В случай на нужда, при необходимост.\n* _И утре е ден._ — За подчертаване, че някаква работа може да се отложи.\n* _Силен на деня._ — Влиятелен, властен.\n* _Утрешния ден._ — Бъдещето.\n* _До ден днешен._ — До днес, до този момент.\n* _Тия дни._ — В близко време; скоро.", "дата, денонощие\nсветлина, видело, слънце", "noun_male", "ен, ден\nен\nеня\nенят\nни\nните\nена, ни\n-\n"]
]

Check word in Word Knowledge Graph db

Usage (Deprecated):

GET /api?word=WORD

Example:

GET /api?word=аванпост

[["аванпост", null, 1, "ед.ч.", "аванпост", null, null, "noun_male", "0, [^аъиеоуяю]\n0\nа\nът\nове\nовете\nа\n-\n"]]

Part of Speech tagging

Usage (Deprecated):

GET /api?pos=SENTENCE

Example:

GET /api?pos=Петър плет плете

[
    [
        ["Петър", "PROPN", "Npmsi", "петър", "nsubj", 3], 
        ["плет", "NOUN", "Ncmsi", "плет", "nmod", 1], 
        ["плете", "VERB", "Vpitf-r3s", "плета-(се)", "root", 0]
    ]
]

Comma predictions

Usage (Deprecated):

GET /api?pnct=SENTENCE

Example:

GET /api?pnct=Ясно е че децата които растат с домашни любимци се учат в ранна възраст да проявяват отговорно отношение

[
    "Ясно", "е", ",COMMA", "че", "децата", ",COMMA", "които", "растат", "с", "домашни", "любимци", ",COMMA", "се", "учат", "в", "ранна", "възраст", "да", "проявяват", "отговорно", "отношение"
]

Sentiment analysis

Positive/Negative and Neutral/Expressive evaluation.

Usage (Deprecated):

GET /api?sentiment=SENTENCE

Example:

GET /api?sentiment=Обичам да ям сладолед

[
    13.865050315856934, // N < 0.5: neutral; N > 0.5: expressive;
    13.826891899108887  // N < 0.5: negative; N > 0.5: positivie;
]

Positive/Negative word lexicons

Usage (Deprecated):

GET /api?lex=SENTENCE

Example:

GET /api?lex=Обичам морето, ала мразя, когато изгарям

[
    {"coefficient": 0.166, "count": 1, "dictionary": {"мразя": 1}, "total_words": 6, "unique_count": 1}, // negative
    {"coefficient": 0.166, "count": 1, "dictionary": {"обичам": 1}, "total_words": 6, "unique_count": 1} // positive
]