<!-- HTML header for doxygen 1.8.4-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="keywords" content="madlib,postgres,greenplum,machine learning,data mining,deep learning,ensemble methods,data science,market basket analysis,affinity analysis,pca,lda,regression,elastic net,huber white,proportional hazards,k-means,latent dirichlet allocation,bayes,support vector machines,svm"/>
<title>MADlib: crf_data_loader.sql_in File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<!-- hack in the navigation tree -->
<script type="text/javascript" src="eigen_navtree_hacks.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="madlib_extra.css" rel="stylesheet" type="text/css"/>
<!-- google analytics -->
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-45382226-1', 'madlib.apache.org');
  ga('send', 'pageview');
</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><a href="http://madlib.apache.org"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   <span id="projectnumber">2.1.0</span>
   </div>
   <div id="projectbrief">User Documentation for Apache MADlib</div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('crf__data__loader_8sql__in.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">crf_data_loader.sql_in File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Create database tables and import POS/NER training/testing data to the database.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aaa609ec1d1d4cff0f335fa358091d5c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crf__data__loader_8sql__in.html#aaa609ec1d1d4cff0f335fa358091d5c3">crf_train_data</a> (text datapath)</td></tr>
<tr class="separator:aaa609ec1d1d4cff0f335fa358091d5c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf2a39a0b84a5e7ae215db28b3a87f81"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crf__data__loader_8sql__in.html#abf2a39a0b84a5e7ae215db28b3a87f81">crf_test_data</a> (text datapath)</td></tr>
<tr class="separator:abf2a39a0b84a5e7ae215db28b3a87f81"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><dl class="section date"><dt>Date</dt><dd>Feb. 2012 </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="abf2a39a0b84a5e7ae215db28b3a87f81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf2a39a0b84a5e7ae215db28b3a87f81">&#9670;&nbsp;</a></span>crf_test_data()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void crf_test_data </td>
          <td>(</td>
          <td class="paramtype">text&#160;</td>
          <td class="paramname"><em>datapath</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section user"><dt>Input</dt><dd></dd></dl>
<ol type="1">
<li>Prepare an input test data segment table, e.g.:</li>
</ol>
<ul>
<li>CREATE TABLE test_segmenttbl (start_pos integer,doc_id integer,seg_text text, max_pos integer) <pre class="fragment">sql&gt; select * from test_segmenttbl order by doc_id, start_pos;
start_pos | doc_id |   seg_text    | max_pos
----------+---------+--------------+-------------
     0    |    1   |          the  |    26
     1    |    1   |       madlib  |    26
     2    |    1   |      mission  |    26
     3    |    1   |            :  |    26
     4    |    1   |           to  |    26
     5    |    1   |       foster  |    26
     6    |    1   |   widespread  |    26
     7    |    1   |  development  |    26
     8    |    1   |           of  |    26
     9    |    1   |     scalable  |    26
     10   |    1   |     analytic  |    26
     11   |    1   |       skills  |    26
     12   |    1   |            ,  |    26
     13   |    1   |           by  |    26
     ...
     24   |    1   |  open-source  |    26
     25   |    1   |   development |    26
     26   |    1   |             . |    26
</pre></li>
</ul>
<dl class="section user"><dt>Usage</dt><dd><ul>
<li>create tables and import data to the database SELECT madlib.crf_test_data('/path/to/modeldata') </li>
</ul>
</dd></dl>

</div>
</div>
<a id="aaa609ec1d1d4cff0f335fa358091d5c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa609ec1d1d4cff0f335fa358091d5c3">&#9670;&nbsp;</a></span>crf_train_data()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void crf_train_data </td>
          <td>(</td>
          <td class="paramtype">text&#160;</td>
          <td class="paramname"><em>datapath</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section user"><dt>Input</dt><dd></dd></dl>
<ol type="1">
<li>Prepare an input train data segment table, e.g.:</li>
</ol>
<ul>
<li>CREATE TABLE train_segmenttbl (start_pos integer,doc_id integer,seg_text text, max_pos integer) <pre class="fragment">sql&gt; select * from train_segmenttbl order by doc_id, start_pos;
start_pos | doc_id | seg_text      | max_pos
----------+---------+--------------+-------------
     0    |    1   |       madlib  |    9
     1    |    1   |           is  |    9
     2    |    1   |           an  |    9
     3    |    1   |  open-source  |    9
     4    |    1   |      library  |    9
     5    |    1   |          for  |    9
     6    |    1   |     scalable  |    9
     7    |    1   |  in-database  |    9
     8    |    1   |    analytics  |    9
     9    |    1   |            .  |    9
     0    |    2   |           it  |   16
     1    |    2   |     provides  |   16
     2    |    2   |data-parallel  |   16
     3    |    2   |implementations|   16
     ...
     14   |    2   |  unstructured |   16
     15   |    2   |          data |   16
     16   |    2   |             . |   16
</pre></li>
</ul>
<ol type="1">
<li>Prepare an input dictionary table, e.g.,:</li>
</ol>
<ul>
<li>CREATE TABLE crf_dictionary (token text,token_id integer,label text,count integer,total integer) <pre class="fragment">sql&gt; select * from crf_dictionary;
token       | label  | count | total
------------+--------+--------------
   freefall |   11   |   1   |  1
     policy |   11   |   2   |  2
   measures |   12   |   1   |  1
 commitment |   11   |   1   |  1
        new |    6   |   1   |  1
     speech |   11   |   1   |  1
         's |   16   |   2   |  2
     reckon |   30   |   1   |  1
 underlying |   28   |   1   |  1
 ...
</pre></li>
</ul>
<ol type="1">
<li>Prepare an input label table, e.g.,:</li>
</ol>
<ul>
<li>CREATE TABLE labeltbl (id integer,label character varying) <pre class="fragment">sql&gt; select * from labeltbl order by id;
id          | label
------------+--------
      0     |   CC
      1     |   CD
      2     |   DT
      3     |   EX
      4     |   FW
      5     |   IN
      6     |   JJ
...
     42     |    ,
     43     |    .
     44     |    :
</pre></li>
</ul>
<ol type="1">
<li>Prepare an input regex table, e.g.,:</li>
</ol>
<ul>
<li>CREATE TABLE crf_regex (pattern text,name text) <pre class="fragment">sql&gt; select * from crf_regex;
pattern       |   name
------------- +---------------
^[A-Z][a-z]+$ |  InitCapital%
     ^[A-Z]+$ |  isAllCapital%
 ^.*[0-9]+.*$ |  containsDigit%
      ^.+[.]$ |  endsWithDot%
      ^.+[,]$ |  endsWithComma%
       ^.+er$ |  endsWithER%
      ^.+est$ |  endsWithEst%
       ^.+ed$ |  endsWithED%
...
</pre></li>
</ul>
<ol type="1">
<li>Prepare an input feature table, e.g.,:</li>
</ol>
<ul>
<li>CREATE TABLE featuretbl (id integer,name text,prev_label_id integer,label_id integer,weight float) <pre class="fragment">sql&gt; select * from featuretbl order by id;
id   |     name     | prev_label_id | label_id | weight
-------------------------------------------------------
1    | W_chancellor |       -1      |    13     | 2.2322
2    |         E.13 |       13      |     5     | 2.3995
3    |            U |       -1      |     5     | 1.2164
4    |         W_of |       -1      |     5     | 2.8744
5    |          E.5 |        5      |     2     | 3.7716
6    |        W_the |       -1      |     2     | 4.1790
7    |          E.2 |        2      |    13     | 0.8957
...
</pre></li>
</ul>
<ol type="1">
<li>Prepare an crf feature set table, e.g.,:</li>
</ol>
<ul>
<li>CREATE TABLE madlib.crf_feature_dic(f_index integer, f_name text, feature integer[]) <pre class="fragment">sql&gt; select * from crf_feature_dic order by id;
f_index|     f_name   | feature
--------------------------------
0      | W_chancellor |       -1
1      |         E.13 |       13
2      |            U |       -1
3      |         W_of |       -1
4      |          E.5 |        5
5      |        W_the |       -1
...
</pre></li>
</ul>
<dl class="section user"><dt>Usage</dt><dd><ul>
<li>create tables and import data to the database SELECT madlib.crf_train_data('/path/to/modeldata') </li>
</ul>
</dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_efbcf68973d247bbf15f9eecae7f24e3.html">ports</a></li><li class="navelem"><a class="el" href="dir_a4a48839224ef8488facbffa8a397967.html">postgres</a></li><li class="navelem"><a class="el" href="dir_dc596537ad427a4d866006d1a3e1fe29.html">modules</a></li><li class="navelem"><a class="el" href="dir_70e9abe17564e15776adcab8550c7667.html">crf</a></li><li class="navelem"><a class="el" href="crf__data__loader_8sql__in.html">crf_data_loader.sql_in</a></li>
    <li class="footer">Generated on Mon Aug 28 2023 08:03:53 for MADlib by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>
