#' 根据FAQ标准问题及同义记事自动做问题泛化
#'
#' @param file 文件名称
#' @param skip 跳过多少行
#'
#' @return 返回值
#' @import readxl
#' @import stringr
#' @import stringi
#' @import tsda
#' @import tsdo
#' @export
#'
#' @examples
#' nsgen()
nsgen <- function(file="data-raw/JBLH_upload_V1.8.xlsx",skip=1){
faq <- read_excel(file,skip = skip);
# View(faq)
#提取标准问题------
ques <- faq$标准问
ques_count <- length(ques);
#提取模板------
busi_Obj <- faq$`业务对象(近义词)`;
oper_Node <- faq$`操作节点(近义词)`;
#提取泛化内容
busi_Obj_gen<- faq$`业务对象(同义词)`;
oper_Node_gen <- faq$`操作节点(同义词)`;
#数据处理--------
busi_Obj_gen_multi <- str_split(busi_Obj_gen,'~');
oper_Node_gen_multi <-str_split(oper_Node_gen,'~');
#处理情况;
#完善一下逻辑
res <-lapply(1:ques_count,function(i){
q1 <- ques[i];
#标准的业务对象
busi_obj1 <- busi_Obj[i];
#标准的操作节点
oper_node1 <- oper_Node[i];
#业务对象同义词
busi_obj_set1 <-busi_Obj_gen_multi[[i]];
#操作节点同义词
oper_node_set1 <-oper_Node_gen_multi[[i]]
alpha <- length(busi_obj_set1) #业务对象数
belta <- length(oper_node_set1) #操作结点数;
res_count <-alpha*belta;
unit_res <-list_init(res_count);
pcs <-1L #计数
if(alpha==1 & is.na(busi_obj_set1)&belta >=1&!is.na(oper_node_set1)){
#缺少业务对象,泛化操作节点
for (oper_unit in oper_node_set1) {
q001_belta <- str_replace(q1,oper_node1,oper_unit);
#q001_belta;
unit_res[[pcs]] <-q001_belta;
pcs<- pcs+1L;
}
}else if (alpha >=1 &!is.na(busi_obj_set1)& belta ==1 & is.na(oper_node_set1)){
#泛化业务对象,缺少操作节点
for (busi_unit in busi_obj_set1) {
q001_alpha <- str_replace(q1,busi_obj1,busi_unit);
#q001_alpha;
unit_res[[pcs]] <-q001_alpha;
pcs<- pcs+1L;
}
}else if ((alpha >1 & belta >1)|(alpha ==1 & !is.na(busi_obj_set1))|(belta==1 & !is.na(oper_node_set1))){
#处理说明
for (busi_unit in busi_obj_set1) {
for (oper_unit in oper_node_set1) {
q001_alpha <- str_replace(q1,busi_obj1,busi_unit);
#q001_alpha;
q001_belta <- str_replace(q001_alpha,oper_node1,oper_unit);
#q001_belta;
unit_res[[pcs]] <-q001_belta;
pcs<- pcs+1L;
}
}
}else{
unit_res[[pcs]] <-"";
}
#进行标准化处理,取消list
unit_res <- unique(unlist(unit_res))
unit_res <- paste(unit_res,collapse = "||")
return(unit_res)
})
res <- unlist(res);
faq2 <- faq[,1:10];
faq2$`相似问题` <- res
return(faq2)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.