/
r.d.karimov
/
EmbodiedAI
Обзор
Документация
Войти
/
r.d.karimov
/
EmbodiedAI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
NLPModule.java
91 строка
4 KB
r.d.karimov
upload files
19 янв 2025, 21:02
19 янв 2025, 21:02
8af564b
Код
Авторство
О чём код?
package UpperLevel; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class NLPModule { /** * Разбивает входную инструкцию на отдельные команды и парсит каждую из них. * * @param instruction Входная инструкция, содержащая несколько команд. * @return Список команд, где каждая команда представлена в виде Map<String, String>. */ public List<Map<String, String>> parseInstruction(String instruction) { List<Map<String, String>> commands = new ArrayList<>(); // Разделяем инструкцию на отдельные команды по разделителю " и " String[] parts = instruction.split(" и "); // Обрабатываем каждую команду for (String part : parts) { Map<String, String> command = new HashMap<>(); if (part.contains("возьми")) { // Команда "возьми" command.put("action", "PICK"); command.put("object", extractObject(part)); // Извлекаем объект command.put("source", extractSource(part)); // Извлекаем источник } else if (part.contains("положи")) { // Команда "положи" command.put("action", "PLACE"); command.put("object", extractObject(part)); // Извлекаем объект command.put("destination", extractDestination(part)); // Извлекаем назначение } else if (part.contains("переместись")) { // Команда "переместись" command.put("action", "NAVIGATE"); command.put("destination", extractDestination(part)); // Извлекаем назначение } else { // Неизвестная команда command.put("action", "UNKNOWN"); } commands.add(command); // Добавляем команду в список } return commands; } /** * Извлекает объект из команды. * * @param part Часть инструкции, содержащая команду. * @return Название объекта. */ private String extractObject(String part) { // Пример: "возьми кубик со стола" -> "кубик" return part.split(" ")[1]; } /** * Извлекает источник из команды. * * @param part Часть инструкции, содержащая команду. * @return Название источника. */ private String extractSource(String part) { // Пример: "возьми кубик со стола" -> "стол" if (part.contains("со")) { return part.split("со ")[1]; } return null; } /** * Извлекает назначение из команды. * * @param part Часть инструкции, содержащая команду. * @return Название назначения. */ private String extractDestination(String part) { // Пример: "положи кубик на полку" -> "полка" if (part.contains("на")) { return part.split("на ")[1]; } else if (part.contains("к")) { return part.split("к ")[1]; } return null; } }