TxApiService.java 3.97 KB
package com.pipihelper.project.tx.service;

import com.alibaba.fastjson.JSONObject;
import com.pipihelper.project.tx.dto.TxConfig;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.nlp.v20190408.NlpClient;
import com.tencentcloudapi.nlp.v20190408.models.*;
import com.tencentcloudapi.tbp.v20190627.TbpClient;
import com.tencentcloudapi.tbp.v20190627.models.TextProcessRequest;
import com.tencentcloudapi.tbp.v20190627.models.TextProcessResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: TODO
 * @author: charles
 * @date: 2022年06月06日 13:31
 */
@Service
public class TxApiService {

    @Autowired
    private NlpClient nlpClient;

    @Autowired
    private TbpClient tbpClient;

    @Autowired
    private TxConfig txConfig;



    public JSONObject txKeywordsExtraction(String msgText){
        KeywordsExtractionRequest req = new KeywordsExtractionRequest();
        req.setText(msgText);
        req.setNum(5L);
        try {
            // 返回的resp是一个KeywordsExtractionResponse的实例,与请求对象对应
            KeywordsExtractionResponse resp = nlpClient.KeywordsExtraction(req);
            // 输出json格式的字符串回包
            return JSONObject.parseObject(KeywordsExtractionResponse.toJsonString(resp));
        }catch (TencentCloudSDKException e) {
            System.out.println(e.toString());
            return null;
        }
    }

    public TextProcessResponse txTextProcessRequest(String terminalId, String inputText){
        try{
            // 实例化一个请求对象,每个接口都会对应一个request对象
            TextProcessRequest req = new TextProcessRequest();
            req.setBotId(txConfig.getRobotId());
            req.setBotEnv(txConfig.getRobotEnv());
            req.setTerminalId(terminalId);
            req.setInputText(inputText);
            // 返回的resp是一个TextProcessResponse的实例,与请求对象对应
            return tbpClient.TextProcess(req);
        } catch (TencentCloudSDKException e) {
            System.out.println(e.toString());
        }
        return null;
    }

    //新增自定义词库词条
    @Async
    public CreateWordItemsResponse createWordItemsResponse(String dictId, String[] texts){
        try {
            CreateWordItemsRequest req = new CreateWordItemsRequest();
            req.setDictId(dictId);

            WordItem[] wordItems = new WordItem[texts.length];
            for(int i=0;i<texts.length;i++){
                WordItem wordItem1 = new WordItem();
                wordItem1.setText(texts[i]);
                wordItems[i] = wordItem1;
            }
            req.setWordItems(wordItems);
        return nlpClient.CreateWordItems(req);
        } catch (TencentCloudSDKException e) {
            e.printStackTrace();
        }
        return null;
    }




    public List<String> lexicalAnalysisResponse(String dictId, String texts){
        List<String> keywords =new ArrayList<>();
        try {
            LexicalAnalysisRequest req = new LexicalAnalysisRequest();
            req.setDictId(dictId);
            req.setText(texts);
            // 返回的resp是一个LexicalAnalysisResponse的实例,与请求对象对应
            LexicalAnalysisResponse resp = nlpClient.LexicalAnalysis(req);
            PosToken[] PosTokens = resp.getPosTokens();
            for(PosToken posToken: PosTokens){
                if(posToken.getPos().equals("n")){
                    if(posToken.getWord().length()>1) {
                        if (!keywords.contains(posToken.getWord())) {
                            keywords.add(posToken.getWord());
                        }
                    }
                }
            }
        } catch (TencentCloudSDKException e) {
            e.printStackTrace();
        }
        return keywords;
    }





}