Skip to content
/ FavAni Public

FavAni,基于神经网络推荐算法,找到你最喜欢的动画!

Notifications You must be signed in to change notification settings

viogami/FavAni

Repository files navigation

FavAni

FavAni,基于神经网络推荐算法,找到你最喜欢的动画!

演示地址Demo

前端使用 Vue3 和 Element Plus 进行构建,让你在使用该工具的同时享受良好的用户体验。 后端使用golang的GIN框架,简洁高效,性能卓越,打包main文件一键服务器端部署。 图算法依赖pytorch,处理为接口独立部署,通过grpc和此后端进行通信。

后端地址:http://faapi.viogami.me/

使用【/routes】路由可查看后端全部接口 --> http://faapi.viogami.me/routes

你可以访问它的 GitHub 仓库地址:FavAni

首页面预览

preview

前言

个人开发的基于 BangumiAPI 执行推荐算法的数据分析网站。 调用 Bangumi的 API 实现数据检索,并且构建知识图谱。使用jwt鉴权,并自动登录。

后端 RestfulAPI ,通过 Gin 实现。接入 gorm 使用 mysql ,接入鉴权中间件。 算法后端存放知识图谱和用户的收藏信息,每个用户的收藏用来构建子图,使用图卷积神经网络(GCN)并引入注意力机制实现推荐。

grpc服务使用redis缓存结果,高速访问。

实现细节

  • 前端界面设计
  • 后端api接口设计
  • 登录注册功能
  • jwt鉴权,根据token有效与否自动登录
  • 数据库表设计
  • 基于bangumi构建知识图谱
  • 用户收藏构建子图,执行推荐算法
  • grpc通信
  • redis缓存grpc请求和结果,并对部分接口使用消息队列实现并发访问稳定性。
  • docker文件编写

快速上手

演示地址Demo

使用【/routes】查看后端全部接口 --> http://faapi.viogami.me/routes

python的gcn模型接口部署在9999端口

文件夹解释

  • asserts: 存放必要且无法打包至可执行文件的外部文件
  • auth : 鉴权相关文件,目前为jwt
  • config:定义配置文件格式并存放配置文件,用于上线灵活修改项目
  • database: 定义数据库模型,以及创建mysql和redis
  • middleware:定义中间件,包含中间件函数
  • pb:定义grpc的protoc文件
  • repos:仓库的接口文件,每个数据库表对应一个仓库
  • server:启动服务,包括mysql,redis,grpc等
  • web:前端文件夹

grpc说明

本后端做grpc客户端,gcn模型处理代码用py编写,做grpc的服务端。

协议文件编写在proto/gcn.proto

python服务端简要代码

import grpc
from concurrent import futures
from proto import gcn_pb2_grpc, gcn_pb2

class GCNServicer(gcn_pb2_grpc.GCNServiceServicer):
    def ProcessGraph(self, request, context):
        # Process graph data using GCN and return result
        # example: 
        # return gcn_pb2.GCNResult(node_scores={"node1": 0.5, "node2": 0.8})

def server():
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    gcn_pb2_grpc.add_GCNServiceServicer_to_server(GCNServicer(), server)
    server.add_insecure_port('[::]:9999')
    server.start()
    print('gRPC 服务端已开启,端口为9999...')
    server.wait_for_termination()

if __name__ == '__main__':
    server()

About

FavAni,基于神经网络推荐算法,找到你最喜欢的动画!

Topics

Resources

Stars

Watchers

Forks