File size: 1,496 Bytes
df37f6e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from functools import lru_cache
from fastapi import Depends, Request
from typing_extensions import Annotated
from app.dto.user import UserDTO
from app.ner.services.ner import NER, get_ner_model


class UserService:

    def __init__(self, model: NER):
        self.model = model

    async def get_user(self, user_id: str = None) -> UserDTO:
        """
        Lấy thông tin người dùng từ cơ sở dữ liệu dựa trên user_id.
        Args:
            user_id (str): ID của người dùng.
        Returns:
            dict: Thông tin người dùng nếu tìm thấy, ngược lại trả về None.
        """
        # if not user_id:
        #     return None
        # user = await FutaClinet.find_user_by_id(user_id)
        # if user:
        #     return user
        # return None
        user = UserDTO(
            user_name="Đại", phone_number="0987654321", email="vdai234@gmail.com"
        )
        return user

    async def extract_user_name(self, text: str) -> str:
        """
        Trích xuất tên người dùng từ văn bản sử dụng mô hình NER.
        Args:
            text (str): Văn bản đầu vào.
        Returns:
            str: Tên người dùng được trích xuất.
        """
        if not self.model:
            raise ValueError("Model not loaded. Please call load_model() first.")

        pred = await self.model.predict(text, entity_tag="PERSON")
        if pred:
            return pred[0]
        return None