TinySegmenterをGoogle Apps Scriptで使う、かつ、TinySegmentMakerのモデルを入れかえやすくする

個人サイトの記事のコピペ https://garmy.jp/posts/2018-06/18/tinysegmenter-on-google-apps-script/

Google SpreadsheetでTinySegmenterを使いたい、かつ、TinySegmenterMakerで作ったモデルを差し替え出来るようにしたい!と思ったらあっさり出来ました。

こちらにはったgistの整形版のページです。

Google SpreadsheetでTinySegmenterを使いたい、かつ、TinySegmenterMakerで作ったモデルを差し替え出来るようにしたい!と思ったらあっさり出来ました。

TinySegmenter自体を動かす

オリジナルのコードをそのままGoogle Apps Sciptのシートにペタっと張ればOK。なんの工夫も要らない。素晴らしい。

TinySegmenterMakerで作ったモデルを投入しやすくする

◯作成したモデルを、特定のシートに貼り付けます
 ・オリジナルのファイルはタブ文字列で区切りがありますが、この前後がA,B列に分かれるように貼り付けます
 ・タブ文字列で分かれていない行(this.BIAS__に代入される値)はA列は空白セル、B列に数値が入るようにします
◯シート、モデルを貼り付けた下に余分な行がないようにします
◯オリジナルのTinySegmenterにあるTinySegmenter()関数の定義を、下記のように置き換えればOK

という感じ。

※このコードのライセンスはオリジナルのTinySegmenterと同じとします。

function TinySegmenter() {
 var patterns = {
   "[一二三四五六七八九十百千万億兆]":"M",
   "[一-龠々〆ヵヶ]":"H",
   "[ぁ-ん]":"I",
   "[ァ-ヴーア-ン゙ー]":"K",
   "[a-zA-Za-zA-Z]":"A",
   "[0-90-9]":"N"
 }
 this.chartype_ = [];
 for (var i in patterns) {
   var regexp = new RegExp;
   regexp.compile(i)
   this.chartype_.push([regexp, patterns[i]]);
 }

 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("model_sheet");
 var cells = sheet.getRange("A:B").getValues();

 for(i=0; i<cells.length; i++) {
   if(cells[i][0]=="") {
     this["BIAS__"] = cells[i][1] * 10000;
   } else {
     if(this[cells[i][0].substr(0,3)+"__"]) {
       this[cells[i][0].substr(0,3)+"__"][cells[i][0].substr(4)] = cells[i][1] * 10000;
     } else {
       this[cells[i][0].substr(0,3)+"__"] = {}
       this[cells[i][0].substr(0,3)+"__"][cells[i][0].substr(4)] = cells[i][1] * 10000;
     }
   }
 }

 return this;
}

この記事が気に入ったらサポートをしてみませんか?