開發與維運

阿里雲智能語義理解Quick Start

作者:俏巴

概述

智能語義理解(Intelligent Semantic Understanding)依託阿里巴巴在深度學習、自然語言處理方向上的技術積累,為客戶提供文本相似度和機器閱讀理解等優質算法技術。其中文本相似度可以計算兩段短文本之間的相似度,並給出相似度評分;機器閱讀理解能針對某幾個問題,從若干篇文章中分別尋找問題答案。智能語義理解技術可以應用於問答系統、信息檢索、新聞推薦等場景。下面主要介紹該產品的開通及使用。

Step By Step

1、開通服務,公測申請地址

2、開通後控制檯概覽
image.png

3、操作步驟,可以在控制檯快速查看創建項目,然後查看進程
image.png

4、使用SDK進行相關操作

  • 4.1 pom.xml

    <dependencies>
         <dependency>
             <groupId>com.aliyun</groupId>
             <artifactId>aliyun-java-sdk-iqa</artifactId>
             <version>1.0.0</version>
         </dependency>
         <dependency>
             <groupId>com.aliyun</groupId>
             <artifactId>aliyun-java-sdk-core</artifactId>
             <version>4.4.9</version>
         </dependency>
     </dependencies>

4.2 code sample

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.iqa.model.v20190813.*;
import com.aliyuncs.profile.DefaultProfile;

public class demo1 {
    public static void main(String[] args) throws ClientException {
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",
                "LTAIOZZgYX******",
                "v7CjUJCMk7j9aKduMAQLjy********");
        IAcsClient client = new DefaultAcsClient(profile);

        // 調用ListProjects獲取項目列表
        ListProjectsRequest request = new ListProjectsRequest();
        request.setProjectType("faq");
        ListProjectsResponse response = client.getAcsResponse(request);
        System.out.println("項目數量: " + response.getTotalCount());

//        // 調用CreateProject創建一個項目
//        CreateProjectRequest createProjectRequest = new CreateProjectRequest();
//        createProjectRequest.setModelId("general");
//        createProjectRequest.setProjectName("FaqProjectDemo1");
//        createProjectRequest.setProjectType("faq");
//        CreateProjectResponse createProjectResponse = client.getAcsResponse(createProjectRequest);
//        System.out.println(createProjectResponse.getProjectId());

          String projectId = "nynauj21********";// 使用創建項目獲取的ProjectId
//
//        // 調用UploadDictionary上傳自定義詞表,支持多次調用增量導入,此操作是用來對導入的document增加分詞功能,可以不操作
//        UploadDictionaryRequest uploadDictionaryRequest = new UploadDictionaryRequest();
//        uploadDictionaryRequest.setDictionaryFileUrl("http://iqa-console.oss-cn-hangzhou.aliyuncs.com/example/iqa_example_shorttext.xlsx?spm=a2c4g.11186623.2.14.5d7b727d7qG2oF&Expires=2179036688&OSSAccessKeyId=LTAI2WA8174xk3ii&Signature=967zD%2BonZHoVbSZqkmxx8KVcEeI%3D");
//        uploadDictionaryRequest.setProjectId(projectId);
//        UploadDictionaryResponse uploadDictionaryResponse = client.getAcsResponse(uploadDictionaryRequest);
//        System.out.println(uploadDictionaryResponse.getTotalCount());

//        UploadDocumentRequest uploadDocumentRequest = new UploadDocumentRequest();
//        uploadDocumentRequest.setDocumentFileUrl("http://iqa-console.oss-cn-hangzhou.aliyuncs.com/example/iqa_example_shorttext.xlsx?spm=a2c4g.11186623.2.14.5d7b727dtesby4&Expires=2179036688&OSSAccessKeyId=LTAI2WA8174xk3ii&Signature=967zD%2BonZHoVbSZqkmxx8KVcEeI%3D");
//        uploadDocumentRequest.setProjectId(projectId);
//        UploadDocumentResponse uploadDocumentResponse = client.getAcsResponse(uploadDocumentRequest);
//        System.out.println(uploadDocumentResponse.getFileDataCount());

//        // 調用DeployService發佈一個項目
//        DeployServiceRequest deployServiceRequest = new DeployServiceRequest();
//        deployServiceRequest.setProjectId(projectId);
//        DeployServiceResponse deployServiceResponse = client.getAcsResponse(deployServiceRequest);
//        System.out.println(deployServiceResponse.getRequestId());

        GetPredictResultRequest getPredictResultRequest = new GetPredictResultRequest();
        getPredictResultRequest.setProjectId(projectId);
        getPredictResultRequest.setQuestion("充話費");
        getPredictResultRequest.setTopK(3);
        GetPredictResultResponse getPredictResultResponse = client.getAcsResponse(getPredictResultRequest);
        for (GetPredictResultResponse.PredictResult predictResult:getPredictResultResponse.getPredictResults()
             ) {
            System.out.println("Question: " + predictResult.getQuestion() + " Answer: " + predictResult.getAnswer() + " Score: " + predictResult.getScore());
        }
    }
}

4.3 result

項目數量: 3
Question: 積分怎麼充話費 Answer:  Score: 0.9948719
Question: 積分充話費的方式 Answer:  Score: 0.9937389
Question: 我怎麼用積分充話費 Answer:  Score: 0.47255847

5、Demo相關解釋

幫助分詞,業務的一些專有詞,默認分詞分不出來的情況下需要用上傳到自定義詞表。

更多參考

什麼是智能語義理解
智能語義理解API接口

Leave a Reply

Your email address will not be published. Required fields are marked *