반응형
Recent Posts
Recent Comments
관리 메뉴

개발잡부

[tensorflow 2] Text embedding API를 만들어 보자 본문

Python/text embeddings

[tensorflow 2] Text embedding API를 만들어 보자

닉의네임 2022. 1. 15. 20:06
반응형

 

path 에서 받아쓰려고 했더니만 이거 버리고 다시 만들자!

https://ldh-6019.tistory.com/195

 

[tensorflow 2] Text embedding API를 만들어 보자 2

flask_restx 로도 만들수 있네.. 하지만.. 있는걸 수정 후딱 post 만 만들어 보자 뭐지 2000 ms 나오길래 망했다고 생각했는데 다시 해보니 40 ms 대로 나옴 일단 만들어 # import tensorflow as tf import tens..

ldh-6019.tistory.com


 

900gle shopping에서 사용 할 text embedding API   크롤러, 검색 API 에서 사용 예정

 

method POST 로 만들고 싶었으나.. 일단 GET 으로 

 

# import tensorflow as tf
import tensorflow_hub as hub
import tensorflow_text
import kss, numpy
import json

from flask import Flask
from flask_restful import reqparse, abort, Api, Resource

app = Flask(__name__)
api = Api(app)

parser = reqparse.RequestParser()

def getTextVectors(input):
    vectors = module(input)
    return [vector.numpy().tolist() for vector in vectors]
#
class NumpyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, numpy.ndarray):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

class Vector(Resource):
    def get(self, input):
        return {'vectors': json.dumps(getTextVectors(input)[0], cls=NumpyEncoder)}

    def post(self, input):
        args = parser.parse_args()
        return {'vectors': json.dumps(getTextVectors(input)[0], cls=NumpyEncoder)}

api.add_resource(Vector, '/vectors/<string:input>')

if __name__ == '__main__':
    module = hub.load("https://tfhub.dev/google/universal-sentence-encoder-multilingual-large/3")
    app.run(debug=True)

 

결과

512차원 백터 json 으로 반환

반응형
Comments