Google Cloud Natural Language API 스프링 부트에서 사용하기

greenTea·2023년 7월 10일
0

Google Cloud Natural Language API

🫠프로젝트에서 채팅 로그를 이용하여 분석을 하고 싶을 경우 구글의 Cloud Natural Language API를 이용하시면 됩니다.

Cloud Natural Language API를 통해서 감정 분석, 항목 분석, 구문 분석 등을 할 수 있는데 여기서는 감정 분석에 대해서만 알아보겠습니다.

🤔감정 분석이란

감정 분석은 주어진 텍스트를 조사하고 텍스트 내의 주도적인 감정적 의견을 식별하여 작성자의 태도가 긍정적인지, 부정적인지 또는 중립적인지를 판단합니다. - google cloud

이를 통해 해당 문장이 긍정인지 부정인지를 수치로 알 수 있습니다.

이를 스프링 부트에 적용하는 방법은 간단합니다.

먼저 gradle에 의존성을 추가해줍니다.

gradle

	//google
	implementation 'com.google.cloud:google-cloud-language:2.21.0'
	implementation 'com.google.auth:google-auth-library-oauth2-http:1.18.0'

🧐com.google.cloud:google-cloud-language를 통해 natrual language를 이용할 수 있습니다.
com.google.auth:google-auth-library-oauth2-http의 경우에는 인증을 하기 위해 필요하므로 의존성을 추가해줍니다.

다음 코드를 스프링 부트에 넣어줍니다.

code

public void hello(String myString) throws IOException {

        // 인증 키 파일 경로 설정
        String keyPath = "your secret file";

        // 인증 키 파일을 사용하여 Credentials 객체 생성
        GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream(keyPath));

        try (LanguageServiceClient language = LanguageServiceClient.create(LanguageServiceSettings.newBuilder()
                .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
                .build())) {

            Document doc = Document.newBuilder().setContent(myString).setType(Document.Type.PLAIN_TEXT).build();
            AnalyzeSentimentResponse response = language.analyzeSentiment(doc);
            Sentiment sentiment = response.getDocumentSentiment();
            if (sentiment == null) {
                System.out.println("No sentiment found");
            } else {
                System.out.printf("Sentiment magnitude: %.3f\n", sentiment.getMagnitude());
                System.out.printf("Sentiment score: %.3f\n", sentiment.getScore());
            }
        }

위 코드를 통해 감정 분석 결과를 받아 올 수 있습니다. 이제 구글에서 api key를 발급받아줍니다. (공식 문서에 있는 코드를 가져온 것입니다. - 시크릿 파일 제외)

api 키 발급 받기

api 서비스로 이동 한 후

🫡서비스 계정을 이용하여 json 파일을 받아와 줍니다.
json파일의 경우 여러 시크릿 키가 들어 있으니 안전한 곳에 보관해야 합니다.

이후 json 파일의 위치를 String keyPath = "your secret file";에 넣어줍니다.

이제 코드를 실행해보면 아래와 같은 결과가 나옵니다.

결과

🥳magnitudescore를 통해 해당 문장이 긍정적인지 부정적인지를 파악할 수 있습니다.

위 기능 외에도 다양한 기능들이 있으니 필요하시면 사용해보시면 될 것 같습니다.

참고

😭위 서비스 계정을 이용해 키를 발급받는 경우 시크릿 키를 발급받을 수 있습니다. 그러나 구글에서는 위 키를 발급받는 것의 주의를 주고 있습니다. 아무래도 서비스 계정을 이용해 secret json을 발급받은 경우 위 파일이 노출되면 해당 계정에 대한 모든 권한을 가지고 있기에 주의를 주고 있습니다. 이를 대체하는 방법으로는 api key를 이용하여 라이브러리가 아닌 직접 통신을 하여 값을 주고 받는 방법도 있습니다.

profile
greenTea입니다.

0개의 댓글