Skip to content

Commit

Permalink
Added routers train nlp_nlu
Browse files Browse the repository at this point in the history
  • Loading branch information
dyohan9 committed Aug 21, 2019
1 parent c215d81 commit d90d571
Show file tree
Hide file tree
Showing 2 changed files with 182 additions and 0 deletions.
177 changes: 177 additions & 0 deletions bothub/api/v2/nlp/views.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
import base64
from django.db import models
from rest_framework import mixins
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.viewsets import GenericViewSet
from rest_framework.permissions import AllowAny

from bothub.api.v2.repository.serializers import RepositorySerializer
from bothub.authentication.models import User
from bothub.common.models import RepositoryAuthorization
from bothub.common.models import RepositoryUpdate
from bothub.common.models import Repository
from bothub.common import languages


class RepositoryAuthorizationTrainViewSet(
mixins.RetrieveModelMixin,
mixins.CreateModelMixin,
GenericViewSet):
queryset = RepositoryAuthorization.objects
permission_classes = [AllowAny]
Expand All @@ -32,6 +39,153 @@ def retrieve(self, request, *args, **kwargs):
}
return Response(data)

@action(
detail=True,
methods=['POST'],
url_name='start_training',
lookup_field=[])
def starttraining(self, request, **kwargs):
repository = RepositoryUpdate.objects.get(
id=request.data.get('update_id')
)
examples = []
for example in repository.examples:
examples.append(
{
'example_id': example.id,
'example_intent': example.intent
}
)
repository.start_training(
User.objects.get(id=request.data.get('by_user'))
)

label_examples_query = []

for label_examples in repository.examples.filter(
entities__entity__label__isnull=False
).annotate(
entities_count=models.Count('entities')
).filter(
entities_count__gt=0):
label_examples_query.append(
{
'example_id': label_examples.id
}
)

data = {
'language': repository.language,
'update_id': repository.id,
'repository_uuid': str(repository.repository.uuid),
'examples': examples,
'label_examples_query': label_examples_query,
'intent': repository.intents,
'algorithm': repository.algorithm,
'use_name_entities': repository.use_name_entities,
'use_competing_intents': repository.use_competing_intents,
'ALGORITHM_STATISTICAL_MODEL':
Repository.ALGORITHM_STATISTICAL_MODEL,
'ALGORITHM_NEURAL_NETWORK_EXTERNAL':
Repository.ALGORITHM_NEURAL_NETWORK_EXTERNAL
}
return Response(data)

@action(
detail=True,
methods=['GET'],
url_name='gettext',
lookup_field=[])
def gettext(self, request, **kwargs):
repository = RepositoryUpdate.objects.get(
id=request.query_params.get('update_id')
).examples.get(
id=request.query_params.get('example_id')
).get_text(
request.query_params.get('language')
)

data = {
'get_text': repository
}
return Response(data)

@action(
detail=True,
methods=['GET'],
url_name='get_entities',
lookup_field=[])
def getentities(self, request, **kwargs):
repository = RepositoryUpdate.objects.get(
id=request.query_params.get('update_id')
).examples.get(
id=request.query_params.get('example_id')
).get_entities(
request.query_params.get('language')
)

entities = []

for entit in repository:
entities.append(entit.rasa_nlu_data)

data = {
'entities': entities,
}
return Response(data)

@action(
detail=True,
methods=['GET'],
url_name='get_entities_label',
lookup_field=[])
def getentitieslabel(self, request, **kwargs):
repository = RepositoryUpdate.objects.get(
id=request.query_params.get('update_id')
).examples.get(
id=request.query_params.get('example_id')
).get_entities(
request.query_params.get('language')
)

entities = []

for example_entity in filter(lambda ee: ee.entity.label, repository):
entities.append(
example_entity.get_rasa_nlu_data(
label_as_entity=True
)
)

data = {
'entities': entities,
}
return Response(data)

@action(
detail=True,
methods=['POST'],
url_name='train_fail',
lookup_field=[])
def trainfail(self, request, **kwargs):
RepositoryUpdate.objects.get(
id=request.data.get('update_id')
).train_fail()
return Response({})

@action(
detail=True,
methods=['POST'],
url_name='training_log',
lookup_field=[])
def traininglog(self, request, **kwargs):
repository = RepositoryUpdate.objects.get(
id=request.data.get('update_id')
)
repository.training_log = request.data.get('training_log')
repository.save(update_fields=['training_log'])
return Response({})


class RepositoryAuthorizationParseViewSet(
mixins.RetrieveModelMixin,
Expand Down Expand Up @@ -113,3 +267,26 @@ def list(self, request, *args, **kwargs):
],
}
return Response(data)


class RepositoryUpdateInterpretersViewSet(
mixins.RetrieveModelMixin,
mixins.CreateModelMixin,
GenericViewSet):
queryset = RepositoryUpdate.objects
permission_classes = [AllowAny]

def retrieve(self, request, *args, **kwargs):
update = self.get_object()
data = {
'update_id': update.id,
'repository_uuid': update.repository.uuid,
'bot_data': str(update.bot_data)
}
return Response(data)

def create(self, request, *args, **kwargs):
repository = self.queryset.get(pk=request.data.get('id'))
bot_data = base64.b64decode(request.data.get('bot_data'))
repository.save_training(bot_data)
return Response({})
5 changes: 5 additions & 0 deletions bothub/api/v2/routers.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from .nlp.views import RepositoryAuthorizationInfoViewSet
from .nlp.views import RepositoryAuthorizationEvaluateViewSet
from .nlp.views import NLPLangsViewSet
from .nlp.views import RepositoryUpdateInterpretersViewSet
from .examples.views import ExamplesViewSet
from .evaluate.views import EvaluateViewSet
from .evaluate.views import ResultsListViewSet
Expand Down Expand Up @@ -138,6 +139,10 @@ def get_lookup_regex(self, viewset, lookup_prefix=''):
'repository/nlp/authorization/langs',
NLPLangsViewSet
)
router.register(
'repository/nlp/update_interpreters',
RepositoryUpdateInterpretersViewSet
)
router.register('account/login', LoginViewSet)
router.register('account/register', RegisterUserViewSet)
router.register('account/change-password', ChangePasswordViewSet)
Expand Down

0 comments on commit d90d571

Please sign in to comment.