recommend

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2022 License: AGPL-3.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StageKey      = "stage"
	ItemEmbDim    = 10
	ItemEmbWindow = 5
)

Variables

View Source
var (
	DebugUserId int
	DebugItemId int
)

Functions

func BatchPredict

func BatchPredict(ctx context.Context, recSys Predictor, userAndItems [][2]int) (y *mat.Dense, err error)

func GetItemEmbeddingModelFromUb

func GetItemEmbeddingModelFromUb(ctx context.Context, iSeq ItemEmbedding) (mod model.Model, err error)

func GetSample

func GetSample(recSys RecSys, ctx context.Context) (sample ps.Samples, err error)

func StartHttpApi

func StartHttpApi(predict Predictor, path string, addr string, efs *embed.FS) (err error)

StartHttpApi starts the http api for recommendation Query by:

curl --header "Content-Type: application/json" \
  --request POST \
  --data '{"userId":107,"itemIdList":[1,2,39]}' \
  http://localhost:8080/api/v1/recommend

Types

type DashboardOverviewResult

type DashboardOverviewResult struct {
	Users         int `json:"users"`
	Items         int `json:"items"`
	TotalPositive int `json:"total_positive"`
	ValidPositive int `json:"valid_positive"`
	ValidNegative int `json:"valid_negative"`
}

type FeatureOverview

type FeatureOverview interface {
	// offset and size use for paging query
	GetUsersFeatureOverview(ctx context.Context, offset, size int, opts map[string][]string) (UserItemOverviewResult, error)

	// offset and size use for paging query
	GetItemsFeatureOverview(ctx context.Context, offset, size int, opts map[string][]string) (ItemOverviewResult, error)

	// GetDashboardOverview
	GetDashboardOverview(ctx context.Context) (DashboardOverviewResult, error)
}

type ItemEmbedding

type ItemEmbedding interface {
	ItemSeqGenerator(context.Context) (<-chan string, error)
}

ItemEmbedding is an interface used to generate item embedding with item2vec model by just providing a behavior based item sequence. Example: user liked items sequence, user bought items sequence, user viewed items sequence

type ItemFeaturer

type ItemFeaturer interface {
	GetItemFeature(context.Context, int) (Tensor, error)
}

type ItemOverView

type ItemOverView struct {
	ItemId       int `json:"item_id"`
	ItemFeatures map[string]interface{}
}

type ItemOverviewResult

type ItemOverviewResult struct {
	Items []ItemOverView `json:"items"`
}

type ItemScore

type ItemScore struct {
	ItemId int     `json:"itemId"`
	Score  float64 `json:"score"`
}

func Rank

func Rank(ctx context.Context, recSys Predictor, userId int, itemIds []int) (itemScores []ItemScore, err error)

type PreRanker

type PreRanker interface {
	PreRank(context.Context) error
}

type PreTrainer

type PreTrainer interface {
	PreTrain(context.Context) error
}

type Predictor

type Predictor interface {
	UserFeaturer
	ItemFeaturer
	base.Predicter
}

func Train

func Train(ctx context.Context, recSys RecSys, mlp base.Fiter) (model Predictor, err error)

type RecApiRequest

type RecApiRequest struct {
	UserId     int   `json:"userId"`
	ItemIdList []int `json:"itemIdList"`
}

type RecApiResponse

type RecApiResponse struct {
	ItemScoreList []ItemScore `json:"itemScoreList"`
}

type RecSys

type RecSys interface {
	UserFeaturer
	ItemFeaturer
	Trainer
	FeatureOverview
}

type Sample

type Sample struct {
	UserId int     `json:"userId"`
	ItemId int     `json:"itemId"`
	Label  float64 `json:"label"`
}

type Stage

type Stage int
const (
	TrainStage Stage = iota
	PredictStage
)

type Tensor

type Tensor []float64

type Trainer

type Trainer interface {
	SampleGenerator(context.Context) (<-chan Sample, error)
}

type UserFeaturer

type UserFeaturer interface {
	GetUserFeature(context.Context, int) (Tensor, error)
}

type UserItemOverview

type UserItemOverview struct {
	UserId       int `json:"user_id"`
	UserFeatures map[string]interface{}
}

type UserItemOverviewResult

type UserItemOverviewResult struct {
	Users []UserItemOverview `json:"users"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL