4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GASで記録した自分のツイートを形態素解析するやつ

Last updated at Posted at 2019-09-24

GASで自分のツイートを取得してスプレッドシートに記録するやつで記録した自分のツイートを形態素解析してみました。形態素解析にはYahoo!の日本語形態素解析APIを使ってます。

スクリーンショット 2019-09-24 a21.19.52.jpg
実行すると、このように結果が表示されます。

Googleスプレッドシートで形態素解析
こちらの記事を参考にさせていただきました。

function tweetAnalyze() {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var tweetSheet = ss.getSheetByName('ツイートを記録してあるシート');
  var lastRow = tweetSheet.getLastRow();
  var tweetArray = [];
  var j = 0;
  
  //ツイートを配列に格納
  for(i = 2; i <= lastRow; i++){
    tweetArray[j] = tweetSheet.getRange(i,2).getValue();
    j++;
  }
  
  var analyzeSheet = ss.getSheetByName('結果を記録したいシート');
  var analyzeArray;
  lastRow = analyzeSheet.getLastRow() + 1;
  var i = 0;
  
  while(i < tweetArray.length){
    //リプライとURLは除外する
    if(tweetArray[i].indexOf("@") < 0 && tweetArray[i].indexOf("http") < 0){
      analyzeArray = yahooTextSegmentation(tweetArray[i]);
      j = 0;
      while(j < analyzeArray.length){
        analyzeSheet.getRange(lastRow,1).setValue(analyzeArray[j][0]);
        analyzeSheet.getRange(lastRow,2).setValue(analyzeArray[j][1]);
        analyzeSheet.getRange(lastRow,3).setValue(analyzeArray[j][2]); 
        lastRow++;
        j++;
      }
    }
    i++;
  }
}

function yahooTextSegmentation(cell)
{  
  var myAppid = "自分のアプリケーションID";
  var text = encodeURIComponent(cell);
  var myUrl = "http://jlp.yahooapis.jp/MAService/V1/parse?appid="+myAppid+"&results=ma&sentence="+text;

  Utilities.sleep(1000);

  var myXml = UrlFetchApp.fetch(myUrl ,{muteHttpExceptions: true});
  var myDoc = XmlService.parse(myXml.getContentText());
  var namespace = XmlService.getNamespace("urn:yahoo:jp:jlp");
  var root = myDoc.getRootElement();
  var ma_result = root.getChild("ma_result", namespace);
  var word_list = ma_result.getChild("word_list", namespace);
  var word_array = word_list.getChildren("word", namespace);

  var array = [];
  for (var i=0; i < word_array.length; i++) {
    array[i] = [
      word_array[i].getAllContent()[0].asElement().getText(),
      word_array[i].getAllContent()[1].asElement().getText(),
      word_array[i].getAllContent()[2].asElement().getText()
    ];
  }
  return array;
}

何かありましたら気軽にコメントください。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?