Natural Language API로 간편한 감정 분석 (감정 분석)

SNS에서 다루고 있는 발언을 분석하여 어떤 서비스나 상품에 대한 평판을 가시화하고 싶다는 사례에 해당했습니다.
(=감정 분석).

GCP의 서비스 중 하나 「Natural Language API」를 사용한 결과, 손쉽게 센티멘트 분석을 할 수 있었으므로, 메모가 굳이 기술해 둡니다.

Natural Language API란 무엇입니까?



Google Cloud Platform에서 제공하는 머신러닝 서비스 중 하나입니다.
h tps : // c ぉ d. 오, ぇ. 코 m / 나츠라 l ぁんぐあげ? hl = 그럼

텍스트 데이터의 분석을 간편하게 실시할 수 있다.
  • 엔티티 분석
  • 문장 중의 단어나 고유명사를 추출

  • 감정 분석
  • 문장 내의 감정을 수치화

  • 콘텐츠 분류
  • 문장의 유형과 분류를 결정한다


  • 등이 가능하다.

    Natural Language API 사용 방법


  • GCP 대시 보드에서 프로젝트 만들기
  • API 활성화
  • API 키 가져오기

  • 자세한 내용은 아래를 참조하십시오.
    h tps : // c ぉ d. 오, ぇ. 코 m / 나츠라 l ぁんぐあげ? hl = 그럼

    이하의 가이드를 보면, 헤매는 부분은 거의 없다.
    htps : // 코데아 bs. 로 ゔぇぺぺrs. 오, ぇ. 코 m/코데아 bs/응 lp-f로 m-오 gg-도 cs-그럼/어서 x. HTML? 그럼 x =. . % 2F. . 네 xt17-k # 0

    Google Apps Script에서 Twitter 트윗 분석하기


  • Twitter 트윗을 Google 스프레드 시트에 저장
  • Google Apps Script로 스크립팅
  • 스프레드 시트 셀에서 트윗 가져 오기
  • Natural Language API에서 감정 분석
  • 취득한 결과를 시트에 기입


  • 라는 유스 케이스로 구현해 보았습니다.

    Google 스프레드시트 준비



    먼저 분석하고자 하는 문장 준비



    Google Apps Script 작성



    그런 다음 텍스트 데이터를 분석하는 스크립트를 준비.
    이번에는
  • Natural Language API를 호출하는 함수
  • 시트에서 텍스트 데이터를 가져 와서 API 호출 할 함수로 전달하고 반환 값을 입력하는 함수

  • 의 2 종류로 기술했습니다.

    Natural Language API를 호출하는 함수



    Google Code Lab 코드 을 거의 그대로 유용

    retrieveSentiment.gs
    function retrieveSentiment (textData) {
      var apiKey = 'APIキーを記述';
      var apiEndpoint = 
    'https://language.googleapis.com/v1/documents:analyzeSentiment?key=' 
    + apiKey;
    
      //  Create a structure with the text, its language, its type,
      //  and its encoding
      var docDetails = {
        language: 'ja-jp',
        type: 'PLAIN_TEXT',
        content: textData
      };
    
      var nlData = {
        document: docDetails,
        encodingType: 'UTF8'
      };
    
      //  Package all of the options and the data together for the call
      var nlOptions = {
        method : 'post',
        contentType: 'application/json',
        payload : JSON.stringify(nlData)
      };
    
      //  And make the call
      var response = UrlFetchApp.fetch(apiEndpoint, nlOptions);
      Logger.log('json is :' + response)
    
    return response;
    
    }
    

    시트에서 텍스트 데이터를 검색하여 API 호출하는 함수로 전달하고 반환 값을 입력하는 함수



    함수 내에서 앞에서 설명한 함수 "retrieveSentiment"를 호출합니다.

    getSentiment.gs
    // 取得したい開始行と終了行を記述
    var start = '2';
    var end = '5';
    
    // シート情報取得
    var mySheet = SpreadsheetApp.openById('シートのID').getSheetByName('シート名');
    
    function getSentiment() {
      // 開始行と終了行でループを回す
      for (i = start; i <= end; i++) {
        var tweet = mySheet.getRange(i, 1).getValue();
        var response = retrieveSentiment(tweet);
        var json = JSON.parse(response);
        var score = json['documentSentiment']['score'];
        var magnitude = json['documentSentiment']['magnitude'];
    
        // 取得したScore Magnitudee,Jsonをシートに記述
        mySheet.getRange(i, 2).setValue(score);
        mySheet.getRange(i, 3).setValue(magnitude);
        mySheet.getRange(i, 4).setValue(response);
      }
    }
    

    실행 결과





    score는 감정이 긍정인지 부정인지를 나타냅니다. 0이 중앙값. 마이너스라고 부정적.
    Magnitude는 감정의 흔들림 폭. 이 수치가 크면 포지티브 네거티브 각각의 감정이 더 강하다.

    Score, Magnitude 모두 1을 넘으면 긍정적이고 감동 정도가 크다. 이미지의 2행째가 그 예.
    반대라고 부정적이고 감정적이다.
    라고 말할 것 같습니다.

    감정 분석의 어려움



    Score는, 분석한 텍스트 전체로부터 인덱싱하고 있기 때문에, 복잡한 문장이라고 정확한 감정의 추출이 어렵다.

    이번 예에서 말하면, 시트의 5행째. 잘 읽으면 AAA에 대한 평가가 매우 높고 호의적인 감정을 가지고 있음을 알 수 있지만, Score는 0.1에 그쳤다. 이것은, 문장 전체의 감정을 평균화해 내고 있기 때문.

    특정 단어에 대한 정확한 감정 분석을 수행하려고하면 엔티티 추출이 필요하고 상당히 어렵습니다.

    업무로 사용하려면 수중 조정이 필수적인 느낌이었습니다.

    그것은 그것으로 매우 쉽게 감정 분석을 할 수 있으며, 재미있는 것은 변하지 않습니다.

    좋은 웹페이지 즐겨찾기