🫠프로젝트에서 채팅 로그를 이용하여 분석을 하고 싶을 경우 구글의 Cloud Natural Language API
를 이용하시면 됩니다.
Cloud Natural Language API
를 통해서 감정 분석, 항목 분석, 구문 분석 등을 할 수 있는데 여기서는 감정 분석에 대해서만 알아보겠습니다.
🤔감정 분석이란
감정 분석은 주어진 텍스트를 조사하고 텍스트 내의 주도적인 감정적 의견을 식별하여 작성자의 태도가 긍정적인지, 부정적인지 또는 중립적인지를 판단합니다. - google cloud
이를 통해 해당 문장이 긍정인지 부정인지를 수치로 알 수 있습니다.
이를 스프링 부트에 적용하는 방법은 간단합니다.
먼저 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
의 경우에는 인증을 하기 위해 필요하므로 의존성을 추가해줍니다.
다음 코드를 스프링 부트에 넣어줍니다.
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 서비스로 이동 한 후
🫡서비스 계정을 이용하여 json 파일을 받아와 줍니다.
json파일의 경우 여러 시크릿 키가 들어 있으니 안전한 곳에 보관해야 합니다.
이후 json 파일의 위치를 String keyPath = "your secret file";
에 넣어줍니다.
이제 코드를 실행해보면 아래와 같은 결과가 나옵니다.
🥳magnitude와 score를 통해 해당 문장이 긍정적인지 부정적인지를 파악할 수 있습니다.
위 기능 외에도 다양한 기능들이 있으니 필요하시면 사용해보시면 될 것 같습니다.
😭위 서비스 계정을 이용해 키를 발급받는 경우 시크릿 키를 발급받을 수 있습니다. 그러나 구글에서는 위 키를 발급받는 것의 주의를 주고 있습니다. 아무래도 서비스 계정을 이용해 secret json을 발급받은 경우 위 파일이 노출되면 해당 계정에 대한 모든 권한을 가지고 있기에 주의를 주고 있습니다. 이를 대체하는 방법으로는 api key를 이용하여 라이브러리가 아닌 직접 통신을 하여 값을 주고 받는 방법도 있습니다.