Difference between revisions of "Team:USTC-Software/Model"

Line 78: Line 78:
 
             <div class="twelve wide column">
 
             <div class="twelve wide column">
 
                 <div class="inside-container" style="height: 100%;padding-top: 100px;">
 
                 <div class="inside-container" style="height: 100%;padding-top: 100px;">
<h1>Model</h1>
 
<p>There're two outstanding models supporting our project:</p>
 
<ul>
 
<li><strong>Natural language processing (NLP)</strong> </li>
 
<li><strong>Object-relational mapping (ORM)</strong></li>
 
<li><strong>WebSocket</strong></li>
 
</ul>
 
<h2><strong>Natural language processing (NLP)</strong> </h2>
 
<p>Natural language processing (NLP) is an area of computer science and artificial intelligence that is concerned with the interaction between computers and humans in natural language.</p>
 
<p>The ultimate goal of NLP is to enable computers to understand language as well as we do.</p>
 
<p>For example, we can use these keywords to search:</p>
 
<p><code>molecular biology</code></p>
 
<p>But NLP give us the power to get closer to what we actually want to search:</p>
 
<p><code>molecular biology by Someone this year with #immunity</code></p>
 
<p>NLP can extract all the information and construct a query action:</p>
 
<p><code>keyword: molecular biology
 
author: Someone
 
time: this year
 
label: #immunity</code></p>
 
<p>In our project, we use an open-source software named <strong>Stanford CoreNLP</strong> (https://stanfordnlp.github.io/CoreNLP/) to parse the search string.</p>
 
<p><img alt="image-20181017181227081" src="/File:T--USTC-Software--image-20181017181227081.png" /></p>
 
<p>CoreNLP provides many underlying models so that we can get analysis information to construct more expressive and more human-friendly query.</p>
 
<div class="divider"></div>
 
<h2><strong>Object-relational mapping (ORM)</strong></h2>
 
<p>Object-Relational Mapping (ORM) allows us to work with objects and have them saved to the database automatically. It can greatly simplify create-read-update-delete (CRUD) operations and make our code more comprehensive.</p>
 
<p>ORM makes our <code>user</code>,<code>report</code>,<code>notice</code> and more models easy to query, to list and to link to each other.</p>
 
<p><img alt="ORM.svg" src="/File:T--USTC-Software--ORM.svg" /></p>
 
<p>In our project, we use <strong>Django ORM</strong> with MySQL backend as the underlying models to provide fast and flexible queries.</p>
 
<div class="divider"></div>
 
<h2><strong>WebSocket</strong></h2>
 
<p>WebSocket is a computer communications protocol, providing full-duplex communication channels over a single TCP connection. The HTML5 WebSockets specification defines an API that enables web pages to use the WebSockets protocol for two-way communication with a remote host. It introduces the WebSocket interface and defines a full-duplex communication channel that operates through a single socket over the Web. HTML5 WebSockets provide an enormous reduction in unnecessary network traffic and latency compared to the unscalable polling and long-polling solutions that were used to simulate a full-duplex connection by maintaining two connections.</p>
 
<p><img alt="websocket.jpg" src="/File:T--USTC-Software--websocket.jpg" /></p>
 
<p>In out project, we use WebSocket protocol to push our notifications. The WebSocket protocol makes the new notifications even real-time fast to be received.</p>            </div>
 
        </div>
 
<script src="/wiki/index.php?title=Team:USTC-Software/js/init&amp;action=raw&amp;ctype=text/javascript" type="text/javascript"></script>
 
<script src="/wiki/index.php?title=Team:USTC-Software/js/all&amp;action=raw&amp;ctype=text/javascript" type="text/javascript"></script>
 
    </body>
 
</html>
 

Revision as of 15:58, 17 October 2018