/* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef LIBTEXTCLASSIFIER_ACTIONS_TYPES_H_ #define LIBTEXTCLASSIFIER_ACTIONS_TYPES_H_ #include #include #include #include "actions/actions-entity-data_generated.h" #include "annotator/types.h" #include "utils/flatbuffers.h" namespace libtextclassifier3 { // A text span in the conversation. struct MessageTextSpan { // The referenced message. // -1 if not referencing a particular message in the provided input. int message_index; // The span within the reference message. // (-1, -1) if not referencing a particular location. CodepointSpan span; // The span text. std::string text; explicit MessageTextSpan() : message_index(kInvalidIndex), span({kInvalidIndex, kInvalidIndex}) {} MessageTextSpan(const int message_index, const CodepointSpan span, const std::string& text) : message_index(message_index), span(span), text(text) {} }; // An entity associated with an action. struct ActionSuggestionAnnotation { MessageTextSpan span; ClassificationResult entity; // Optional annotation name. std::string name; }; // Action suggestion that contains a response text and the type of the response. struct ActionSuggestion { // Text of the action suggestion. std::string response_text; // Type of the action suggestion. std::string type; // Score. float score; // Priority score for internal conflict resolution. float priority_score; // The associated annotations. std::vector annotations; // Extras information. std::string serialized_entity_data; const ActionsEntityData* entity_data() { return LoadAndVerifyFlatbuffer( serialized_entity_data.data(), serialized_entity_data.size()); } }; // Actions suggestions result containing meta - information and the suggested // actions. struct ActionsSuggestionsResponse { ActionsSuggestionsResponse() : sensitivity_score(-1), triggering_score(-1), output_filtered_sensitivity(false), output_filtered_min_triggering_score(false), output_filtered_low_confidence(false), output_filtered_locale_mismatch(false) {} // The sensitivity assessment. float sensitivity_score; float triggering_score; // Whether the output was suppressed by the sensitivity threshold. bool output_filtered_sensitivity; // Whether the output was suppressed by the triggering score threshold. bool output_filtered_min_triggering_score; // Whether the output was suppressed by the low confidence patterns. bool output_filtered_low_confidence; // Whether the output was suppressed due to locale mismatch. bool output_filtered_locale_mismatch; // The suggested actions. std::vector actions; }; // Represents a single message in the conversation. struct ConversationMessage { // User ID distinguishing the user from other users in the conversation. int user_id; // Text of the message. std::string text; // Reference time of this message. int64 reference_time_ms_utc; // Timezone in which the input text was written (format as accepted by ICU). std::string reference_timezone; // Annotations on the text. std::vector annotations; // Comma-separated list of BCP 47 language tags of the message. std::string detected_text_language_tags; }; // Conversation between multiple users. struct Conversation { // Sequence of messages that were exchanged in the conversation. std::vector messages; }; } // namespace libtextclassifier3 #endif // LIBTEXTCLASSIFIER_ACTIONS_TYPES_H_