File: discovery_v2.py

package info (click to toggle)
python-watson-developer-cloud 9.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,204 kB
  • sloc: python: 39,056; makefile: 7
file content (84 lines) | stat: -rw-r--r-- 3,254 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import json
import os
from ibm_watson import DiscoveryV2
from ibm_watson.discovery_v2 import TrainingExample
from ibm_cloud_sdk_core.authenticators import CloudPakForDataAuthenticator, BearerTokenAuthenticator

## Important: Discovery v2 is only available on Cloud Pak for Data. ##

## Authentication ##
## Option 1: username/password
authenticator = CloudPakForDataAuthenticator('<your username>',
                                             '<your password>',
                                             '<url for authentication>',
                                             disable_ssl_verification=True)

## Option 2: bearer token
authenticator = BearerTokenAuthenticator('your bearer token')

## Initialize discovery instance ##
discovery = DiscoveryV2(version='2019-11-22', authenticator=authenticator)
discovery.set_service_url(
    '<service url>'
)
discovery.set_disable_ssl_verification(True)

PROJECT_ID = 'your project id'
## List Collections ##
collections = discovery.list_collections(project_id=PROJECT_ID).get_result()
print(json.dumps(collections, indent=2))

## Component settings ##
settings_result = discovery.get_component_settings(
    project_id=PROJECT_ID).get_result()
print(json.dumps(settings_result, indent=2))

## Add Document ##
COLLECTION_ID = 'your collection id'
with open(os.path.join(os.getcwd(), '..', 'resources',
                       'simple.html')) as fileinfo:
    add_document_result = discovery.add_document(project_id=PROJECT_ID,
                                                 collection_id=COLLECTION_ID,
                                                 file=fileinfo).get_result()
print(json.dumps(add_document_result, indent=2))
document_id = add_document_result.get('document_id')

## Create Training Data ##
training_example = TrainingExample(document_id=document_id,
                                   collection_id=COLLECTION_ID,
                                   relevance=1)
create_query = discovery.create_training_query(
    project_id=PROJECT_ID,
    natural_language_query='How is the weather today?',
    examples=[training_example]).get_result()
print(json.dumps(create_query, indent=2))

training_queries = discovery.list_training_queries(
    project_id=PROJECT_ID).get_result()
print(json.dumps(training_queries, indent=2))

## Queries ##
query_result = discovery.query(
    project_id=PROJECT_ID,
    collection_ids=[COLLECTION_ID],
    natural_language_query='How is the weather today?').get_result()
print(json.dumps(query_result, indent=2))

autocomplete_result = discovery.get_autocompletion(
    project_id=PROJECT_ID, prefix="The content").get_result()
print(json.dumps(autocomplete_result, indent=2))

query_notices_result = discovery.query_notices(
    project_id=PROJECT_ID, natural_language_query='warning').get_result()
print(json.dumps(query_notices_result, indent=2))

list_fields = discovery.list_fields(project_id=PROJECT_ID).get_result()
print(json.dumps(list_fields, indent=2))

## Cleanup ##
discovery.delete_training_queries(project_id=PROJECT_ID).get_result()

delete_document_result = discovery.delete_document(
    project_id=PROJECT_ID, collection_id=COLLECTION_ID,
    document_id=document_id).get_result()
print(json.dumps(delete_document_result, indent=2))