12345678910111213141516171819202122232425262728293031323334 |
- from fastapi import APIRouter
- from gensim.models import KeyedVectors
- from loguru import logger
- import traceback
- router = APIRouter(tags=['related_words_server'])
- wv = KeyedVectors.load("/data/pythonProject/video_to_word/models/word2vec.wordvectors", mmap='r')
- @logger.catch()
- @router.post("/related_words/", description="获取相关词/推荐词", summary="获取相关词/推荐词")
- def get_related_words(word: str):
- response = {'code': 0,
- "success": True,
- "result": []}
- try:
- if word in wv:
- similar_word_lst = wv.most_similar(word, topn=10)
- similar_word_lst = [item[0] for item in similar_word_lst if item[1] > 0.73]
- response['result'] = similar_word_lst
- logger.info(f"request body: {word}, response body: {response}")
- return response
- except:
- response = {"code": -1,
- "message": traceback.format_exc(),
- "success": False,
- "result": []}
- logger.error(f"request body: {word}, response body: {response}")
- return response
- if __name__ == '__main__':
- get_related_words('社交')
|