Skip to content

Commit

Permalink
Merge 95deaf6 into 496e9c3
Browse files Browse the repository at this point in the history
  • Loading branch information
dyohan9 committed Oct 15, 2019
2 parents 496e9c3 + 95deaf6 commit dfc1c3c
Show file tree
Hide file tree
Showing 8 changed files with 127 additions and 259 deletions.
117 changes: 68 additions & 49 deletions bothub/api/v2/nlp/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,62 +106,78 @@ def start_training(self, request, **kwargs):
}
)

@action(detail=True, methods=["GET"], url_name="gettext", lookup_field=[])
def get_text(self, request, **kwargs):
@action(
detail=True,
methods=["GET"],
url_name="get_entities_and_labels",
lookup_field=[],
)
def get_entities_and_labels(self, request, **kwargs):
check_auth(request)

try:
update_id = int(request.query_params.get("update_id"))
example_id = int(request.query_params.get("example_id"))
examples = request.data.get("examples")
label_examples_query = request.data.get("label_examples_query")
update_id = request.data.get("update_id")
except ValueError:
raise exceptions.NotFound()

repository = get_object_or_404(
get_object_or_404(RepositoryUpdate, pk=update_id).examples, pk=example_id
).get_text(request.query_params.get("language"))
repository_update = RepositoryUpdate.objects.get(pk=update_id)

return Response({"get_text": repository})
examples_return = []
label_examples = []

@action(detail=True, methods=["GET"], url_name="get_entities", lookup_field=[])
def get_entities(self, request, **kwargs):
check_auth(request)

try:
update_id = int(request.query_params.get("update_id"))
example_id = int(request.query_params.get("example_id"))
except ValueError:
raise exceptions.NotFound()
for example in examples:
try:
repository = repository_update.examples.get(
pk=example.get("example_id")
)

repository = get_object_or_404(
get_object_or_404(RepositoryUpdate, pk=update_id).examples, pk=example_id
).get_entities(request.query_params.get("language"))
get_entities = repository.get_entities(
request.query_params.get("language")
)

entities = [entit.rasa_nlu_data for entit in repository]
get_text = repository.get_text(request.query_params.get("language"))

return Response({"entities": entities})
examples_return.append(
{
"text": get_text,
"intent": example.get("example_intent"),
"entities": [entit.rasa_nlu_data for entit in get_entities],
}
)

@action(
detail=True, methods=["GET"], url_name="get_entities_label", lookup_field=[]
)
def get_entities_label(self, request, **kwargs):
check_auth(request)
except Exception:
pass

try:
update_id = int(request.query_params.get("update_id"))
example_id = int(request.query_params.get("example_id"))
except ValueError:
raise exceptions.NotFound()

repository = get_object_or_404(
get_object_or_404(RepositoryUpdate, pk=update_id).examples, pk=example_id
).get_entities(request.query_params.get("language"))
for example in label_examples_query:
try:
repository_examples = repository_update.examples.get(
pk=example.get("example_id")
)

entities = [
example_entity.get_rasa_nlu_data(label_as_entity=True)
for example_entity in filter(lambda ee: ee.entity.label, repository)
]
entities = [
example_entity.get_rasa_nlu_data(label_as_entity=True)
for example_entity in filter(
lambda ee: ee.entity.label,
repository_examples.get_entities(
request.query_params.get("language")
),
)
]

label_examples.append(
{
"entities": entities,
"text": repository_examples.get_text(
request.query_params.get("language")
),
}
)
except Exception:
pass

return Response({"entities": entities})
return Response({"examples": examples_return, "label_examples": label_examples})

@action(detail=True, methods=["POST"], url_name="train_fail", lookup_field=[])
def train_fail(self, request, **kwargs):
Expand Down Expand Up @@ -195,13 +211,16 @@ def retrieve(self, request, *args, **kwargs):
update = repository.last_trained_update(
str(request.query_params.get("language"))
)
return Response(
{
"update": False if update is None else True,
"update_id": update.id,
"language": update.language,
}
)
try:
return Response(
{
"update": False if update is None else True,
"update_id": update.id,
"language": update.language,
}
)
except Exception:
return Response({}, status=400)

@action(detail=True, methods=["GET"], url_name="repository_entity", lookup_field=[])
def repository_entity(self, request, **kwargs):
Expand All @@ -217,7 +236,7 @@ def repository_entity(self, request, **kwargs):

return Response(
{
"label": repository_entity.label,
"label": True if repository_entity.label else False,
"label_value": repository_entity.label.value,
}
)
Expand Down
116 changes: 0 additions & 116 deletions bothub/api/v2/tests/test_nlp.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,122 +66,6 @@ def test_not_auth(self):
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)


class TrainGetTextTestCase(TestCase):
def setUp(self):
self.factory = RequestFactory()

self.owner, self.owner_token = create_user_and_token("owner")
self.user, self.user_token = create_user_and_token()

self.repository = Repository.objects.create(
owner=self.owner,
name="Testing",
slug="test",
language=languages.LANGUAGE_EN,
)

self.repository_authorization = RepositoryAuthorization.objects.create(
user=self.user, repository=self.repository, role=3
)

self.repository_update = RepositoryUpdate.objects.create(
repository=self.repository,
language=languages.LANGUAGE_EN,
algorithm="statistical_model",
)

self.repository_examples = RepositoryExample.objects.create(
repository_update=self.repository_update, text="hello", intent="greet"
)

def request(self, token):
authorization_header = {"HTTP_AUTHORIZATION": "Bearer {}".format(token)}
request = self.factory.get(
"/v2/repository/nlp/authorization/train/get_text/"
"?update_id={}&example_id={}&language={}".format(
self.repository_update.pk,
self.repository_examples.pk,
languages.LANGUAGE_EN,
),
**authorization_header
)
response = RepositoryAuthorizationTrainViewSet.as_view({"get": "get_text"})(
request
)
response.render()
content_data = json.loads(response.content)
return (response, content_data)

def test_ok(self):
response, content_data = self.request(str(self.repository_authorization.uuid))
self.assertEqual(content_data.get("get_text"), "hello")
self.assertEqual(response.status_code, status.HTTP_200_OK)

def test_not_auth(self):
response, content_data = self.request("NO-TOKEN")
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)


class TrainGetEntitiesTestCase(TestCase):
def setUp(self):
self.factory = RequestFactory()

self.owner, self.owner_token = create_user_and_token("owner")
self.user, self.user_token = create_user_and_token()

self.repository = Repository.objects.create(
owner=self.owner,
name="Testing",
slug="test",
language=languages.LANGUAGE_EN,
)

self.repository_authorization = RepositoryAuthorization.objects.create(
user=self.user, repository=self.repository, role=3
)

self.repository_update = RepositoryUpdate.objects.create(
repository=self.repository,
language=languages.LANGUAGE_EN,
algorithm="statistical_model",
)

self.repository_examples = RepositoryExample.objects.create(
repository_update=self.repository_update, text="hello", intent="greet"
)

RepositoryExampleEntity.objects.create(
repository_example=self.repository_examples, start=11, end=18, entity="name"
)

def request(self, token):
authorization_header = {"HTTP_AUTHORIZATION": "Bearer {}".format(token)}
request = self.factory.get(
"/v2/repository/nlp/authorization/train/get_entities/"
"?update_id={}&example_id={}&language={}".format(
self.repository_update.pk,
self.repository_examples.pk,
languages.LANGUAGE_EN,
),
**authorization_header
)
response = RepositoryAuthorizationTrainViewSet.as_view({"get": "get_entities"})(
request
)
response.render()
content_data = json.loads(response.content)
return (response, content_data)

def test_ok(self):
response, content_data = self.request(str(self.repository_authorization.uuid))
self.assertEqual(len(content_data.get("entities")), 1)
self.assertEqual(response.status_code, status.HTTP_200_OK)

def test_not_auth(self):
response, content_data = self.request("NO-TOKEN")
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)


class TrainFailTestCase(TestCase):
def setUp(self):
self.factory = RequestFactory()
Expand Down
27 changes: 0 additions & 27 deletions bothub/common/migrations/0032_repository_total_updates.py

This file was deleted.

21 changes: 0 additions & 21 deletions bothub/common/migrations/0033_auto_20190816_2030.py

This file was deleted.

16 changes: 0 additions & 16 deletions bothub/common/migrations/0034_repository_nlp_server.py

This file was deleted.

29 changes: 0 additions & 29 deletions bothub/common/migrations/0035_auto_20190902_1455.py

This file was deleted.

Loading

0 comments on commit dfc1c3c

Please sign in to comment.