TinySegmenterをGoogle Apps Scriptで使う、かつ、TinySegmentMakerのモデルを入れかえやすくする
Table Of Contents
Google SpreadsheetでTinySegmenterを使いたい、かつ、TinySegmenterMakerで作ったモデルを差し替え出来るようにしたい!と思ったらあっさり出来ました。
note記事にミラーを作りました。
こちらにはったgistの整形版のページです。
TinySegmenterをGoogle Apps Scriptで使う、かつ、TinySegmentMakerのモデルを入れやすくしようとしたらあっさり出来たので作業メモ https://t.co/AahN88NWir
— garmy (@garmy) June 19, 2018
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;
}
あっさり。