Advertisement
Guest User

Untitled

a guest
Jun 30th, 2015
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. #!/usr/bin/env python
  2. from flask import Flask, url_for, jsonify
  3. app = Flask(__name__)
  4. import nltk, re, timex, json, sys
  5.  
  6. @app.route('/')
  7. def api_root():
  8. return 'Welcome'
  9.  
  10. @app.route('/articles')
  11. def api_articles():
  12. return 'List of ' + url_for('api_articles')
  13.  
  14. @app.route('/articles/<articleid>')
  15. def api_article(articleid):
  16. return 'You are reading ' + articleid
  17.  
  18.  
  19. from flask import request
  20.  
  21. @app.route('/nlp')
  22. def api_hello():
  23. if 'text' in request.args:
  24. processed_text = ie_preprocess(request.args['text'])
  25. dictionary = tree_to_dict(processed_text)
  26. resp = jsonify(**dictionary)
  27. return resp
  28. else:
  29. return 'invalid'
  30.  
  31. @app.route('/echo', methods = ['GET', 'POST', 'PATCH', 'PUT', 'DELETE'])
  32. def api_echo():
  33. if request.method == 'GET':
  34. return "ECHO: GET\n"
  35.  
  36. elif request.method == 'POST':
  37. return "ECHO: POST\n"
  38.  
  39. elif request.method == 'PATCH':
  40. return "ECHO: PACTH\n"
  41.  
  42. elif request.method == 'PUT':
  43. return "ECHO: PUT\n"
  44.  
  45. elif request.method == 'DELETE':
  46. return "ECHO: DELETE"
  47.  
  48. from flask import json
  49.  
  50. @app.route('/messages', methods = ['POST'])
  51. def api_message():
  52.  
  53. if request.headers['Content-Type'] == 'text/plain':
  54. return "Text Message: " + request.data
  55.  
  56. elif request.headers['Content-Type'] == 'application/json':
  57. return "JSON Message: " + json.dumps(request.json)
  58.  
  59. elif request.headers['Content-Type'] == 'application/octet-stream':
  60. f = open('./binary', 'wb')
  61. f.write(request.data)
  62. f.close()
  63. return "Binary message written!"
  64.  
  65. else:
  66. return "415 Unsupported Media Type ;)"
  67.  
  68. def ie_preprocess(text):
  69. timex.tag(text)
  70. sentences = nltk.sent_tokenize(text)
  71. sentences = [nltk.word_tokenize(sent) for sent in sentences]
  72. sentences = [nltk.pos_tag(sent) for sent in sentences]
  73.  
  74. # tag pattern - a sequence of part-of-speech tags delimited to regular expression patterns
  75. grammar = "NP: {<NN.*>*}"
  76. grammar = "NP: {<CD>*<NN.*>*}"
  77. cp = nltk.RegexpParser(grammar)
  78. result = cp.parse(sentences[0])
  79. #result.draw()
  80. ne = nltk.ne_chunk(sentences[0])
  81. #print result
  82. #print ne
  83. return ne
  84.  
  85. def tree_to_dict(tree):
  86. tdict = {}
  87. for t in tree:
  88. if isinstance(t, nltk.Tree) and isinstance(t[0], nltk.Tree):
  89. tdict[t.label()] = tree_to_dict(t)
  90. elif isinstance(t, nltk.Tree):
  91. if (len(t) >= 2):
  92. tdict[t.label()] = t[0][0] + ' ' + t[1][0]
  93. else:
  94. tdict[t.label()] = t[0][0]
  95. return tdict
  96.  
  97. if __name__ == '__main__':
  98. app.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement