Exemplo n.º 1
0
        public static WatsonIntentSyncAll CreateInstance(LexiconWorkspace workspace)
        {
            WatsonIntentSyncAll instance = CreateInstance <WatsonIntentSyncAll>();

            instance.workspace = workspace;
            return(instance);
        }
        public static WatsonCompleteSpeechToTextTraining CreateInstance(LexiconWorkspace workspace)
        {
            WatsonCompleteSpeechToTextTraining instance = CreateInstance <WatsonCompleteSpeechToTextTraining>();

            instance.workspace = workspace;
            return(instance);
        }
Exemplo n.º 3
0
        public static WatsonCorpusAddIntents CreateInstance(LexiconWorkspace workspace)
        {
            WatsonCorpusAddIntents instance = CreateInstance <WatsonCorpusAddIntents>();

            instance.workspace = workspace;
            return(instance);
        }
        public void SyncWatsonConversation(LexiconWorkspace workspace, WorkspaceSyncData syncData)
        {
            workspace.WatsonConversationManager.IsSyncing  = true;
            workspace.WatsonConversationManager.SyncStatus = "Syncing";

            WatsonSyncQueue syncQueue = ScriptableObject.CreateInstance <WatsonSyncQueue>();

            syncQueue.workspace = workspace;
            syncQueue.syncData  = syncData;

            if (string.IsNullOrEmpty(workspace.WatsonConversationManager.WorkspaceId))
            {
                syncQueue.Enqueue(WatsonWorkspaceCreate.CreateInstance(workspace));
            }

            syncQueue.Enqueue(WatsonIntentSyncAll.CreateInstance(workspace));
            syncQueue.Enqueue(WatsonEntitySyncAll.CreateInstance(workspace));

            syncQueue.OnCompleteAction = WatsonCompleteConversationSync.CreateInstance(workspace);
            syncQueue.OnQueueFinished += CleanUp;

            syncQueue.Process();

            watsonConversationSyncQueues.Add(syncQueue);
        }
Exemplo n.º 5
0
        public static WatsonCustomWordsUpdate CreateInstance(LexiconWorkspace workspace)
        {
            WatsonCustomWordsUpdate instance = CreateInstance <WatsonCustomWordsUpdate>();

            instance.workspace = workspace;
            return(instance);
        }
        public void SyncWatsonSpeechToText(LexiconWorkspace workspace, WorkspaceSyncData syncData)
        {
            workspace.WatsonSpeechToTextManager.IsSyncing  = true;
            workspace.WatsonSpeechToTextManager.SyncStatus = "Syncing";

            WatsonSyncQueue syncQueue = ScriptableObject.CreateInstance <WatsonSyncQueue>();

            syncQueue.workspace = workspace;
            syncQueue.syncData  = syncData;

            if (string.IsNullOrEmpty(workspace.WatsonSpeechToTextManager.CustomizationId))
            {
                syncQueue.Enqueue(WatsonCustomModelCreate.CreateInstance(workspace));
            }
            else
            {
                syncQueue.Enqueue(WatsonCustomWordsUpdate.CreateInstance(workspace));
                syncQueue.Enqueue(TimerSyncAction.CreateInstance(10));
            }

            syncQueue.Enqueue(WatsonCorpusAddIntents.CreateInstance(workspace));
            syncQueue.Enqueue(TimerSyncAction.CreateInstance(10));
            syncQueue.Enqueue(WatsonCorpusAddEntities.CreateInstance(workspace));
            syncQueue.Enqueue(TimerSyncAction.CreateInstance(10));
            syncQueue.Enqueue(WatsonCustomModelTrain.CreateInstance(workspace));
            syncQueue.Enqueue(TimerSyncAction.CreateInstance(10));

            syncQueue.OnCompleteAction = WatsonCompleteSpeechToTextSync.CreateInstance(workspace);
            syncQueue.OnQueueFinished += CleanUp;

            syncQueue.Process();

            watsonSpeechToTextSyncQueues.Add(syncQueue);
        }
Exemplo n.º 7
0
        public static WatsonCompleteConversationTraining CreateInstance(LexiconWorkspace workspace)
        {
            WatsonCompleteConversationTraining instance = CreateInstance <WatsonCompleteConversationTraining>();

            instance.workspace = workspace;
            return(instance);
        }
Exemplo n.º 8
0
        public static WatsonCustomModelTrain CreateInstance(LexiconWorkspace workspace)
        {
            WatsonCustomModelTrain instance = CreateInstance <WatsonCustomModelTrain>();

            instance.workspace = workspace;
            return(instance);
        }
        public static WatsonWorkspaceStatus CreateInstance(LexiconWorkspace workspace)
        {
            WatsonWorkspaceStatus instance = CreateInstance <WatsonWorkspaceStatus>();

            instance.workspace = workspace;
            return(instance);
        }
Exemplo n.º 10
0
        public static WatsonEntityDelete CreateInstance(LexiconWorkspace workspace, string entityName)
        {
            WatsonEntityDelete instance = CreateInstance <WatsonEntityDelete>();

            instance.workspace  = workspace;
            instance.entityName = entityName;
            return(instance);
        }
        public static WatsonIntentCreate CreateInstance(LexiconWorkspace workspace, IntentData intentData)
        {
            WatsonIntentCreate instance = CreateInstance <WatsonIntentCreate>();

            instance.workspace   = workspace;
            instance.localIntent = intentData;
            return(instance);
        }
Exemplo n.º 12
0
        public static WatsonEntityUpdate CreateInstance(LexiconWorkspace workspace, EntityData entityData)
        {
            WatsonEntityUpdate instance = CreateInstance <WatsonEntityUpdate>();

            instance.workspace   = workspace;
            instance.localEntity = entityData;
            return(instance);
        }
Exemplo n.º 13
0
        public static WatsonIntentDelete CreateInstance(LexiconWorkspace workspace, string intentName)
        {
            WatsonIntentDelete instance = CreateInstance <WatsonIntentDelete>();

            instance.workspace  = workspace;
            instance.intentName = intentName;
            return(instance);
        }
Exemplo n.º 14
0
        private List <LexiconWorkspace> GetAllWorkspaces()
        {
            List <LexiconWorkspace> workspaces = new List <LexiconWorkspace>();

            string[] guids = AssetDatabase.FindAssets("t:Mixspace.Lexicon.LexiconWorkspace");
            foreach (string guid in guids)
            {
                string           path      = AssetDatabase.GUIDToAssetPath(guid);
                LexiconWorkspace workspace = AssetDatabase.LoadAssetAtPath <LexiconWorkspace>(path);
                workspaces.Add(workspace);
            }

            return(workspaces);
        }
Exemplo n.º 15
0
        public void SyncWatson(LexiconWorkspace workspace)
        {
            WorkspaceSyncData syncData = WorkspaceSyncData.Create(workspace);

            if (workspace.UseWatsonSpeechToText)
            {
                SyncWatsonSpeechToText(workspace, syncData);
            }

            if (workspace.UseWatsonConversation)
            {
                SyncWatsonConversation(workspace, syncData);
            }
        }
Exemplo n.º 16
0
        public void CancelWatsonConversationSync(LexiconWorkspace workspace)
        {
            foreach (WatsonSyncQueue syncQueue in watsonConversationSyncQueues)
            {
                if (syncQueue.workspace == workspace)
                {
                    syncQueue.Cancel();
                }
            }

            workspace.WatsonConversationManager.SyncStatus = "Sync Cancelled";
            workspace.WatsonConversationManager.IsSyncing  = false;

            CleanUp();
        }
Exemplo n.º 17
0
        public void MonitorWatsonConversationTraining(LexiconWorkspace workspace)
        {
            workspace.WatsonConversationManager.IsTraining = true;

            WatsonSyncQueue syncQueue = ScriptableObject.CreateInstance <WatsonSyncQueue>();

            syncQueue.workspace = workspace;

            syncQueue.Enqueue(WatsonWorkspaceStatus.CreateInstance(workspace));

            syncQueue.OnCompleteAction = WatsonCompleteConversationTraining.CreateInstance(workspace);
            syncQueue.OnQueueFinished += CleanUp;

            syncQueue.Process();

            watsonConversationSyncQueues.Add(syncQueue);
        }
Exemplo n.º 18
0
        public void MonitorWatsonSpeechToTextTraining(LexiconWorkspace workspace)
        {
            workspace.WatsonSpeechToTextManager.IsTraining = true;

            WatsonSyncQueue syncQueue = ScriptableObject.CreateInstance <WatsonSyncQueue>();

            syncQueue.workspace = workspace;

            syncQueue.Enqueue(WatsonCustomModelStatus.CreateInstance(workspace));
            syncQueue.Enqueue(WatsonCustomWordsGet.CreateInstance(workspace));

            syncQueue.OnCompleteAction = WatsonCompleteSpeechToTextTraining.CreateInstance(workspace);
            syncQueue.OnQueueFinished += CleanUp;

            syncQueue.Process();

            watsonSpeechToTextSyncQueues.Add(syncQueue);
        }
        public override void OnInspectorGUI()
        {
            //Debug.Log("Inspector width: " + Screen.width);

            LexiconWorkspace workspace = (LexiconWorkspace)target;

            EditorGUI.BeginChangeCheck();

            serializedObject.Update();

            EditorGUIUtility.labelWidth = 160;

            EditorGUILayout.LabelField("Lexicon Workspace", EditorStyles.boldLabel);
            EditorGUILayout.Space();

            Rect rect = EditorGUILayout.GetControlRect(false, 1);

            EditorGUI.DrawRect(rect, Color.grey);
            EditorGUILayout.Space();

            EditorGUILayout.PropertyField(workspaceName);
            EditorGUILayout.PropertyField(workspaceDescription);
            EditorGUILayout.Space();

            rect = EditorGUILayout.GetControlRect(false, 1);
            EditorGUI.DrawRect(rect, Color.grey);
            EditorGUILayout.Space();

            EditorGUILayout.PropertyField(useWatsonSpeechToText);
            if (useWatsonSpeechToText.boolValue)
            {
                EditorGUI.indentLevel++;

                showWatsonSpeechToTextSettings = EditorGUILayout.Foldout(showWatsonSpeechToTextSettings, "Settings", true);
                if (showWatsonSpeechToTextSettings)
                {
                    EditorGUILayout.PropertyField(watsonSpeechToTextURL, new GUIContent("Speech to Text URL"));
                    EditorGUILayout.PropertyField(watsonSpeechToTextModel, new GUIContent("Base Language Model"));
                    EditorGUILayout.PropertyField(watsonSpeechToTextCreateCustomModel, new GUIContent("Create Custom Model"));
                    if (watsonSpeechToTextCreateCustomModel.boolValue)
                    {
                        EditorGUILayout.BeginHorizontal();
                        GUI.enabled = !watsonSpeechToTextIdLocked;
                        EditorGUILayout.PropertyField(watsonSpeechToTextCustomizationId);
                        GUI.enabled = true;
                        watsonSpeechToTextIdLocked = EditorGUILayout.Toggle(watsonSpeechToTextIdLocked, "IN LockButton", new GUILayoutOption[] { GUILayout.MaxWidth(20) });
                        EditorGUILayout.EndHorizontal();
                    }
                }

                if (workspace.CustomWords != null && workspace.CustomWords.Count > 0)
                {
                    showWatsonSpeechToTextCustomWords = EditorGUILayout.Foldout(showWatsonSpeechToTextCustomWords, "Custom Words", true);
                    if (showWatsonSpeechToTextCustomWords)
                    {
                        customWordList.DoLayoutList();
                    }
                }

                EditorGUI.indentLevel--;

                if (watsonSpeechToTextCreateCustomModel.boolValue)
                {
                    EditorGUILayout.LabelField("Status: " + workspace.WatsonSpeechToTextManager.SyncStatus);
                    if (!string.IsNullOrEmpty(workspace.WatsonSpeechToTextManager.LastSyncTime))
                    {
                        EditorGUILayout.LabelField("Last Sync: " + workspace.WatsonSpeechToTextManager.LastSyncTime);
                    }
                }

                if (watsonSpeechToTextCreateCustomModel.boolValue)
                {
                    if (workspace.WatsonSpeechToTextManager.IsSyncing)
                    {
                        if (GUILayout.Button("Cancel Speech to Text Sync"))
                        {
                            EditorManager.Instance.CancelWatsonSpeechToTextSync(workspace);
                        }
                    }
                    else
                    {
                        if (GUILayout.Button("Sync Watson Speech to Text"))
                        {
                            EditorManager.Instance.SyncWatsonSpeechToText(workspace);
                        }
                    }
                }
            }

            EditorGUILayout.Space();

            rect = EditorGUILayout.GetControlRect(false, 1);
            EditorGUI.DrawRect(rect, Color.grey);
            EditorGUILayout.Space();

            EditorGUILayout.PropertyField(useWatsonConversation);
            if (useWatsonConversation.boolValue)
            {
                EditorGUI.indentLevel++;

                showWatsonConversationSettings = EditorGUILayout.Foldout(showWatsonConversationSettings, "Settings", true);
                if (showWatsonConversationSettings)
                {
                    EditorGUILayout.PropertyField(watsonConversationURL, new GUIContent("Workspace URL"));
                    EditorGUILayout.PropertyField(watsonConversationLanguage, new GUIContent("Workspace Language"));
                    EditorGUILayout.BeginHorizontal();
                    GUI.enabled = !watsonConversationIdLocked;
                    EditorGUILayout.PropertyField(watsonConversationId, new GUIContent("Workspace Id"));
                    GUI.enabled = true;
                    watsonConversationIdLocked = EditorGUILayout.Toggle(watsonConversationIdLocked, "IN LockButton", new GUILayoutOption[] { GUILayout.MaxWidth(20) });
                    EditorGUILayout.EndHorizontal();
                }

                EditorGUI.indentLevel--;

                EditorGUILayout.LabelField("Status: " + workspace.WatsonConversationManager.SyncStatus);
                if (!string.IsNullOrEmpty(workspace.WatsonConversationManager.LastSyncTime))
                {
                    EditorGUILayout.LabelField("Last Sync: " + workspace.WatsonConversationManager.LastSyncTime);
                }

                if (workspace.WatsonConversationManager.IsSyncing)
                {
                    if (GUILayout.Button("Cancel Conversation Sync"))
                    {
                        EditorManager.Instance.CancelWatsonConversationSync(workspace);
                    }
                }
                else
                {
                    if (GUILayout.Button("Sync Watson Conversation"))
                    {
                        EditorManager.Instance.SyncWatsonConversation(workspace);
                    }
                }
            }

            EditorGUILayout.Space();

            rect = EditorGUILayout.GetControlRect(false, 1);
            EditorGUI.DrawRect(rect, Color.grey);
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            intentList.DoLayoutList();

            EditorGUIUtility.labelWidth = 0;

            serializedObject.ApplyModifiedProperties();

            if (EditorGUI.EndChangeCheck())
            {
                changed = true;
            }
        }
Exemplo n.º 20
0
        public void SyncWatsonSpeechToText(LexiconWorkspace workspace)
        {
            WorkspaceSyncData syncData = WorkspaceSyncData.Create(workspace);

            SyncWatsonSpeechToText(workspace, syncData);
        }
Exemplo n.º 21
0
        public void SyncWatsonConversation(LexiconWorkspace workspace)
        {
            WorkspaceSyncData syncData = WorkspaceSyncData.Create(workspace);

            SyncWatsonConversation(workspace, syncData);
        }
        public static WorkspaceSyncData Create(LexiconWorkspace workspace)
        {
            WorkspaceSyncData syncData = new WorkspaceSyncData();

            foreach (LexiconIntent intent in workspace.Intents)
            {
                if (string.IsNullOrEmpty(intent.IntentName))
                {
                    Debug.LogError("Found intent with empty name, skipping");
                    continue;
                }

                IntentData intentData;
                if (syncData.intentData.TryGetValue(intent.IntentName, out intentData))
                {
                    // Intent exists, add any new phrases
                    foreach (string phrase in intent.Phrases)
                    {
                        if (intentData.phrases.FindIndex(x => x.Equals(phrase, StringComparison.OrdinalIgnoreCase)) < 0)
                        {
                            // Phrase does not exist, add it
                            intentData.phrases.Add(phrase);
                        }
                    }
                }
                else
                {
                    // Intent does not exist, add it
                    intentData      = new IntentData();
                    intentData.name = intent.IntentName;
                    intentData.phrases.AddRange(intent.Phrases);
                    syncData.intentData.Add(intent.IntentName, intentData);
                }
            }

            foreach (LexiconEntity entity in workspace.GetUniqueEntities())
            {
                if (entity == null)
                {
                    continue;
                }

                if (string.IsNullOrEmpty(entity.EntityName))
                {
                    Debug.LogError("Found entity with empty name, skipping");
                    continue;
                }

                EntityData entityData;
                if (syncData.entityData.TryGetValue(entity.EntityName, out entityData))
                {
                    // Entity exists, add any new values
                    foreach (LexiconEntityValue entityValue in entity.Values)
                    {
                        List <string> synonyms   = entityValue.GetSynonymList();
                        int           valueIndex = entityData.values.FindIndex(x => x.name.Equals(entityValue.ValueName, StringComparison.OrdinalIgnoreCase));
                        if (valueIndex < 0)
                        {
                            // Value does not exist, add it
                            EntityValueData entityValueData = new EntityValueData();
                            entityValueData.name = entityValue.ValueName;
                            entityValueData.synonyms.AddRange(synonyms);
                            entityData.values.Add(entityValueData);
                        }
                        else
                        {
                            // Value exists, add any new synonyms
                            EntityValueData entityValueData = entityData.values[valueIndex];
                            foreach (string synonym in synonyms)
                            {
                                if (entityValueData.synonyms.FindIndex(x => x.Equals(synonym, StringComparison.OrdinalIgnoreCase)) < 0)
                                {
                                    // Synonym does not exist, add it
                                    entityValueData.synonyms.Add(synonym);
                                }
                            }
                        }
                    }
                }
                else
                {
                    // Entity does not exist, add it
                    entityData      = new EntityData();
                    entityData.name = entity.EntityName;
                    if (entity.Values != null)
                    {
                        foreach (LexiconEntityValue entityValue in entity.Values)
                        {
                            List <string>   synonyms        = entityValue.GetSynonymList();
                            EntityValueData entityValueData = new EntityValueData();
                            entityValueData.name = entityValue.ValueName;
                            entityValueData.synonyms.AddRange(synonyms);
                            entityData.values.Add(entityValueData);
                        }
                    }
                    syncData.entityData.Add(entity.EntityName, entityData);
                }
            }

            syncData.customWords.AddRange(workspace.CustomWords);

            //foreach (LexiconCustomWord customWord in workspace.customWords)
            //{
            //    syncData.customWords.Add(customWord.word, customWord);
            //}

            syncData.dataIsDirty = true;

            return(syncData);
        }
Exemplo n.º 23
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            EditorGUILayout.Space();

            //EditorGUIUtility.labelWidth = 100;

            EditorGUILayout.PropertyField(workspace);
            EditorGUILayout.Space();

            LexiconWorkspace assignedWorkspace = ((LexiconRuntime)target).Workspace;

            if (assignedWorkspace != null)
            {
                EditorGUIUtility.labelWidth = 200;

                if (assignedWorkspace.UseWatsonSpeechToText)
                {
                    EditorGUILayout.PropertyField(speechToTextActive);
                }

                if (assignedWorkspace.UseWatsonConversation)
                {
                    EditorGUILayout.PropertyField(conversationActive);
                }

                EditorGUILayout.Space();

                if (assignedWorkspace.UseWatsonSpeechToText)
                {
                    EditorGUILayout.LabelField("Speech to Text Settings", EditorStyles.boldLabel);
                    EditorGUILayout.PropertyField(speechConfidenceThreshold);
                    if (assignedWorkspace.WatsonSpeechToTextManager.CreateCustomModel)
                    {
                        EditorGUILayout.PropertyField(useCustomLanguageModel);
                        if (useCustomLanguageModel.boolValue)
                        {
                            EditorGUILayout.PropertyField(customLanguageModelWeight);
                        }
                    }
                    EditorGUILayout.PropertyField(keywordConfidenceThreshold);
                    EditorGUILayout.PropertyField(keywords, true);
                }

                EditorGUILayout.Space();

                if (assignedWorkspace.UseWatsonConversation)
                {
                    EditorGUILayout.LabelField("Conversation Settings", EditorStyles.boldLabel);
                    EditorGUILayout.PropertyField(intentConfidenceThreshold);
                    EditorGUILayout.PropertyField(matchMultipleIntents);
                }

                EditorGUILayout.Space();
                EditorGUILayout.LabelField("Calibration", EditorStyles.boldLabel);
                EditorGUILayout.PropertyField(silenceThreshold);
                EditorGUILayout.PropertyField(timestampOffset);
                EditorGUILayout.PropertyField(useDwellPosition);
            }

            EditorGUIUtility.labelWidth = 0;

            serializedObject.ApplyModifiedProperties();
        }