【AnyQ】如何添加插件

一、已有插件

  • 字典插件

此类插件继承DictInterface接口

    • 哈希词典:HashAdapter<TYPE1, TYPE2>
    • 干预词典:String2RetrievalItemAdapter
    • 切词词典: WordsegAdapter
    • Paddle匹配模型词典: PaddleSimAdapter
    • Tensorflow模型词典: TFModelAdapter
  • Analysis插件

此类插件继承AnalysisMethodInterface接口

    • 切词:AnalysisWordseg
    • query语义向量表示:AnalysisSimNetEmb
    • query替换: AnalysisQueryIntervene
  • Retrieval插件

此类插件继承RetrievalPluginInterface接口

    • Term检索:TermRetrievalPlugin
    • 语义检索:SemanticRetrievalPlugin
    • 人工干预:ManualRetrievalPlugin
  • Solr查询插件

此类插件继承SolrQInterface接口

    • EqualSolrQBuilder:字段等于
    • BoostSolrQBuilder:字段term加权
    • ContainSolrQBuilder:字段包含关键词
    • SynonymSolrQBuilder:字段term同义词
    • DateCompareSolrQBuilder:日期字段比较
  • Matching插件

此类插件继承MatchingInterface接口

    • 编辑距离相似度:EditDistanceSimilarity
    • Cosine相似度:CosineSimilarity
    • Jaccard相似度: JaccardSimilarity
    • BM25相似度: BM25Similarity
    • Paddle匹配模型相似度: PaddleSimilarity
    • Tensorflow匹配模型相似度:TFSimilarity
    • 对候选切词:WordsegProcessor
  • Rank插件

此类插件继承RankPredictInterface接口

    • 线性预测模型: PredictLinearModel
    • XGBoost预测模型: PredictXGBoostModel
    • 特征选择预测模型:PredictSelectModel
  • 请求处理插件
    • 请求解包插件(继承ReqPreprocInterface接口):AnyqPreprocessor
    • 请求包装插件(继承ReqPostprocInterface接口):AnyqPostprocessor

二、添加插件

以BM25Similarity插件为实例,说明如何添加用户自定义插件。

1、头文件定义

  • BM25Similarity是Matching插件,需继承MatchingInterface接口,并重写相关的虚函数.

include/matching/lexical/bm25_sim.h

 ...
 
 class BM25Similarity : public MatchingInterface {
 public:
 	BM25Similarity();
 	virtual ~BM25Similarity() override;
 	virtual int init(DualDictWrapper* dict, const MatchingConfig& matching_config) override;
 	virtual int destroy() override;
 	virtual int compute_similarity(const AnalysisResult& analysis_res,
 		 RankResult& candidates) override;
 ...
 };
  • 注册BM25Similarity插件.

include/common/plugin_header.h

 ...

 #include "matching/lexical/bm25_sim.h"
 ...

 REGISTER_PLUGIN(BM25Similarity);
 ...

2、功能实现

  • 实现构造、析构、init、destroy、compute_similarity等函数。

src/matching/lexical/bm25_sim.cpp

 ...
 BM25Similarity::BM25Similarity(){
 ...
 }
 ...
 BM25Similarity::~BM25Similarity(){
 ...
 }
 ...
 int BM25Similarity::init(DualDictWrapper* dict, const MatchingConfig& matching_config) {
 ...
 }
 ...
 int BM25Similarity::destroy() {
 ...
 }
 ...

3、如何编译

mkdir build && cd build && cmake .. && make

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值