百度开源 FAQ 问答系统(AnyQ)---问题分析模块(Analysis)

版权声明:如需转载,请注明出处 https://blog.csdn.net/qq_28385535/article/details/84446282

在AnyQ问答系统中,问题分析模块(Analysis)是整个系统中对输入问题进行解析的第一个模块。该模块所完成的主要功能有:

1. 对句子进行分词; 
2. 对分词后的每个单词进行词性标注(POS);
3. 将每个单词进行词向量表示;
4. 命名实体识别(NER)。参考文章:https://www.jianshu.com/p/c36974c8aa7d

但是,在最初的AnyQ系统中,其仅实现了句子分词及词向量表示功能,并提供了相应功能插件的配置。其他,例如POS和NER的功能需要用户自行实现并添加(详解:待续)。下面将依次介绍,句子分词及词向量表示功能的配置方法。

1.句子分词添加

1.1 用户字典

当一个问题输入到分析模块后,要想实现对问题的分词,首先需要为该模块进行词典的配置,词典的配置文件路径为AnyQ/build/example/dict.conf。在AnyQ系统中,所提供的字典类型有以下几种:

  • 哈希词典:HashAdapter<TYPE1, TYPE2>
  • 干预词典:String2RetrievalItemAdapter
  • 切词词典: WordsegAdapter
  • Paddle SimNet匹配模型词典: PaddleSimAdapter
  • Tensorflow模型词典:TFModelAdapter
    配置方式如下所示:
# 干预词典
dict_config {
    name: "rank_weights"
    type: "String2FloatAdapter"
    path: "./rank_weights"
}

# 切词词典
dict_config {
    name: "lac"
    type: "WordsegAdapter"
    path: "./wordseg_utf8"
}

# paddle SimNet匹配模型词典
dict_config{
    name: "fluid_simnet"
    type: "PaddleSimAdapter"
    path: "./simnet"
}

1.2 句子分词的配置

词典配置完毕以后,即可在AnyQ/build/example/analysis.conf配置文件中添加具有分词功能的插件,其格式如下所示:

# 切词
analysis_method {
    name: "method_wordseg"
    type: "AnalysisWordseg"
    using_dict_name: "lac"
}

2.词向量表示的添加

句子分词功能添加完毕后,要实现会分好词的每个单词进行词向量的表示,需要在解析模块的配置文件中(AnyQ/build/example/analysis.conf)添加相应功能插件,其格式如下

# 语义向量
analysis_method {
    name: "method_simnet_emb"
    type: "AnalysisSimNetEmb"
    using_dict_name: "fluid_simnet"
    dim: 128
    query_feed_name: "left"
    cand_feed_name: "right"
    embedding_fetch_name: "tanh.tmp"
}

至此,整个解析模块基本配置完毕,其他需要用户自定义添加的功能,如POS,NER会在后面博客进行讲解

猜你喜欢

转载自blog.csdn.net/qq_28385535/article/details/84446282
FAQ
今日推荐