AI Bot Editor / пример построителя запросов - PullRequest
0 голосов
/ 17 сентября 2018

Попытка создать сборку AI-бота с входным значением

"Search google for London Bridge"

выводит как

"Search <START:engine> google <END> for <START:query> London Bridge <END>"

Проблема в том, что эти XML-теги не могут перекрывать друг друга, могут быть расширены до нескольких слов, в приведенном выше примере используются отдельные слова в скобках движка, но в запросе мы можем использовать скобки из нескольких слов.

пример кода позволяет мне выбирать слова, но обработка перекрывающихся скобок - нет.

var getAllBetween = function (firstEl, lastEl) {
    var firstElement = $(firstEl); // First Element
    var lastElement = $(lastEl); // Last Element
    var collection = new Array(); // Collection of Elements
    collection.push(firstElement.attr('id')); // Add First Element to Collection
    $(firstEl).nextAll().each(function () { // Traverse all siblings
        var siblingID = $(this).attr('id'); // Get Sibling ID
        if (siblingID !== $(lastElement).attr('id')) { // If Sib is not LastElement
            collection.push($(this).attr('id')); // Add Sibling to Collection
        } else { // Else, if Sib is LastElement
            collection.push(lastElement.attr('id')); // Add Last Element to Collection
            return false; // Break Loop
        }
    });
    return collection; // Return Collection
};

$("#editable").mouseup(function () {
    if (window.getSelection) {
        userSelection = window.getSelection();
        rangeObject = userSelection.getRangeAt(0);
        if (rangeObject.startContainer === rangeObject.endContainer) {
            alert(rangeObject.startContainer.parentNode.id);
        } else {
            alert(getAllBetween(
                rangeObject.startContainer.parentNode,
                rangeObject.endContainer.parentNode));
        }
    }
});

с помощью бритвы:

@for (int i = 0; i < sentences.Length; i++)
{
var phrase = sentences[i].Split(' ');
<p id="editable">
    @for (int p = 0; p < phrase.Length; p++)
    {
        <span id="phrase-@i-@p">@phrase[p]</span>
    }
</p>
}

Не уверен, стоит ли его переписывать в Angularjs или VueJs, чтобы создать больше динамики как Luis.ai или DialogFlow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...