Source code for watson_developer_cloud.alchemy_language_v1

# Copyright 2015 IBM All Rights Reserved.
#
# 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.
"""
The AlchemyAPI Language service
(http://www.alchemyapi.com/products/alchemylanguage)
"""

from .watson_developer_cloud_service import WatsonDeveloperCloudService


[docs]class AlchemyLanguageV1(WatsonDeveloperCloudService): default_url = 'https://gateway-a.watsonplatform.net/calls' def __init__(self, url=default_url, **kwargs): WatsonDeveloperCloudService.__init__(self, 'alchemy_api', url, **kwargs)
[docs] def author(self, html=None, url=None, language=None): params = {'language': language} return self._alchemy_html_request('GetAuthor', html=html, url=url, params=params)
[docs] def authors(self, html=None, url=None, language=None): params = {'language': language} return self._alchemy_html_request('GetAuthors', html=html, url=url, params=params)
[docs] def keywords(self, html=None, text=None, url=None, strict_extract_mode=False, sentiment=False, show_source_text=False, max_keywords=50, language=None): params = {'keywordExtractMode': 'strict' if strict_extract_mode else 'normal', 'sentiment': sentiment, 'showSourceText': show_source_text, 'maxRetrieve': max_keywords, 'language': language} return self._alchemy_html_request('GetRankedKeywords', html=html, text=text, url=url, params=params)
[docs] def concepts(self, html=None, text=None, url=None, max_items=8, linked_data=True, show_source_text=False, language=None): params = {'maxRetrieve': max_items, 'linkedData': linked_data, 'showSourceText': show_source_text, 'langauge': language} return self._alchemy_html_request('GetRankedConcepts', html=html, text=text, url=url, params=params)
[docs] def entities(self, html=None, text=None, url=None, disambiguate=True, linked_data=True, coreference=True, quotations=False, sentiment=False, show_source_text=False, max_items=50, language=None): params = {'disambiguate': disambiguate, 'linkedData': linked_data, 'coreference': coreference, 'quotations': quotations, 'sentiment': sentiment, 'showSourceText': show_source_text, 'maxRetrieve': max_items, 'language': language} return self._alchemy_html_request('GetRankedNamedEntities', html=html, text=text, url=url, params=params)
[docs] def emotion(self, html=None, text=None, url=None, show_source_text=False, source_text_type=None, constraint_query=None, xpath_query=None, language=None): params = {'showSourceText': show_source_text, 'sourceText': source_text_type, 'cquery': constraint_query, 'xpath': xpath_query, 'language': language} return self._alchemy_html_request('GetEmotion', html=html, text=text, url=url, params=params)
[docs] def typed_relations(self, html=None, text=None, url=None, model=None): params = {'model': model} return self._alchemy_html_request('GetTypedRelations', html=html, text=text, url=url, params=params)
[docs] def relations(self, html=None, text=None, url=None, sentiment=False, keywords=False, entities=False, require_entities=False, sentiment_excludes_entities=True, disambiguate=True, linked_data=True, coreference=True, show_source_text=False, max_items=50, language=None): params = {'sentiment': sentiment, 'keywords': keywords, 'entities': entities, 'requireEntities': require_entities, 'sentimentExcludesEntities': sentiment_excludes_entities, 'disambiguate': disambiguate, 'linkedData': linked_data, 'coreference': coreference, 'showSourceText': show_source_text, 'maxRetrieve': max_items, 'language': language} return self._alchemy_html_request('GetRelations', html=html, text=text, url=url, params=params)
[docs] def language(self, html=None, text=None, url=None): return self._alchemy_html_request('GetLanguage', html=html, text=text, url=url)
[docs] def text(self, html=None, url=None, use_metadata=True, extract_links=False): params = {'useMetadata': use_metadata, 'extractLinks': extract_links} return self._alchemy_html_request('GetText', html=html, url=url, params=params)
[docs] def raw_text(self, html=None, url=None): return self._alchemy_html_request('GetRawText', html=html, url=url)
[docs] def category(self, html=None, text=None, url=None, show_source_text=False, language=None): params = {'showSourceText': show_source_text, 'language': language} return self._alchemy_html_request('GetCategory', html=html, text=text, url=url, params=params)
[docs] def title(self, html=None, url=None, use_metadata=True, language=None): params = {'useMetadata': use_metadata, 'language': language} return self._alchemy_html_request('GetTitle', html=html, url=url, params=params)
[docs] def feeds(self, html=None, url=None): return self._alchemy_html_request('GetFeedLinks', html=html, url=url)
[docs] def microformats(self, html=None, url=None): return self._alchemy_html_request('GetMicroformatData', html=html, url=url)
[docs] def publication_date(self, html=None, url=None): return self._alchemy_html_request('GetPubDate', html=html, url=url)
[docs] def taxonomy(self, html=None, text=None, url=None, show_source_text=False, source_text_type=None, constraint_query=None, xpath_query=None, base_url=None, language=None): """ source_text_type -> where to obtain the text that will be processed by this API call. AlchemyAPI supports multiple modes of text extraction: web page cleaning (removes ads, navigation links, etc.), raw text extraction (processes all web page text, including ads / nav links), visual constraint queries, and XPath queries. Possible values: cleaned_or_raw : cleaning enabled, fallback to raw when cleaning produces no text (default) cleaned : operate on 'cleaned' web page text (web page cleaning enabled) raw : operate on raw web page text (web page cleaning disabled) cquery : operate on the results of a visual constraints query Note: The 'constraint_query' argument must also be set to a valid visual constraints query. xpath : operate on the results of an XPath query Note: The 'xpath' http argument must also be set to a valid XPath query. constraint_query -> a visual constraints query to apply to the web page. xpath -> an XPath query to apply to the web page. base_url -> rel-tag output base http url (must be uri-argument encoded) """ params = {'showSourceText': show_source_text, 'sourceText': source_text_type, 'cquery': constraint_query, 'xpath': xpath_query, 'base_url': base_url, 'language': language} return self._alchemy_html_request('GetRankedTaxonomy', html=html, text=text, url=url, params=params)
# Some of these options don't appear in the API documentation but are supported by the previous AlchemyAPI SDK
[docs] def combined(self, html=None, text=None, url=None, extract=None, disambiguate=True, linked_data=True, coreference=True, quotations=False, sentiment=False, show_source_text=False, max_items=50, base_url=None, language=None): """ Combined call for page-image, entity, keyword, title, author, taxonomy, concept, doc-emotion. INPUT: extract -> List or comma separated string Possible values: page-image, entity, keyword, title, author, taxonomy, concept default : entity, keyword, taxonomy, concept disambiguate -> disambiguate detected entities Possible values: True : enabled (default) False : disabled linked_data -> include Linked Data content links with disambiguated entities Possible values : True : enabled (default) False : disabled coreference -> resolve he/she/etc coreferences into detected entities Possible values: True : enabled (default) False : disabled quotations -> enable quotations extraction Possible values: True : enabled False : disabled (default) sentiment -> enable entity-level sentiment analysis Possible values: True : enabled False : disabled (default) show_source_text -> include the original 'source text' the entities were extracted from within the API response Possible values: True : enabled False : disabled (default) max_items -> maximum number of named entities to extract default : 50 base_url -> rel-tag output base http url OUTPUT: The response, already converted from JSON to a Python object. """ if isinstance(extract, list): extract = ','.join(extract) params = {'extract': extract, 'disambiguate': disambiguate, 'linkedData': linked_data, 'coreference': coreference, 'quotations': quotations, 'sentiment': sentiment, 'showSourceText': show_source_text, 'maxRetrieve': max_items, 'baseUrl': base_url, 'language': language} return self._alchemy_html_request('GetCombinedData', html=html, text=text, url=url, params=params)
[docs] def sentiment(self, html=None, text=None, url=None, language=None): params = {'language': language} return self._alchemy_html_request('GetTextSentiment', html=html, text=text, url=url, params=params)
[docs] def targeted_sentiment(self, targets, html=None, text=None, url=None, language=None): if isinstance(targets, list): targets = '|'.join(targets) params = {'targets': targets, 'language': language} return self._alchemy_html_request('GetTargetedSentiment', html=html, text=text, url=url, params=params)