Как реализовать обработку естественного языка на Segway Loomo - PullRequest
0 голосов
/ 24 июня 2019

Я использую Loomo (продукт Segway) и пытаюсь внедрить в него NLP, чтобы он мог понимать общий английский при предоставлении команд.Я собирал пример кода, предоставленного Segway.Чтобы реализовать NLP, я делаю вызов API для Dialogflow и передаю распознанный текст (строковое представление параметра из метода onRecognitionResult).Тем не менее, я продолжаю получать ошибку «Out of Grammar», поскольку существуют GrammarConstraints для типа речи, который может быть распознан.Я включил изображение метода onRecognitionResult и GrammarConstraints ниже.Кто-нибудь работал над Loomo, который мог бы дать некоторое представление об обходном пути для реализации NLP?

Я пытался возиться с GrammarConstraints (что регулирует синтаксис), но он делает жизнеспособные командыболее структурированный, чем я хочу.Он должен понимать некоторые команды в любой грамматической форме.

mRecognitionListener = new RecognitionListener() {
    @Override
    public boolean onRecognitionResult(RecognitionResult recognitionResult) {
        String url;
        URL obj;

        try {
            url = "https://api.dialogflow.com/v1/query?v=20150910&lang=en&query=" +
            URLEncoder.encode(recognitionResult.toString(), "UTF-8") +
            "&sessionId=12345";
            obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
            con.setRequestMethod("GET");
            con.setRequestProperty("Authorization", "Bearer " + CLIENT_ACCESS_TOKEN);
            BufferedReader in = new BufferedReader(
                new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            Log.d(TAG, response.toString());
        } catch (UnsupportedEncodingException e) {
            Log.d(TAG, e.getMessage());
        } catch (MalformedURLException e) {
            Log.d(TAG, "Invalid URL: " + e.getMessage());
        } catch (IOException e) {
            Log.d(TAG, e.getMessage());
        }
    }
}
    //GrammarConstraints
    private void initControlGrammar() {

        switch (mRecognitionLanguage) {
            case Languages.EN_US:
                Slot moveSlot = new Slot("move");
                Slot toSlot = new Slot("to");
                Slot orientationSlot = new Slot("orientation");
                List<Slot> controlSlotList = new LinkedList<>();
                moveSlot.setOptional(false);
                moveSlot.addWord("turn");
                moveSlot.addWord("move");
                controlSlotList.add(moveSlot);

                toSlot.setOptional(true);
                toSlot.addWord("to the");
                controlSlotList.add(toSlot);

                orientationSlot.setOptional(false);
                orientationSlot.addWord("right");
                orientationSlot.addWord("left");
                controlSlotList.add(orientationSlot);

                mThreeSlotGrammar = new GrammarConstraint("three slots grammar", 
                controlSlotList);
                break;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...