|
|
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&action=raw&ctype=text/javascript" type="text/javascript"></script>
| |
− | <script src="/wiki/index.php?title=Team:USTC-Software/js/all&action=raw&ctype=text/javascript" type="text/javascript"></script>
| |
− | </body>
| |
− | </html>
| |