Guest User

Untitled

a guest
Apr 24th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. from flask import jsonify, Flask, request
  2.  
  3. import pickle,operator
  4. import nltk
  5. # from main_api import *
  6.  
  7. application = Flask(__name__)
  8.  
  9. def get_all_subString(word):
  10. word_len = len(word)
  11. list_subs = [word[:i].lower() for i in range(word_len + 1) if i > 2]
  12. return list_subs
  13.  
  14. def get_search_list(text):
  15. words = nltk.word_tokenize(text)
  16. search_list = []
  17. for w in words:
  18. if len(w) >= 3:
  19. search_list.extend(get_all_subString(w))
  20. return search_list
  21. def get_seach_words_score(search_list, text):
  22. score = 0
  23. for w in search_list:
  24. if w in text:
  25. score += 1
  26. return score
  27.  
  28. def get_all_api_data(user_search_list):
  29. a2_v = pickle.load(open("a2_v.p", "rb"))
  30. b2_v = pickle.load(open("b2_v.p", "rb"))
  31. c2_v = pickle.load(open("c2_v.p", "rb"))
  32. others = [a2_v, b2_v, c2_v]
  33. wiki_data = pickle.load(open("wiki_data.p", "rb"))
  34. master_map = pickle.load(open("master_map.p", "rb"))
  35. Matched_Item = {}
  36. Other_info = ""
  37. scores = {}
  38. for idx, mm in enumerate(master_map):
  39. scores[idx] = get_seach_words_score(user_search_list, mm)
  40. sorted_x = sorted(scores.items(), key=operator.itemgetter(1), reverse=True)
  41. sorted_x = sorted_x[:3]
  42. for s in sorted_x:
  43. master_text = master_map[s[0]]
  44. Matched_Item[master_text] = wiki_data[master_text]
  45. sorted_x.clear()
  46. scores = {}
  47. for o in others:
  48. for idx, mm in enumerate(o):
  49. scores[idx] = get_seach_words_score(user_search_list, mm)
  50. sorted_x = sorted(scores.items(), key=operator.itemgetter(1), reverse=True)
  51. try:
  52. sorted_x = sorted_x[:1]
  53. for s in sorted_x:
  54. Other_info += o[s[0]] + "n"
  55. except:
  56. pass
  57. sorted_x.clear()
  58. return jsonify({"Matched Item": Matched_Item, "Other Infos": Other_info})
  59.  
  60.  
  61.  
  62. @application.route('/', methods=['GET'])
  63. def return_home():
  64. return jsonify({"Message": "please use /query to get the data"})
  65.  
  66.  
  67. @application.route('/<string:text>', methods=['GET'])
  68. def return_result(text):
  69. search_list = get_search_list(text)
  70. # print(search_list)
  71. # get_all_infos(search_list)
  72. return get_all_api_data(search_list)
  73. #return text
  74.  
  75.  
  76. if __name__ == '__main__':
  77. application.run()
Add Comment
Please, Sign In to add comment