#!/usr/bin/env python3

import sys
import cgi
import urllib
import cgitb
cgitb.enable()
import html


data = '../SetsTwNC/'
# script = 'http://rugtest16.service.rug.nl/gosse/bin/verwant_twnc.py'
script = 'http://urd2.let.rug.nl/gosse/bin/verwant_twnc.py'

def findWords(kwh, filename, rm = '', link = False):
    l = len(kwh)
    p = ''
    fp = open(data + filename, 'r')
    for line in fp:
        if line[0:l] == kwh:
            if (rm):
                line = line.replace(rm, '')
            ww = line.split('#')
            for w in ww[1:21]:
                w = w.strip()
                if (w):
                    if (link):
                        sys.stdout.write('%s<a href="%s?keyword=%s">%s</a>' %
                                         (p, script, urllib.parse.quote(w), html.escape(w).replace(' ', '&nbsp;')))
                    else:
                        sys.stdout.write('%s<em>%s</em>' %
                                         (p, html.escape(w).replace(' ', '&nbsp;')))
                    p = ',\n'
    fp.close()

sys.stdout.write('''Content-type: text/html; charset=utf8

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html40/loose.dtd">
<html>
<head>
  <title>Verwante Woorden</title>
  <link rel=stylesheet href="https://www.let.rug.nl/~gosse/Sets/sets.css" type="text/css">
  <meta name="ROBOTS" content="NOINDEX,NOFOLLOW">
<link rel="search" type="application/opensearchdescription+xml" title="VerwanteWoorden" href="https://www.let.rug.nl/~gosse/SetsTwNC/search_plugin.xml"/>
</head>
<body><div class="logos">
<div class="logo">
<a href="http://www.rug.nl/"><img src="https://www.let.rug.nl/~gosse/Sets/hs07_logo_rug.png"
	alt="Rijksuniversiteit Groningen" title="Rijksuniversiteit Groningen"></a>
</div>
<div class="logo"><a href="http://www.rug.nl/let/informatiekunde"><img
	src="https://www.let.rug.nl/~gosse/Sets/informatiekunde.png" 
        alt="Informatiekunde" title="Informatiekunde"></a>
</div>

<div align="right" class="right-logo"><a
href="http://www.youtube.com/watch?v=oY5bZf5lmck"><img
src="https://www.let.rug.nl/~vdplas/Images/IKvideo.png"
alt="Informatiekunde video" title="Informatiekunde video"
height="50"></a></div>

<div align="right" class="right-logo"><a href="http://www.nwo.nl/Imix"><img
	src="https://www.let.rug.nl/~gosse/Sets/NWO.png" 
        alt="NWO" title="NWO" height="50"></a>
</div>
<div align="right" class="right-logo"><a href="https://www.let.rug.nl/~gosse/Imix"><img
	src="https://www.let.rug.nl/~gosse/Imix/imix_logo.bmp" 
        alt="IMIX Groningen" title="IMIX Groningen" height="50"></a>
</div>
</div>
<div class="blurp">
van traditionele letterenstudies en moderne informatietechnologie
</div>

<div class="banner">&nbsp;</div>
<center>
  <p>
  <form method="GET" action="%(script)s">
  <input maxlength="128" size="20" name="keyword">
  <input type="submit" value="Zoek verwante woorden">
  </form>
  <p>
</center>
''' % {'script': script})

q = cgi.FieldStorage()

try:
    kw = q['keyword'].value
    kw = kw.strip()
    assert(kw)
except:
    kw = "BMW"

kwh = kw + '#'
#kwCgi = html.escape(kwh)
kwCgi = kw

sys.stdout.write('<p>Woorden zoals <b>%s</b>:\n' % kwCgi)
findWords(kwh, 'all.nbest', link = True)

sys.stdout.write('\n<p>\nWerkwoorden met <b>%s</b> als <font color="red">lijdend voorwerp</font> of als deel van een <font color="red">voorzetselvoorwerp</font>:\n' % kwCgi)
findWords(kwh, 'obj1.mibest', 'OBJ')
sys.stdout.write(', ')
findWords(kwh, 'pc.mibest', 'OBJ')

sys.stdout.write('\n<p>\nWerkwoorden met <b>%s</b> als <font color="red">onderwerp</font>:\n' % kwCgi)
findWords(kwh, 'su.mibest', 'SUBJ')

sys.stdout.write('\n<p>\n<font color="red">Bijvoeglijke naamwoorden</font> bij <b>%s</b>:\n' % kwCgi)
findWords(kwh, 'mod.mibest', 'ADJ')

sys.stdout.write('\n<p>\nWoorden waarmee <b>%s</b> in een <font color="red">nevenschikking</font> voorkomt:\n' % kwCgi)
findWords(kwh, 'cnj.mibest', ' CONJ', True)

sys.stdout.write('\n<p>\nEen <b>%s</b> is een (<font color="red">bijstelling bij</font>):\n' % kwCgi)
findWords(kwh, 'app-of.mibest', ' CONJ', True)

sys.stdout.write('\n<p>\nVoorbeelden van <b>%s</b> (<font color="red">heeft bijstelling</font>):\n' % kwCgi)
findWords(kwh, 'app.mibest', ' CONJ', True)

sys.stdout.write('''
<p>
<small>Data ontleend aan Nederlandse kranten (AD, Trouw, Parool, NRC, Volkskrant) uit de periode 1997-2004
opgenomen in het <a href="http://wwwhome.cs.utwente.nl/~druid/TwNC/TwNC-main.html">Twente Nieuws Corpus</a> (500 mln woorden) en de volledige tekst van de Nederlandse <a href="http://nl.wikipedia.org/wiki/Hoofdpagina">Wikipedia</a> (augustus 2008, 110 miljoen woorden).
<p>
Een <a href="http://ifarm.nl/cgi-bin/setdemo.cgi">vergelijkbare demo</a> is gemaakt door Erik Tjong Kim Sang.
<a href="http://labs.google.com/sets">Google Sets</a> en de <a href="http://demo.patrickpantel.com/Content/LexSem/thesaurus.htm">thesaurus demo</a> van Patrick Pantel zijn vergelijkbare systeem voor het Engels. </small>
</body>
</html>
''')
