nlp_api.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. """
  2. @author: luojunhui
  3. """
  4. import requests
  5. from requests.exceptions import RequestException, JSONDecodeError
  6. from applications import bot
  7. def similarity_between_title_list(target_title_list: list[str], base_title_list: list[str]) -> list[list[float]]:
  8. """
  9. cal the similarity between two list of title
  10. :param target_title_list: target title_list
  11. :param base_title_list: base title_list
  12. :return: list of similarity
  13. """
  14. url = 'http://61.48.133.26:6060/nlp'
  15. url_backup = 'http://61.48.133.26:6061/nlp'
  16. body = {
  17. "data": {
  18. "text_list_a": target_title_list,
  19. "text_list_b": base_title_list
  20. },
  21. "function": "similarities_cross",
  22. "use_cache": False
  23. }
  24. response = None
  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. bot(
  31. title='NLP API 网络异常',
  32. detail={
  33. "error_type": type(e).__name__,
  34. "error_msg": str(e)
  35. }
  36. )
  37. return []
  38. if response.status_code != 200:
  39. bot(
  40. title='NLP API 业务异常',
  41. detail={
  42. "status_code": response.status_code,
  43. "response_text": response.text[:200] # 截取部分内容避免过大
  44. }
  45. )
  46. return []
  47. try:
  48. response_json = response.json()
  49. score_array = response_json['score_list_list']
  50. except (JSONDecodeError, KeyError) as e:
  51. bot(
  52. title='NLP响应数据异常',
  53. detail={
  54. "error_type": type(e).__name__,
  55. "raw_response": response.text[:200]
  56. }
  57. )
  58. return []
  59. return score_array