blob: 4f501099786ae48b5f879852c37ebc1c122f9d31 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Google Cloud Natural Language Operators &mdash; Airflow Documentation</title>
<script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/language_data.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="Google Cloud Spanner Operators" href="spanner.html" />
<link rel="prev" title="Google Cloud Storage Operators" href="gcs.html" />
<script>
document.addEventListener('DOMContentLoaded', function() {
var el = document.getElementById('changelog');
if (el !== null ) {
// [AIRFLOW-...]
el.innerHTML = el.innerHTML.replace(
/\[(AIRFLOW-[\d]+)\]/g,
`<a href="https://issues.apache.org/jira/browse/$1">[$1]</a>`
);
// (#...)
el.innerHTML = el.innerHTML.replace(
/\(#([\d]+)\)/g,
`<a href="https://github.com/apache/airflow/pull/$1">(#$1)</a>`
);
};
})
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-140539454-1']);
_gaq.push(['_trackPageview']);
</script>
<style>
.example-header {
position: relative;
background: #9AAA7A;
padding: 8px 16px;
margin-bottom: 0;
}
.example-header--with-button {
padding-right: 166px;
}
.example-header:after{
content: '';
display: table;
clear: both;
}
.example-title {
display:block;
padding: 4px;
margin-right: 16px;
color: white;
overflow-x: auto;
}
.example-header-button {
top: 8px;
right: 16px;
position: absolute;
}
.example-header + .highlight-python {
margin-top: 0 !important;
}
.viewcode-button {
display: inline-block;
padding: 8px 16px;
border: 0;
margin: 0;
outline: 0;
border-radius: 2px;
-webkit-box-shadow: 0 3px 5px 0 rgba(0,0,0,.3);
box-shadow: 0 3px 6px 0 rgba(0,0,0,.3);
color: #404040;
background-color: #e7e7e7;
cursor: pointer;
font-size: 16px;
font-weight: 500;
line-height: 1;
text-decoration: none;
text-overflow: ellipsis;
overflow: hidden;
text-transform: uppercase;
-webkit-transition: background-color .2s;
transition: background-color .2s;
vertical-align: middle;
white-space: nowrap;
}
.viewcode-button:visited {
color: #404040;
}
.viewcode-button:hover, .viewcode-button:focus {
color: #404040;
background-color: #d6d6d6;
}
</style>
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../index.html" class="icon icon-home"> Airflow
</a>
<div class="version">
1.10.5
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../project.html">Project</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../license.html">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../start.html">Quick Start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../tutorial.html">Tutorial</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">How-to Guides</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../set-config.html">Setting Configuration Options</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../initialize-database.html">Initializing a Database Backend</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../index.html">Using Operators</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../bash.html">BashOperator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../dingding.html">Dingding Operators</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="index.html">Google Cloud Operators</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="bigtable.html">Google Cloud Bigtable Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="cloud_build.html">Google Cloud Build Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="compute.html">Google Compute Engine Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="function.html">Google Cloud Functions Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="gcs.html">Google Cloud Storage Operators</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">Google Cloud Natural Language Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="spanner.html">Google Cloud Spanner Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="speech.html">Google Cloud Text to Speech Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="speech.html#google-cloud-speech-to-text-operators">Google Cloud Speech to Text Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="sql.html">Google Cloud Sql Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="transfer.html">Google Cloud Transfer Service Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="translate.html">Google Cloud Translate Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="translate-speech.html">Google Cloud Speech Translate Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="video.html">Google Cloud Video Intelligence Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="vision.html">Google Cloud Vision Operators</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../python.html">PythonOperator</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../connection/index.html">Managing Connections</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../secure-connections.html">Securing Connections</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../secure-connections.html#rotating-encryption-keys">Rotating encryption keys</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../write-logs.html">Writing Logs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../executor/use-celery.html">Celery Executor</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../executor/use-dask.html">Dask Executor</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../executor/use-mesos.html">Scaling Out with Mesos (community contributed)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../run-behind-proxy.html">Running Airflow behind a reverse proxy</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../run-with-systemd.html">Running Airflow with systemd</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../run-with-upstart.html">Running Airflow with upstart</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../use-test-config.html">Using the Test Mode Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../check-health.html">Checking Airflow Health Status</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../define_extra_link.html">Define an operator extra link</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../tracking-user-activity.html">Tracking User Activity</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../ui.html">UI / Screenshots</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../profiling.html">Data Profiling</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../cli.html">Command Line Interface Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../scheduler.html">Scheduling &amp; Triggers</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../plugins.html">Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../security.html">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../timezone.html">Time zones</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../api.html">REST API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../integration.html">Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../metrics.html">Metrics</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../kubernetes.html">Kubernetes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../lineage.html">Lineage</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../changelog.html">Changelog</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../macros.html">Macros reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../_api/index.html">Python API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../privacy_notice.html">Privacy Notice</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">Airflow</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../../index.html">How-to Guides</a> &raquo;</li>
<li><a href="../index.html">Using Operators</a> &raquo;</li>
<li><a href="index.html">Google Cloud Operators</a> &raquo;</li>
<li>Google Cloud Natural Language Operators</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/howto/operator/gcp/natural_language.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<blockquote>
<div></div></blockquote>
<div class="section" id="google-cloud-natural-language-operators">
<h1>Google Cloud Natural Language Operators<a class="headerlink" href="#google-cloud-natural-language-operators" title="Permalink to this headline"></a></h1>
<p>The <a class="reference external" href="https://cloud.google.com/natural-language/">Google Cloud Natural Language</a>
can be used to reveal the structure and meaning of text via powerful machine
learning models. You can use it to extract information about people, places,
events and much more, mentioned in text documents, news articles or blog posts.
You can use it to understand sentiment about your product on social media or
parse intent from customer conversations happening in a call center or a
messaging app.</p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#prerequisite-tasks" id="id1">Prerequisite Tasks</a></p></li>
<li><p><a class="reference internal" href="#documents" id="id2">Documents</a></p></li>
<li><p><a class="reference internal" href="#analyzing-entities" id="id3">Analyzing Entities</a></p></li>
<li><p><a class="reference internal" href="#analyzing-entity-sentiment" id="id4">Analyzing Entity Sentiment</a></p></li>
<li><p><a class="reference internal" href="#analyzing-sentiment" id="id5">Analyzing Sentiment</a></p></li>
<li><p><a class="reference internal" href="#classifying-content" id="id6">Classifying Content</a></p></li>
<li><p><a class="reference internal" href="#reference" id="id7">Reference</a></p></li>
</ul>
</div>
<div class="section" id="prerequisite-tasks">
<h2><a class="toc-backref" href="#id1">Prerequisite Tasks</a><a class="headerlink" href="#prerequisite-tasks" title="Permalink to this headline"></a></h2>
<blockquote>
<div></div></blockquote>
<p>To use these operators, you must do a few things:</p>
<blockquote>
<div><ul>
<li><p>Select or create a Cloud Platform project using <a class="reference external" href="https://console.cloud.google.com/project">Cloud Console</a>.</p></li>
<li><p>Enable billing for your project, as described in <a class="reference external" href="https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project">Google Cloud documentation</a>.</p></li>
<li><p>Enable API, as described in <a class="reference external" href="https://cloud.google.com/apis/docs/enable-disable-apis">Cloud Console documentation</a>.</p></li>
<li><p>Install API libraries via <strong>pip</strong>.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>pip install <span class="s1">&#39;apache-airflow[gcp]&#39;</span>
</pre></div>
</div>
<p>Detailed information is available <a class="reference internal" href="../../../installation.html"><span class="doc">Installation</span></a></p>
</li>
<li><p><a class="reference internal" href="../../connection/gcp.html"><span class="doc">Setup Connection</span></a>.</p></li>
</ul>
</div></blockquote>
</div>
<div class="section" id="documents">
<span id="howto-operator-cloudnaturallanguagedocuments"></span><h2><a class="toc-backref" href="#id2">Documents</a><a class="headerlink" href="#documents" title="Permalink to this headline"></a></h2>
<p>Each operator uses a <a class="reference external" href="https://googleapis.github.io/google-cloud-python/latest/language/gapic/v1/types.html#google.cloud.language_v1.types.Document" title="(in google-cloud)"><code class="xref py py-class docutils literal notranslate"><span class="pre">Document</span></code></a> for
representing text.</p>
<p>Here is an example of document with text provided as a string:</p>
<div class="example-block-wrapper docutils container">
<p class="example-header example-header--with-button"><span class="example-title">airflow/contrib/example_dags/example_gcp_natural_language.py</span><a class="example-header-button viewcode-button reference internal" href="../../../_modules/airflow/contrib/example_dags/example_gcp_natural_language.html"><span>View Source</span></a></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">TEXT</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
<span class="s2">Airflow is a platform to programmatically author, schedule and monitor workflows.</span>
<span class="s2">Use Airflow to author workflows as Directed Acyclic Graphs (DAGs) of tasks. The Airflow scheduler executes</span>
<span class="s2"> your tasks on an array of workers while following the specified dependencies. Rich command line utilities</span>
<span class="s2"> make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize</span>
<span class="s2"> pipelines running in production, monitor progress, and troubleshoot issues when needed.</span>
<span class="s2">&quot;&quot;&quot;</span>
<span class="n">document</span> <span class="o">=</span> <span class="n">Document</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">TEXT</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;PLAIN_TEXT&quot;</span><span class="p">)</span>
</pre></div>
</div>
</div>
<p>In addition to supplying string, a document can refer to content stored in Google Cloud Storage.</p>
<div class="example-block-wrapper docutils container">
<p class="example-header example-header--with-button"><span class="example-title">airflow/contrib/example_dags/example_gcp_natural_language.py</span><a class="example-header-button viewcode-button reference internal" href="../../../_modules/airflow/contrib/example_dags/example_gcp_natural_language.html"><span>View Source</span></a></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">GCS_CONTENT_URI</span> <span class="o">=</span> <span class="s2">&quot;gs://my-text-bucket/sentiment-me.txt&quot;</span>
<span class="n">document_gcs</span> <span class="o">=</span> <span class="n">Document</span><span class="p">(</span><span class="n">gcs_content_uri</span><span class="o">=</span><span class="n">GCS_CONTENT_URI</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;PLAIN_TEXT&quot;</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="analyzing-entities">
<span id="howto-operator-cloudlanguageanalyzeentitiesoperator"></span><h2><a class="toc-backref" href="#id3">Analyzing Entities</a><a class="headerlink" href="#analyzing-entities" title="Permalink to this headline"></a></h2>
<p>Entity Analysis inspects the given text for known entities (proper nouns such as
public figures, landmarks, etc.), and returns information about those entities.
Entity analysis is performed with the
<a class="reference internal" href="../../../_api/airflow/contrib/operators/gcp_natural_language_operator/index.html#airflow.contrib.operators.gcp_natural_language_operator.CloudLanguageAnalyzeEntitiesOperator" title="airflow.contrib.operators.gcp_natural_language_operator.CloudLanguageAnalyzeEntitiesOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">CloudLanguageAnalyzeEntitiesOperator</span></code></a> operator.</p>
<div class="example-block-wrapper docutils container">
<p class="example-header example-header--with-button"><span class="example-title">airflow/contrib/example_dags/example_gcp_natural_language.py</span><a class="example-header-button viewcode-button reference internal" href="../../../_modules/airflow/contrib/example_dags/example_gcp_natural_language.html"><span>View Source</span></a></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">analyze_entities</span> <span class="o">=</span> <span class="n">CloudLanguageAnalyzeEntitiesOperator</span><span class="p">(</span><span class="n">document</span><span class="o">=</span><span class="n">document</span><span class="p">,</span> <span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;analyze_entities&quot;</span><span class="p">)</span>
</pre></div>
</div>
</div>
<p>You can use <a class="reference internal" href="../../../concepts.html#id1"><span class="std std-ref">Jinja templating</span></a> with
<span><code class="docutils literal notranslate"><span class="pre">document</span></code>, <code class="docutils literal notranslate"><span class="pre">gcp_conn_id</span></code></span>
parameters which allows you to dynamically determine values. The result is saved to <a class="reference internal" href="../../../concepts.html#concepts-xcom"><span class="std std-ref">XCom</span></a>, which allows it
to be used by other operators.</p>
<div class="example-block-wrapper docutils container">
<p class="example-header example-header--with-button"><span class="example-title">airflow/contrib/example_dags/example_gcp_natural_language.py</span><a class="example-header-button viewcode-button reference internal" href="../../../_modules/airflow/contrib/example_dags/example_gcp_natural_language.html"><span>View Source</span></a></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">analyze_entities_result</span> <span class="o">=</span> <span class="n">BashOperator</span><span class="p">(</span>
<span class="n">bash_command</span><span class="o">=</span><span class="s2">&quot;echo </span><span class="se">\&quot;</span><span class="s2">{{ task_instance.xcom_pull(&#39;analyze_entities&#39;) }}</span><span class="se">\&quot;</span><span class="s2">&quot;</span><span class="p">,</span>
<span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;analyze_entities_result&quot;</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="analyzing-entity-sentiment">
<span id="howto-operator-cloudlanguageanalyzeentitysentimentoperator"></span><h2><a class="toc-backref" href="#id4">Analyzing Entity Sentiment</a><a class="headerlink" href="#analyzing-entity-sentiment" title="Permalink to this headline"></a></h2>
<p>Sentiment Analysis inspects the given text and identifies the prevailing
emotional opinion within the text, especially to determine a writer’s attitude
as positive, negative, or neutral. Sentiment analysis is performed through
the <a class="reference internal" href="../../../_api/airflow/contrib/operators/gcp_natural_language_operator/index.html#airflow.contrib.operators.gcp_natural_language_operator.CloudLanguageAnalyzeEntitySentimentOperator" title="airflow.contrib.operators.gcp_natural_language_operator.CloudLanguageAnalyzeEntitySentimentOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">CloudLanguageAnalyzeEntitySentimentOperator</span></code></a>
operator.</p>
<div class="example-block-wrapper docutils container">
<p class="example-header example-header--with-button"><span class="example-title">airflow/contrib/example_dags/example_gcp_natural_language.py</span><a class="example-header-button viewcode-button reference internal" href="../../../_modules/airflow/contrib/example_dags/example_gcp_natural_language.html"><span>View Source</span></a></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">analyze_entity_sentiment</span> <span class="o">=</span> <span class="n">CloudLanguageAnalyzeEntitySentimentOperator</span><span class="p">(</span>
<span class="n">document</span><span class="o">=</span><span class="n">document</span><span class="p">,</span> <span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;analyze_entity_sentiment&quot;</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<p>You can use <a class="reference internal" href="../../../concepts.html#id1"><span class="std std-ref">Jinja templating</span></a> with
<span><code class="docutils literal notranslate"><span class="pre">document</span></code>, <code class="docutils literal notranslate"><span class="pre">gcp_conn_id</span></code></span>
parameters which allows you to dynamically determine values. The result is saved to <a class="reference internal" href="../../../concepts.html#concepts-xcom"><span class="std std-ref">XCom</span></a>, which allows it
to be used by other operators.</p>
<div class="example-block-wrapper docutils container">
<p class="example-header example-header--with-button"><span class="example-title">airflow/contrib/example_dags/example_gcp_natural_language.py</span><a class="example-header-button viewcode-button reference internal" href="../../../_modules/airflow/contrib/example_dags/example_gcp_natural_language.html"><span>View Source</span></a></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">analyze_entity_sentiment_result</span> <span class="o">=</span> <span class="n">BashOperator</span><span class="p">(</span>
<span class="n">bash_command</span><span class="o">=</span><span class="s2">&quot;echo </span><span class="se">\&quot;</span><span class="s2">{{ task_instance.xcom_pull(&#39;analyze_entity_sentiment&#39;) }}</span><span class="se">\&quot;</span><span class="s2">&quot;</span><span class="p">,</span>
<span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;analyze_entity_sentiment_result&quot;</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="analyzing-sentiment">
<span id="howto-operator-cloudlanguageanalyzesentimentoperator"></span><h2><a class="toc-backref" href="#id5">Analyzing Sentiment</a><a class="headerlink" href="#analyzing-sentiment" title="Permalink to this headline"></a></h2>
<p>Sentiment Analysis inspects the given text and identifies the prevailing
emotional opinion within the text, especially to determine a writer’s
attitude as positive, negative, or neutral. Sentiment analysis is performed
through the
<a class="reference internal" href="../../../_api/airflow/contrib/operators/gcp_natural_language_operator/index.html#airflow.contrib.operators.gcp_natural_language_operator.CloudLanguageAnalyzeSentimentOperator" title="airflow.contrib.operators.gcp_natural_language_operator.CloudLanguageAnalyzeSentimentOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">CloudLanguageAnalyzeSentimentOperator</span></code></a>
operator.</p>
<div class="example-block-wrapper docutils container">
<p class="example-header example-header--with-button"><span class="example-title">airflow/contrib/example_dags/example_gcp_natural_language.py</span><a class="example-header-button viewcode-button reference internal" href="../../../_modules/airflow/contrib/example_dags/example_gcp_natural_language.html"><span>View Source</span></a></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">analyze_sentiment</span> <span class="o">=</span> <span class="n">CloudLanguageAnalyzeSentimentOperator</span><span class="p">(</span><span class="n">document</span><span class="o">=</span><span class="n">document</span><span class="p">,</span> <span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;analyze_sentiment&quot;</span><span class="p">)</span>
</pre></div>
</div>
</div>
<p>You can use <a class="reference internal" href="../../../concepts.html#id1"><span class="std std-ref">Jinja templating</span></a> with
<span><code class="docutils literal notranslate"><span class="pre">document</span></code>, <code class="docutils literal notranslate"><span class="pre">gcp_conn_id</span></code></span>
parameters which allows you to dynamically determine values. The result is saved to <a class="reference internal" href="../../../concepts.html#concepts-xcom"><span class="std std-ref">XCom</span></a>, which allows it
to be used by other operators.</p>
<div class="example-block-wrapper docutils container">
<p class="example-header example-header--with-button"><span class="example-title">airflow/contrib/example_dags/example_gcp_natural_language.py</span><a class="example-header-button viewcode-button reference internal" href="../../../_modules/airflow/contrib/example_dags/example_gcp_natural_language.html"><span>View Source</span></a></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">analyze_sentiment_result</span> <span class="o">=</span> <span class="n">BashOperator</span><span class="p">(</span>
<span class="n">bash_command</span><span class="o">=</span><span class="s2">&quot;echo </span><span class="se">\&quot;</span><span class="s2">{{ task_instance.xcom_pull(&#39;analyze_sentiment&#39;) }}</span><span class="se">\&quot;</span><span class="s2">&quot;</span><span class="p">,</span>
<span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;analyze_sentiment_result&quot;</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="classifying-content">
<span id="howto-operator-cloudlanguageclassifytextoperator"></span><h2><a class="toc-backref" href="#id6">Classifying Content</a><a class="headerlink" href="#classifying-content" title="Permalink to this headline"></a></h2>
<p>Content Classification analyzes a document and returns a list of content
categories that apply to the text found in the document. To classify the
content in a document, use the
<a class="reference internal" href="../../../_api/airflow/contrib/operators/gcp_natural_language_operator/index.html#airflow.contrib.operators.gcp_natural_language_operator.CloudLanguageClassifyTextOperator" title="airflow.contrib.operators.gcp_natural_language_operator.CloudLanguageClassifyTextOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">CloudLanguageClassifyTextOperator</span></code></a>
operator.</p>
<div class="example-block-wrapper docutils container">
<p class="example-header example-header--with-button"><span class="example-title">airflow/contrib/example_dags/example_gcp_natural_language.py</span><a class="example-header-button viewcode-button reference internal" href="../../../_modules/airflow/contrib/example_dags/example_gcp_natural_language.html"><span>View Source</span></a></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">analyze_classify_text</span> <span class="o">=</span> <span class="n">CloudLanguageClassifyTextOperator</span><span class="p">(</span>
<span class="n">document</span><span class="o">=</span><span class="n">document</span><span class="p">,</span> <span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;analyze_classify_text&quot;</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<p>You can use <a class="reference internal" href="../../../concepts.html#id1"><span class="std std-ref">Jinja templating</span></a> with
<span><code class="docutils literal notranslate"><span class="pre">document</span></code>, <code class="docutils literal notranslate"><span class="pre">gcp_conn_id</span></code></span>
parameters which allows you to dynamically determine values. The result is saved to <a class="reference internal" href="../../../concepts.html#concepts-xcom"><span class="std std-ref">XCom</span></a>, which allows it
to be used by other operators.</p>
<div class="example-block-wrapper docutils container">
<p class="example-header example-header--with-button"><span class="example-title">airflow/contrib/example_dags/example_gcp_natural_language.py</span><a class="example-header-button viewcode-button reference internal" href="../../../_modules/airflow/contrib/example_dags/example_gcp_natural_language.html"><span>View Source</span></a></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">analyze_classify_text_result</span> <span class="o">=</span> <span class="n">BashOperator</span><span class="p">(</span>
<span class="n">bash_command</span><span class="o">=</span><span class="s2">&quot;echo </span><span class="se">\&quot;</span><span class="s2">{{ task_instance.xcom_pull(&#39;analyze_classify_text&#39;) }}</span><span class="se">\&quot;</span><span class="s2">&quot;</span><span class="p">,</span>
<span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;analyze_classify_text_result&quot;</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="reference">
<h2><a class="toc-backref" href="#id7">Reference</a><a class="headerlink" href="#reference" title="Permalink to this headline"></a></h2>
<p>For further information, look at:</p>
<ul class="simple">
<li><p><a class="reference external" href="https://googleapis.github.io/google-cloud-python/latest/language/index.html">Client Library Documentation</a></p></li>
<li><p><a class="reference external" href="https://cloud.google.com/natural-language/docs/">Product Documentation</a></p></li>
</ul>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="spanner.html" class="btn btn-neutral float-right" title="Google Cloud Spanner Operators" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="gcs.html" class="btn btn-neutral float-left" title="Google Cloud Storage Operators" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
<div class="footer">This page uses <a href="https://analytics.google.com/">
Google Analytics</a> to collect statistics. You can disable it by blocking
the JavaScript coming from www.google-analytics.com. Check our
<a href="../../../privacy_notice.html">Privacy Policy</a>
for more details.
<script type="text/javascript">
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ?
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
var nodes = document.documentElement.childNodes;
var i = -1;
var node;
do {
i++;
node = nodes[i]
} while(node.nodeType !== Node.ELEMENT_NODE);
node.appendChild(ga);
})();
</script>
</div>
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>