Deployed 7a71510 with MkDocs version: 1.3.0

This commit is contained in:
2022-07-13 11:09:23 +00:00
parent f673e05f40
commit 4d4c32baf6
33 changed files with 641 additions and 2682 deletions

View file

@ -457,20 +457,6 @@
<li class="md-nav__item">
<a href="../../how-to-guides/scraping/" class="md-nav__link">
Scraping
</a>
</li>
</ul>
</nav>
</li>
@ -580,6 +566,34 @@
get_sentences()
</a>
</li>
<li class="md-nav__item">
<a href="#great_ai.utilities.language.predict_language.predict_language" class="md-nav__link">
predict_language()
</a>
</li>
<li class="md-nav__item">
<a href="#great_ai.utilities.language.english_name_of_language.english_name_of_language" class="md-nav__link">
english_name_of_language()
</a>
</li>
<li class="md-nav__item">
<a href="#great_ai.utilities.language.is_english.is_english" class="md-nav__link">
is_english()
</a>
</li>
<li class="md-nav__item">
<a href="#great_ai.utilities.evaluate_ranking.evaluate_ranking.evaluate_ranking" class="md-nav__link">
evaluate_ranking()
</a>
</li>
</ul>
@ -922,6 +936,34 @@
get_sentences()
</a>
</li>
<li class="md-nav__item">
<a href="#great_ai.utilities.language.predict_language.predict_language" class="md-nav__link">
predict_language()
</a>
</li>
<li class="md-nav__item">
<a href="#great_ai.utilities.language.english_name_of_language.english_name_of_language" class="md-nav__link">
english_name_of_language()
</a>
</li>
<li class="md-nav__item">
<a href="#great_ai.utilities.language.is_english.is_english" class="md-nav__link">
is_english()
</a>
</li>
<li class="md-nav__item">
<a href="#great_ai.utilities.evaluate_ranking.evaluate_ranking.evaluate_ranking" class="md-nav__link">
evaluate_ranking()
</a>
</li>
</ul>
@ -1463,7 +1505,8 @@ processing can be enabled with optional arguments.</p>
<td>
<code>bool</code>
</td>
<td><p>Filter out sentences that are not capitalised/don't end with a</p></td>
<td><p>Filter out sentences that are not capitalised/don't end with a
punctuation.</p></td>
<td>
<code>False</code>
</td>
@ -1590,7 +1633,7 @@ processing can be enabled with optional arguments.</p>
<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> text: Text to be segmented into sentences.</span>
<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> ignore_partial: Filter out sentences that are not capitalised/don&#39;t end with a</span>
<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="sd"> punctuation.</span>
<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="sd"> punctuation.</span>
<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="sd"> true_case: Crude method: lowercase the first word of each sentence.</span>
<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> remove_punctuation: Remove all kinds of punctuation.</span>
<a id="__codelineno-0-40" name="__codelineno-0-40"></a>
@ -1636,11 +1679,35 @@ processing can be enabled with optional arguments.</p>
</div>
<div class="doc doc-object doc-function">
<div class="doc doc-object doc-module">
<div class="doc doc-contents first">
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h3 id="great_ai.utilities.language.predict_language.predict_language" class="doc doc-heading">
<code class="highlight language-python"><span class="n">predict_language</span><span class="p">(</span><span class="n">text</span><span class="p">)</span></code>
<a href="#great_ai.utilities.language.predict_language.predict_language" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc doc-contents ">
<p>Predict the language code from text.</p>
<p>A thin wrapper over <a href="https://github.com/rspeer/langcodes">langcodes</a> for convenient
@ -1755,11 +1822,193 @@ made.</p></td>
</div>
<div class="doc doc-object doc-function">
</div>
</div>
</div>
<div class="doc doc-object doc-module">
<div class="doc doc-contents first">
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h3 id="great_ai.utilities.language.english_name_of_language.english_name_of_language" class="doc doc-heading">
<code class="highlight language-python"><span class="n">english_name_of_language</span><span class="p">(</span><span class="n">language_code</span><span class="p">)</span></code>
<a href="#great_ai.utilities.language.english_name_of_language.english_name_of_language" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc doc-contents ">
<p>Human-friendly English name of language from its <code>language_code</code>.</p>
<p>A thin wrapper over <a href="https://github.com/rspeer/langcodes">langcodes</a> for convenient
language tagging.</p>
<p><strong>Examples:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">english_name_of_language</span><span class="p">(</span><span class="s1">&#39;en-US&#39;</span><span class="p">)</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="go">&#39;English (United States)&#39;</span>
</code></pre></div>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">english_name_of_language</span><span class="p">(</span><span class="s1">&#39;und&#39;</span><span class="p">)</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="go">&#39;Unknown language&#39;</span>
</code></pre></div>
<p><strong>Parameters:</strong></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>language_code</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[str]</code>
</td>
<td><p>Language code, for example, returned by
<a class="autorefs autorefs-internal" href="#great_ai.utilities.language.predict_language.predict_language">great_ai.utilities.language.predict_language.predict_language</a>.</p></td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><strong>Returns:</strong></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>str</code>
</td>
<td><p>English name of language.</p></td>
</tr>
</tbody>
</table>
<details class="quote">
<summary>Source code in <code>great_ai/utilities/language/english_name_of_language.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-0-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-0-10">10</a></span>
<span class="normal"><a href="#__codelineno-0-11">11</a></span>
<span class="normal"><a href="#__codelineno-0-12">12</a></span>
<span class="normal"><a href="#__codelineno-0-13">13</a></span>
<span class="normal"><a href="#__codelineno-0-14">14</a></span>
<span class="normal"><a href="#__codelineno-0-15">15</a></span>
<span class="normal"><a href="#__codelineno-0-16">16</a></span>
<span class="normal"><a href="#__codelineno-0-17">17</a></span>
<span class="normal"><a href="#__codelineno-0-18">18</a></span>
<span class="normal"><a href="#__codelineno-0-19">19</a></span>
<span class="normal"><a href="#__codelineno-0-20">20</a></span>
<span class="normal"><a href="#__codelineno-0-21">21</a></span>
<span class="normal"><a href="#__codelineno-0-22">22</a></span>
<span class="normal"><a href="#__codelineno-0-23">23</a></span>
<span class="normal"><a href="#__codelineno-0-24">24</a></span>
<span class="normal"><a href="#__codelineno-0-25">25</a></span>
<span class="normal"><a href="#__codelineno-0-26">26</a></span>
<span class="normal"><a href="#__codelineno-0-27">27</a></span>
<span class="normal"><a href="#__codelineno-0-28">28</a></span>
<span class="normal"><a href="#__codelineno-0-29">29</a></span>
<span class="normal"><a href="#__codelineno-0-30">30</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="k">def</span> <span class="nf">english_name_of_language</span><span class="p">(</span><span class="n">language_code</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
<a id="__codelineno-0-7" name="__codelineno-0-7"></a> <span class="sd">&quot;&quot;&quot;Human-friendly English name of language from its `language_code`.</span>
<a id="__codelineno-0-8" name="__codelineno-0-8"></a>
<a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="sd"> A thin wrapper over [langcodes](https://github.com/rspeer/langcodes) for convenient</span>
<a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="sd"> language tagging.</span>
<a id="__codelineno-0-11" name="__codelineno-0-11"></a>
<a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="sd"> Examples:</span>
<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="sd"> &gt;&gt;&gt; english_name_of_language(&#39;en-US&#39;)</span>
<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> &#39;English (United States)&#39;</span>
<a id="__codelineno-0-15" name="__codelineno-0-15"></a>
<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> &gt;&gt;&gt; english_name_of_language(&#39;und&#39;)</span>
<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> &#39;Unknown language&#39;</span>
<a id="__codelineno-0-18" name="__codelineno-0-18"></a>
<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> language_code: Language code, for example, returned by</span>
<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> [great_ai.utilities.language.predict_language.predict_language][].</span>
<a id="__codelineno-0-22" name="__codelineno-0-22"></a>
<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> English name of language.</span>
<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-26" name="__codelineno-0-26"></a>
<a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">language_code</span><span class="p">:</span>
<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="n">language_code</span> <span class="o">=</span> <span class="s2">&quot;und&quot;</span>
<a id="__codelineno-0-29" name="__codelineno-0-29"></a>
<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="k">return</span> <span class="n">Language</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">language_code</span><span class="p">)</span><span class="o">.</span><span class="n">display_name</span><span class="p">()</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-module">
<div class="doc doc-contents first">
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h3 id="great_ai.utilities.language.is_english.is_english" class="doc doc-heading">
<code class="highlight language-python"><span class="n">is_english</span><span class="p">(</span><span class="n">language_code</span><span class="p">)</span></code>
<a href="#great_ai.utilities.language.is_english.is_english" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc doc-contents ">
<p>Decide whether the <code>language_code</code> is of an English language.</p>
<p>A thin wrapper over <a href="https://github.com/rspeer/langcodes">langcodes</a> for convenient
@ -1793,7 +2042,7 @@ language tagging.</p>
<code><span title="typing.Optional">Optional</span>[str]</code>
</td>
<td><p>Language code, for example, returned by
`[great_ai.utilities.predict_language][].</p></td>
`<a class="autorefs autorefs-internal" href="#great_ai.utilities.language.predict_language.predict_language">great_ai.utilities.language.predict_language.predict_language</a>.</p></td>
<td>
<em>required</em>
</td>
@ -1866,7 +2115,7 @@ language tagging.</p>
<a id="__codelineno-0-21" name="__codelineno-0-21"></a>
<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> language_code: Language code, for example, returned by</span>
<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> `[great_ai.utilities.predict_language][].</span>
<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> `[great_ai.utilities.language.predict_language.predict_language][].</span>
<a id="__codelineno-0-25" name="__codelineno-0-25"></a>
<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> Boolean indicating whether it&#39;s English.</span>
@ -1882,120 +2131,10 @@ language tagging.</p>
</div>
<div class="doc doc-object doc-function">
</div>
<div class="doc doc-contents first">
<p>Human-friendly English name of language from its <code>language_code</code>.</p>
<p>A thin wrapper over <a href="https://github.com/rspeer/langcodes">langcodes</a> for convenient
language tagging.</p>
<p><strong>Examples:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">english_name_of_language</span><span class="p">(</span><span class="s1">&#39;en-US&#39;</span><span class="p">)</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="go">&#39;English (United States)&#39;</span>
</code></pre></div>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">english_name_of_language</span><span class="p">(</span><span class="s1">&#39;und&#39;</span><span class="p">)</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="go">&#39;Unknown language&#39;</span>
</code></pre></div>
<p><strong>Parameters:</strong></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>language_code</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[str]</code>
</td>
<td><p>Language code, for example, returned by
[great_ai.utilities.predict_language][].</p></td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><strong>Returns:</strong></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>str</code>
</td>
<td><p>English name of language.</p></td>
</tr>
</tbody>
</table>
<details class="quote">
<summary>Source code in <code>great_ai/utilities/language/english_name_of_language.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-0-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-0-10">10</a></span>
<span class="normal"><a href="#__codelineno-0-11">11</a></span>
<span class="normal"><a href="#__codelineno-0-12">12</a></span>
<span class="normal"><a href="#__codelineno-0-13">13</a></span>
<span class="normal"><a href="#__codelineno-0-14">14</a></span>
<span class="normal"><a href="#__codelineno-0-15">15</a></span>
<span class="normal"><a href="#__codelineno-0-16">16</a></span>
<span class="normal"><a href="#__codelineno-0-17">17</a></span>
<span class="normal"><a href="#__codelineno-0-18">18</a></span>
<span class="normal"><a href="#__codelineno-0-19">19</a></span>
<span class="normal"><a href="#__codelineno-0-20">20</a></span>
<span class="normal"><a href="#__codelineno-0-21">21</a></span>
<span class="normal"><a href="#__codelineno-0-22">22</a></span>
<span class="normal"><a href="#__codelineno-0-23">23</a></span>
<span class="normal"><a href="#__codelineno-0-24">24</a></span>
<span class="normal"><a href="#__codelineno-0-25">25</a></span>
<span class="normal"><a href="#__codelineno-0-26">26</a></span>
<span class="normal"><a href="#__codelineno-0-27">27</a></span>
<span class="normal"><a href="#__codelineno-0-28">28</a></span>
<span class="normal"><a href="#__codelineno-0-29">29</a></span>
<span class="normal"><a href="#__codelineno-0-30">30</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="k">def</span> <span class="nf">english_name_of_language</span><span class="p">(</span><span class="n">language_code</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
<a id="__codelineno-0-7" name="__codelineno-0-7"></a> <span class="sd">&quot;&quot;&quot;Human-friendly English name of language from its `language_code`.</span>
<a id="__codelineno-0-8" name="__codelineno-0-8"></a>
<a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="sd"> A thin wrapper over [langcodes](https://github.com/rspeer/langcodes) for convenient</span>
<a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="sd"> language tagging.</span>
<a id="__codelineno-0-11" name="__codelineno-0-11"></a>
<a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="sd"> Examples:</span>
<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="sd"> &gt;&gt;&gt; english_name_of_language(&#39;en-US&#39;)</span>
<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> &#39;English (United States)&#39;</span>
<a id="__codelineno-0-15" name="__codelineno-0-15"></a>
<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> &gt;&gt;&gt; english_name_of_language(&#39;und&#39;)</span>
<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> &#39;Unknown language&#39;</span>
<a id="__codelineno-0-18" name="__codelineno-0-18"></a>
<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> language_code: Language code, for example, returned by</span>
<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> [great_ai.utilities.predict_language][].</span>
<a id="__codelineno-0-22" name="__codelineno-0-22"></a>
<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> English name of language.</span>
<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-26" name="__codelineno-0-26"></a>
<a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">language_code</span><span class="p">:</span>
<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="n">language_code</span> <span class="o">=</span> <span class="s2">&quot;und&quot;</span>
<a id="__codelineno-0-29" name="__codelineno-0-29"></a>
<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="k">return</span> <span class="n">Language</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">language_code</span><span class="p">)</span><span class="o">.</span><span class="n">display_name</span><span class="p">()</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
</div>
@ -2018,6 +2157,338 @@ language tagging.</p>
<div class="doc doc-object doc-function">
<h3 id="great_ai.utilities.evaluate_ranking.evaluate_ranking.evaluate_ranking" class="doc doc-heading">
<code class="highlight language-python"><span class="n">evaluate_ranking</span><span class="p">(</span><span class="n">expected</span><span class="p">,</span> <span class="n">actual_scores</span><span class="p">,</span> <span class="n">target_recall</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">disable_interpolation</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">axes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">output_svg</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">reverse_order</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">plot</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
<a href="#great_ai.utilities.evaluate_ranking.evaluate_ranking.evaluate_ranking" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc doc-contents ">
<p>Render the Precision-Recall curve of a ranking.</p>
<p>And improved version of scikit-learn's <a href="https://scikit-learn.org/stable/auto_examples/model_selection/plot_precision_recall.html#sphx-glr-auto-examples-model-selection-plot-precision-recall-py">PR-curve</a></p>
<p><strong>Parameters:</strong></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>expected</code></td>
<td>
<code><span title="typing.List">List</span>[<span title="great_ai.utilities.evaluate_ranking.evaluate_ranking.T">T</span>]</code>
</td>
<td><p>Expected ordering of the elements
(rank if it's an integer, alphabetical if a string)</p></td>
<td>
<em>required</em>
</td>
</tr>
<tr>
<td><code>actual_scores</code></td>
<td>
<code><span title="typing.List">List</span>[float]</code>
</td>
<td><p>Actual ranking scores (need not be on the same scale as
<code>expected</code>)</p></td>
<td>
<em>required</em>
</td>
</tr>
<tr>
<td><code>title</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[str]</code>
</td>
<td><p>Title of the plot.</p></td>
<td>
<code>&#39;&#39;</code>
</td>
</tr>
<tr>
<td><code>disable_interpolation</code></td>
<td>
<code>bool</code>
</td>
<td><p>Do not interpolate.</p></td>
<td>
<code>False</code>
</td>
</tr>
<tr>
<td><code>axes</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[<span title="matplotlib.pyplot">plt</span>.<span title="matplotlib.pyplot.Axes">Axes</span>]</code>
</td>
<td><p>Matplotlib axes for ploting inside a subplot.</p></td>
<td>
<code>None</code>
</td>
</tr>
<tr>
<td><code>output_svg</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[<span title="pathlib.Path">Path</span>]</code>
</td>
<td><p>If specified, save the chart as an svg to the given Path.</p></td>
<td>
<code>None</code>
</td>
</tr>
<tr>
<td><code>reverse_order</code></td>
<td>
<code>bool</code>
</td>
<td><p>Reverse the ranking specified by <code>expected</code>.</p></td>
<td>
<code>False</code>
</td>
</tr>
<tr>
<td><code>plot</code></td>
<td>
<code>bool</code>
</td>
<td><p>Display a plot on the screen.</p></td>
<td>
<code>True</code>
</td>
</tr>
</tbody>
</table>
<p><strong>Returns:</strong></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code><span title="typing.Dict">Dict</span>[<span title="great_ai.utilities.evaluate_ranking.evaluate_ranking.T">T</span>, float]</code>
</td>
<td><p>Precision values at given recall.</p></td>
</tr>
</tbody>
</table>
<details class="quote">
<summary>Source code in <code>great_ai/utilities/evaluate_ranking/evaluate_ranking.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-15"> 15</a></span>
<span class="normal"><a href="#__codelineno-0-16"> 16</a></span>
<span class="normal"><a href="#__codelineno-0-17"> 17</a></span>
<span class="normal"><a href="#__codelineno-0-18"> 18</a></span>
<span class="normal"><a href="#__codelineno-0-19"> 19</a></span>
<span class="normal"><a href="#__codelineno-0-20"> 20</a></span>
<span class="normal"><a href="#__codelineno-0-21"> 21</a></span>
<span class="normal"><a href="#__codelineno-0-22"> 22</a></span>
<span class="normal"><a href="#__codelineno-0-23"> 23</a></span>
<span class="normal"><a href="#__codelineno-0-24"> 24</a></span>
<span class="normal"><a href="#__codelineno-0-25"> 25</a></span>
<span class="normal"><a href="#__codelineno-0-26"> 26</a></span>
<span class="normal"><a href="#__codelineno-0-27"> 27</a></span>
<span class="normal"><a href="#__codelineno-0-28"> 28</a></span>
<span class="normal"><a href="#__codelineno-0-29"> 29</a></span>
<span class="normal"><a href="#__codelineno-0-30"> 30</a></span>
<span class="normal"><a href="#__codelineno-0-31"> 31</a></span>
<span class="normal"><a href="#__codelineno-0-32"> 32</a></span>
<span class="normal"><a href="#__codelineno-0-33"> 33</a></span>
<span class="normal"><a href="#__codelineno-0-34"> 34</a></span>
<span class="normal"><a href="#__codelineno-0-35"> 35</a></span>
<span class="normal"><a href="#__codelineno-0-36"> 36</a></span>
<span class="normal"><a href="#__codelineno-0-37"> 37</a></span>
<span class="normal"><a href="#__codelineno-0-38"> 38</a></span>
<span class="normal"><a href="#__codelineno-0-39"> 39</a></span>
<span class="normal"><a href="#__codelineno-0-40"> 40</a></span>
<span class="normal"><a href="#__codelineno-0-41"> 41</a></span>
<span class="normal"><a href="#__codelineno-0-42"> 42</a></span>
<span class="normal"><a href="#__codelineno-0-43"> 43</a></span>
<span class="normal"><a href="#__codelineno-0-44"> 44</a></span>
<span class="normal"><a href="#__codelineno-0-45"> 45</a></span>
<span class="normal"><a href="#__codelineno-0-46"> 46</a></span>
<span class="normal"><a href="#__codelineno-0-47"> 47</a></span>
<span class="normal"><a href="#__codelineno-0-48"> 48</a></span>
<span class="normal"><a href="#__codelineno-0-49"> 49</a></span>
<span class="normal"><a href="#__codelineno-0-50"> 50</a></span>
<span class="normal"><a href="#__codelineno-0-51"> 51</a></span>
<span class="normal"><a href="#__codelineno-0-52"> 52</a></span>
<span class="normal"><a href="#__codelineno-0-53"> 53</a></span>
<span class="normal"><a href="#__codelineno-0-54"> 54</a></span>
<span class="normal"><a href="#__codelineno-0-55"> 55</a></span>
<span class="normal"><a href="#__codelineno-0-56"> 56</a></span>
<span class="normal"><a href="#__codelineno-0-57"> 57</a></span>
<span class="normal"><a href="#__codelineno-0-58"> 58</a></span>
<span class="normal"><a href="#__codelineno-0-59"> 59</a></span>
<span class="normal"><a href="#__codelineno-0-60"> 60</a></span>
<span class="normal"><a href="#__codelineno-0-61"> 61</a></span>
<span class="normal"><a href="#__codelineno-0-62"> 62</a></span>
<span class="normal"><a href="#__codelineno-0-63"> 63</a></span>
<span class="normal"><a href="#__codelineno-0-64"> 64</a></span>
<span class="normal"><a href="#__codelineno-0-65"> 65</a></span>
<span class="normal"><a href="#__codelineno-0-66"> 66</a></span>
<span class="normal"><a href="#__codelineno-0-67"> 67</a></span>
<span class="normal"><a href="#__codelineno-0-68"> 68</a></span>
<span class="normal"><a href="#__codelineno-0-69"> 69</a></span>
<span class="normal"><a href="#__codelineno-0-70"> 70</a></span>
<span class="normal"><a href="#__codelineno-0-71"> 71</a></span>
<span class="normal"><a href="#__codelineno-0-72"> 72</a></span>
<span class="normal"><a href="#__codelineno-0-73"> 73</a></span>
<span class="normal"><a href="#__codelineno-0-74"> 74</a></span>
<span class="normal"><a href="#__codelineno-0-75"> 75</a></span>
<span class="normal"><a href="#__codelineno-0-76"> 76</a></span>
<span class="normal"><a href="#__codelineno-0-77"> 77</a></span>
<span class="normal"><a href="#__codelineno-0-78"> 78</a></span>
<span class="normal"><a href="#__codelineno-0-79"> 79</a></span>
<span class="normal"><a href="#__codelineno-0-80"> 80</a></span>
<span class="normal"><a href="#__codelineno-0-81"> 81</a></span>
<span class="normal"><a href="#__codelineno-0-82"> 82</a></span>
<span class="normal"><a href="#__codelineno-0-83"> 83</a></span>
<span class="normal"><a href="#__codelineno-0-84"> 84</a></span>
<span class="normal"><a href="#__codelineno-0-85"> 85</a></span>
<span class="normal"><a href="#__codelineno-0-86"> 86</a></span>
<span class="normal"><a href="#__codelineno-0-87"> 87</a></span>
<span class="normal"><a href="#__codelineno-0-88"> 88</a></span>
<span class="normal"><a href="#__codelineno-0-89"> 89</a></span>
<span class="normal"><a href="#__codelineno-0-90"> 90</a></span>
<span class="normal"><a href="#__codelineno-0-91"> 91</a></span>
<span class="normal"><a href="#__codelineno-0-92"> 92</a></span>
<span class="normal"><a href="#__codelineno-0-93"> 93</a></span>
<span class="normal"><a href="#__codelineno-0-94"> 94</a></span>
<span class="normal"><a href="#__codelineno-0-95"> 95</a></span>
<span class="normal"><a href="#__codelineno-0-96"> 96</a></span>
<span class="normal"><a href="#__codelineno-0-97"> 97</a></span>
<span class="normal"><a href="#__codelineno-0-98"> 98</a></span>
<span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
<span class="normal"><a href="#__codelineno-0-100">100</a></span>
<span class="normal"><a href="#__codelineno-0-101">101</a></span>
<span class="normal"><a href="#__codelineno-0-102">102</a></span>
<span class="normal"><a href="#__codelineno-0-103">103</a></span>
<span class="normal"><a href="#__codelineno-0-104">104</a></span>
<span class="normal"><a href="#__codelineno-0-105">105</a></span>
<span class="normal"><a href="#__codelineno-0-106">106</a></span>
<span class="normal"><a href="#__codelineno-0-107">107</a></span>
<span class="normal"><a href="#__codelineno-0-108">108</a></span>
<span class="normal"><a href="#__codelineno-0-109">109</a></span>
<span class="normal"><a href="#__codelineno-0-110">110</a></span>
<span class="normal"><a href="#__codelineno-0-111">111</a></span>
<span class="normal"><a href="#__codelineno-0-112">112</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="k">def</span> <span class="nf">evaluate_ranking</span><span class="p">(</span>
<a id="__codelineno-0-16" name="__codelineno-0-16"></a> <span class="n">expected</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">T</span><span class="p">],</span>
<a id="__codelineno-0-17" name="__codelineno-0-17"></a> <span class="n">actual_scores</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span>
<a id="__codelineno-0-18" name="__codelineno-0-18"></a> <span class="n">target_recall</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
<a id="__codelineno-0-19" name="__codelineno-0-19"></a> <span class="n">title</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="n">disable_interpolation</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<a id="__codelineno-0-21" name="__codelineno-0-21"></a> <span class="n">axes</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">plt</span><span class="o">.</span><span class="n">Axes</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="n">output_svg</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Path</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="n">reverse_order</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="n">plot</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="n">T</span><span class="p">,</span> <span class="nb">float</span><span class="p">]:</span>
<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="sd">&quot;&quot;&quot;Render the Precision-Recall curve of a ranking.</span>
<a id="__codelineno-0-27" name="__codelineno-0-27"></a>
<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> And improved version of scikit-learn&#39;s [PR-curve](https://scikit-learn.org/stable/auto_examples/model_selection/plot_precision_recall.html#sphx-glr-auto-examples-model-selection-plot-precision-recall-py)</span>
<a id="__codelineno-0-29" name="__codelineno-0-29"></a>
<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> expected: Expected ordering of the elements</span>
<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> (rank if it&#39;s an integer, alphabetical if a string)</span>
<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> actual_scores: Actual ranking scores (need not be on the same scale as</span>
<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> `expected`)</span>
<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> title: Title of the plot.</span>
<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> disable_interpolation: Do not interpolate.</span>
<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="sd"> axes: Matplotlib axes for ploting inside a subplot.</span>
<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="sd"> output_svg: If specified, save the chart as an svg to the given Path.</span>
<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> reverse_order: Reverse the ranking specified by `expected`.</span>
<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> plot: Display a plot on the screen.</span>
<a id="__codelineno-0-41" name="__codelineno-0-41"></a>
<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> Precision values at given recall.</span>
<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-45" name="__codelineno-0-45"></a>
<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="k">assert</span> <span class="mi">0</span> <span class="o">&lt;=</span> <span class="n">target_recall</span> <span class="o">&lt;=</span> <span class="mi">1</span>
<a id="__codelineno-0-47" name="__codelineno-0-47"></a>
<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">if</span> <span class="n">plot</span> <span class="ow">and</span> <span class="n">axes</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">10</span><span class="p">))</span>
<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">fig</span><span class="o">.</span><span class="n">patch</span><span class="o">.</span><span class="n">set_facecolor</span><span class="p">(</span><span class="s2">&quot;white&quot;</span><span class="p">)</span>
<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">axes</span><span class="p">()</span>
<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">else</span><span class="p">:</span>
<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">ax</span> <span class="o">=</span> <span class="n">axes</span>
<a id="__codelineno-0-54" name="__codelineno-0-54"></a>
<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="n">classes</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">unique</span><span class="p">(</span><span class="n">expected</span><span class="p">),</span> <span class="n">reverse</span><span class="o">=</span><span class="n">reverse_order</span><span class="p">)</span>
<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="n">str_classes</span> <span class="o">=</span> <span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">classes</span><span class="p">]</span>
<a id="__codelineno-0-57" name="__codelineno-0-57"></a>
<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">with</span> <span class="n">matplotlib</span><span class="o">.</span><span class="n">rc_context</span><span class="p">({</span><span class="s2">&quot;font.size&quot;</span><span class="p">:</span> <span class="mi">20</span><span class="p">}):</span>
<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="k">if</span> <span class="n">plot</span><span class="p">:</span>
<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="n">ax</span><span class="o">.</span><span class="n">set_xmargin</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<a id="__codelineno-0-61" name="__codelineno-0-61"></a>
<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="n">draw_f1_iso_lines</span><span class="p">(</span><span class="n">axes</span><span class="o">=</span><span class="n">ax</span><span class="p">)</span>
<a id="__codelineno-0-63" name="__codelineno-0-63"></a>
<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">results</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="n">T</span><span class="p">,</span> <span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">classes</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="n">binarized_expected</span> <span class="o">=</span> <span class="p">[</span>
<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="p">(</span><span class="n">v</span> <span class="o">&lt;</span> <span class="n">classes</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="k">if</span> <span class="n">reverse_order</span> <span class="k">else</span> <span class="p">(</span><span class="n">v</span> <span class="o">&gt;</span> <span class="n">classes</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">expected</span>
<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="p">]</span>
<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">precision</span><span class="p">,</span> <span class="n">recall</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">precision_recall_curve</span><span class="p">(</span>
<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="n">binarized_expected</span><span class="p">,</span> <span class="n">actual_scores</span>
<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="p">)</span>
<a id="__codelineno-0-73" name="__codelineno-0-73"></a>
<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">disable_interpolation</span><span class="p">:</span>
<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">precision</span><span class="p">)):</span>
<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="n">precision</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">precision</span><span class="p">[</span><span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">],</span> <span class="n">precision</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
<a id="__codelineno-0-77" name="__codelineno-0-77"></a>
<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">closest_recall_index</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmin</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">recall</span> <span class="o">-</span> <span class="n">target_recall</span><span class="p">))</span>
<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="n">precision_at_closest_recall</span> <span class="o">=</span> <span class="n">precision</span><span class="p">[</span><span class="n">closest_recall_index</span><span class="p">]</span>
<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">average_precision</span> <span class="o">=</span> <span class="n">average_precision_score</span><span class="p">(</span>
<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="n">binarized_expected</span><span class="p">,</span> <span class="n">actual_scores</span>
<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="p">)</span>
<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="n">results</span><span class="p">[</span><span class="n">classes</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="o">=</span> <span class="n">precision_at_closest_recall</span>
<a id="__codelineno-0-84" name="__codelineno-0-84"></a>
<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">if</span> <span class="n">plot</span><span class="p">:</span>
<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span>
<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">recall</span><span class="p">,</span>
<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="n">precision</span><span class="p">,</span>
<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="s1">&#39;|&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">str_classes</span><span class="p">[:</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span><span class="si">}</span><span class="s2"></span><span class="si">{</span><span class="s1">&#39;|&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">str_classes</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">:])</span><span class="si">}</span><span class="s2"> (P@</span><span class="si">{</span><span class="n">target_recall</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="n">precision_at_closest_recall</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">, AP=</span><span class="si">{</span><span class="n">average_precision</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="p">)</span>
<a id="__codelineno-0-91" name="__codelineno-0-91"></a>
<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="k">if</span> <span class="n">plot</span><span class="p">:</span>
<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s2">&quot;upper right&quot;</span><span class="p">)</span>
<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="n">ax</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">target_recall</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;--&quot;</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;#55c6bb&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">2.0</span><span class="p">)</span>
<a id="__codelineno-0-95" name="__codelineno-0-95"></a>
<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">if</span> <span class="n">title</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="n">title</span> <span class="o">=</span> <span class="s2">&quot;Ranking evaluation&quot;</span>
<a id="__codelineno-0-98" name="__codelineno-0-98"></a>
<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s1"> (</span><span class="si">{</span><span class="s2">&quot; &lt; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">str_classes</span><span class="p">)</span><span class="si">}</span><span class="s1">)&#39;</span><span class="p">,</span> <span class="n">pad</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<a id="__codelineno-0-100" name="__codelineno-0-100"></a>
<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s2">&quot;Recall&quot;</span><span class="p">)</span>
<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">ax</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s2">&quot;Precision&quot;</span><span class="p">)</span>
<a id="__codelineno-0-103" name="__codelineno-0-103"></a>
<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="n">ax</span><span class="o">.</span><span class="n">set_xticks</span><span class="p">([</span><span class="n">target_recall</span><span class="p">]</span> <span class="o">+</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">ax</span><span class="o">.</span><span class="n">get_xticks</span><span class="p">()))</span>
<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="k">if</span> <span class="n">plot</span> <span class="ow">and</span> <span class="n">output_svg</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="k">if</span> <span class="n">axes</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="k">elif</span> <span class="n">output_svg</span><span class="p">:</span>
<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">output_svg</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s2">&quot;svg&quot;</span><span class="p">)</span>
<a id="__codelineno-0-111" name="__codelineno-0-111"></a>
<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="k">return</span> <span class="n">results</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
</div>
</div>
@ -2999,7 +3470,7 @@ thread and <code>ignore_exceptions=False</code>.</p></td>
</div>
</div><h2 id="composable-parallel-processing">Composable parallel processing<a class="headerlink" href="#composable-parallel-processing" title="Permanent link">#</a></h2>
<p>Because both <a class="autorefs autorefs-internal" href="#great_ai.utilities.threaded_parallel_map">threaded_parallel_map</a> and [parallel_map][great_ai.utilities.parallel_map.parallel_map] have a streaming interface, it is easy to compose them and end up with, for example, a process for each CPU core with its own thread-pool or event-loop. Longer pipelines are also easy to imagine. The chunking methods help in these compositions.</p>
<p>Because both <a class="autorefs autorefs-internal" href="#great_ai.utilities.threaded_parallel_map">threaded_parallel_map</a> and <a class="autorefs autorefs-internal" href="#great_ai.utilities.parallel_map.parallel_map.parallel_map">parallel_map</a> have a streaming interface, it is easy to compose them and end up with, for example, a process for each CPU core with its own thread-pool or event-loop. Longer pipelines are also easy to imagine. The chunking methods help in these compositions.</p>
<p>For more info, check-out <a href="/how-to-guides/scraping">the scraping guide</a>.</p>
@ -3953,7 +4424,7 @@ the system and <code>ignore_missing=False</code>.</p></td>
<small>
Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 11, 2022</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 13, 2022</span>
</small>