nlp_api.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. """
  2. @author: luojunhui
  3. """
  4. import requests
  5. import traceback
  6. from requests.exceptions import RequestException, JSONDecodeError
  7. from applications.aliyunLogApi import log
  8. def similarity_between_title_list(target_title_list: list[str], base_title_list: list[str]) -> list[list[float]]:
  9. """
  10. cal the similarity between two list of title
  11. :param target_title_list: target title_list
  12. :param base_title_list: base title_list
  13. :return: list of similarity
  14. """
  15. url = 'http://61.48.133.26:6060/nlp'
  16. url_backup = 'http://192.168.203.4:6060/nlp'
  17. body = {
  18. "data": {
  19. "text_list_a": target_title_list,
  20. "text_list_b": base_title_list
  21. },
  22. "function": "similarities_cross",
  23. "use_cache": False
  24. }
  25. try:
  26. response = requests.post(url, json=body, timeout=120)
  27. if response.status_code != 200:
  28. response = requests.post(url_backup, json=body, timeout=120)
  29. except RequestException as e:
  30. log(
  31. task="nlp",
  32. function="similarity_between_title_list",
  33. status="fail",
  34. message="nlp server web error",
  35. data={
  36. "e": str(e),
  37. "error_msg": traceback.format_exc()
  38. }
  39. )
  40. # use back up
  41. response = requests.post(url_backup, json=body, timeout=120)
  42. if response.status_code != 200:
  43. log(
  44. task="nlp",
  45. function="similarity_between_title_list",
  46. status="fail",
  47. message='nlp server request error',
  48. data={
  49. "status_code": response.status_code,
  50. "response_text": response.text[:200] # 截取部分内容避免过大
  51. }
  52. )
  53. return []
  54. try:
  55. response_json = response.json()
  56. score_array = response_json['score_list_list']
  57. except (JSONDecodeError, KeyError) as e:
  58. log(
  59. task="nlp",
  60. function="similarity_between_title_list",
  61. status="fail",
  62. message='nlp server response error',
  63. data={
  64. "error_type": type(e).__name__,
  65. "raw_response": response.text[:200]
  66. }
  67. )
  68. return []
  69. return score_array