{
    "componentChunkName": "component---src-templates-doc-page-js",
    "path": "/docs/ru/Patterns/named_entity/",
    "result": {"data":{"site":{"siteMetadata":{"title":"Gatsby-doc-engine"}},"markdownRemark":{"id":"6d0c0397-5fdd-595c-a0cf-ca3a7f0d5ca3","excerpt":"Именованные сущности Именованная сущность — слово или словосочетание, выделяющее определенный предмет или явление из ряда однотипных предметов или явлений…","html":"<h1>Именованные сущности</h1>\n<hr>\n<p>Именованная сущность — слово или словосочетание, выделяющее определенный предмет или явление из ряда однотипных предметов или явлений. Например, это названия городов, стран, валют.</p>\n<p class='warn'>С точки зрения сценария именованная сущность представляет собой <a href=/1.11.7/docs/ru/Patterns/named_patterns  >именованный паттерн</a>, заданный при помощи <a href=/1.11.7/docs/ru/common/bot_structure/csv  >справочника именованных сущностей</a>.</p>\n<p>Именованные сущности можно указывать в правилах NLU, как и любые другие именованные паттерны, и таким образом распознавать элементы справочников в запросах.</p>\n<h2>Объявление</h2>\n<p>Чтобы задать паттерн как именованную сущность, необходимо проделать следующие шаги. Для примера воспользуемся фрагментом справочника городов, который разместим в файле <code class=\"language-text\">dicts/cities.csv</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"csv\"><pre class=\"language-csv\"><code class=\"language-csv\"><span class=\"token value\">1;Санкт-Петербург</span><span class=\"token punctuation\">,</span><span class=\"token value\"> Питер</span><span class=\"token punctuation\">,</span><span class=\"token value\"> СПб;{</span><span class=\"token value\">\"name\"</span><span class=\"token value\">: </span><span class=\"token value\">\"Санкт-Петербург\"</span><span class=\"token punctuation\">,</span><span class=\"token value\"> </span><span class=\"token value\">\"lat\"</span><span class=\"token value\">: 59.93863</span><span class=\"token punctuation\">,</span><span class=\"token value\"> </span><span class=\"token value\">\"lon\"</span><span class=\"token value\">: 30.31413}</span></code></pre></div>\n</br>\n<ol>\n<li>Подключите к файлу сценария <code class=\"language-text\">.sc</code> справочник именованных сущностей при помощи тега <a href=\"/1.11.7/docs/ru/JAICP_DSL/tags/declarative_tags/require\"><code class=\"language-text\">require</code></a>:</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">require:</span> dicts/cities.csv\n    name = Cities\n    var = Cities</code></pre></div>\n</br>\n<ol start=\"2\">\n<li>Задайте <a href=\"/1.11.7/docs/ru/Patterns/converters\">конвертер</a> для сущности в одном из файлов с расширением <a href=\"/1.11.7/docs/ru/common/bot_structure/js\"><code class=\"language-text\">.js</code></a> либо в одном из блоков <a href=\"/1.11.7/docs/ru/JAICP_DSL/tags/declarative_tags/init\"><code class=\"language-text\">init</code></a>:</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\">$global<span class=\"token punctuation\">.</span><span class=\"token function-variable function\">cityConverter</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">$parseTree</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">var</span> id <span class=\"token operator\">=</span> $parseTree<span class=\"token punctuation\">.</span>Cities<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> Cities<span class=\"token punctuation\">[</span>id<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p class='warn'>Использование конвертеров опционально, однако оно упрощает последующий доступ к данным, указанным в значении сущности.</p>\n</br>\n<ol start=\"3\">\n<li>Объявите именованный паттерн при помощи специального элемента <code class=\"language-text\">$entity</code>, после которого в угловых скобках записывается название справочника, а как атрибут после <code class=\"language-text\">||</code> — имя конвертера:</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">patterns:</span>\n    $city = $entity&lt;Cities> || converter = cityConverter</code></pre></div>\n<h2>Использование</h2>\n<p>Рассмотрим пример стейта, который будет срабатывать на запросы с упоминанием сущности <code class=\"language-text\">$city</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">state:</span> City\n    <span class=\"token storageType\">q!:</span> * $city *</code></pre></div>\n<p>При попадании в данный стейт, например, по запросу <em>мой регион Санкт Петербург</em> в <a href=\"/1.11.7/docs/ru/JS_API/variables/parseTree\"><code class=\"language-text\">$parseTree</code></a> будет доступна информация по сущности:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token punctuation\">{</span>\n  <span class=\"token string-property property\">\"city\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token comment\">// Служебные поля: tag, pattern и другие</span>\n      <span class=\"token string-property property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token string-property property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Санкт-Петербург\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token string-property property\">\"lat\"</span><span class=\"token operator\">:</span> <span class=\"token number\">59.93863</span><span class=\"token punctuation\">,</span>\n        <span class=\"token string-property property\">\"lon\"</span><span class=\"token operator\">:</span> <span class=\"token number\">30.31413</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string-property property\">\"_city\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token string-property property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Санкт-Петербург\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string-property property\">\"lat\"</span><span class=\"token operator\">:</span> <span class=\"token number\">59.93863</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string-property property\">\"lon\"</span><span class=\"token operator\">:</span> <span class=\"token number\">30.31413</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p class='warn'>По ключу <code class=\"language-text\">&lt;имя_паттерна></code> доступна подробная информация по всем распознанным сущностям, а по ключу <code class=\"language-text\">_&lt;имя_паттерна></code> —  значение <code class=\"language-text\">value</code> первой распознанной сущности.</p>\n<blockquote>\n<p>Значение <code class=\"language-text\">value</code> отличается в зависимости от того, задан ли для сущности конвертер:</p>\n<ul>\n<li>Если конвертер задан, берется значение, которое возвращает конвертер.</li>\n<li>Если конвертер не задан, записывается только идентификатор сущности.</li>\n</ul>\n</blockquote>","frontmatter":{"title":"","description":null},"headings":[{"value":"Именованные сущности"}]}},"pageContext":{"slug":"/docs/ru/Patterns/named_entity/","previous":{"fields":{"slug":"/docs/ru/Patterns/named_patterns/"},"frontmatter":{"title":"","description":null}},"next":{"fields":{"slug":"/docs/ru/Patterns/converters/"},"frontmatter":{"title":"","description":null}}}},
    "staticQueryHashes": ["1209419333"]}