Google 스프레드시트의 기계 학습 애드온을 일본어로 사용해 보기

기계 학습으로 분류 문제를 손쉽게 푸는데, Google 스프레드시트의 애드온인 Smart Autofill(스마트 오토필)이 있습니다만, 일본어를 취급하기 위해서 궁리가 필요했기 때문에, 그 메모입니다.

Smart Autofill 사용



Smart Autofill 은 Google의 Prediction API을 손쉽게 사용할 수 있는 Google 스프레드시트 추가 기능입니다.

스프레드시트 데이터로부터 학습한 결과를 사용해, 치아가 되어 있는 빈 셀에 들어가야 하는 값을 예측해 메워 줍니다.



Smart Autofill 입문 가이드에는 다국어로 입력된 텍스트가 영어, 스페인어, 프랑스어 중 하나인지를 자동 보완하는 샘플이 있습니다만, 이것과 같은 것을 일본어로도 하려면 , 형태소 해석을 해 둘 필요가 있었습니다.

일본어를 다루는 형태소 해석



스프레드시트에서 형태소 분석(분할)을 수행하는 데는 몇 가지 방법이 있을 것 같았지만, 빨리 야후 개발자 네트워크 일본어 형태소 분석 API을 사용했습니다.

YahooAPI의 나누기는 편리합니다. 추출한 단어를 품사별로 필터링할 수 있습니다. 이용 제한도 하루에 50000 요청까지 갈 수 있으므로 무언가를 시도하기에 충분합니다.

스프레드시트 메뉴에서 스크립트 편집기를 열고 다음 소스를 입력합니다.

코드.gs
function myFunction(text)
{
  var appid = "自分のアプリケーションID";
  var filter = "1%7C2%7C3%7C4%7C5%7C6%7C7%7C8%7C9%7C10";  // 名詞やら動詞やらを指定しています
  var url = "http://jlp.yahooapis.jp/MAService/V1/parse?appid="+appid+"&results=ma&sentence="+text+"&filter="+filter;
  var namespace = XmlService.getNamespace("urn:yahoo:jp:jlp");

  // APIを呼ぶ
  var xml = UrlFetchApp.fetch(url);
  // XMLをパース
  var document = XmlService.parse(xml.getContentText());

  var entries = document.getRootElement();
  var ma_result = entries.getChild("ma_result", namespace);
  var word_list = ma_result.getChild("word_list", namespace);
  var word = word_list.getChildren("word", namespace);

  var ret = "";
  for (var i = 0; i < word.length; i++) {
    // スペース区切りで抽出
    ret += word[i].getAllContent()[0].asElement().getText() + " ";
  }

  return ret;
}

스크립트를 저장하면 셀에서 다음과 같이 함수를 사용할 수 있습니다.
=myFunction(A1)

filter 매개 변수는 필터링할 품사를 설정할 수 있습니다. 필터링이 필요하지 않은 경우 파라미터를 설정하지 않으면 OK입니다.

이번은, 이사 사무라이에서 수집하고 있는 손님으로부터의 소문 문장을 분류하는 것이 목적이었으므로, 일본어 문장 내의 구두점이나 조사 등은 불필요하다고 생각해서 생략하는 설정으로 해 보았습니다.

filter에 지정 가능한 품사 번호




품사 번호
품사 이름


1
형용사

2
형용동사

3
감동사

4
부사

5
연체사

6
연결사

7
접두사

8
접미사

9
명사

10
동사

11
조사

12
조동사

13
특수(구두점, 괄호, 기호 등)


요약



처음에는 아무것도 생각하지 않고, 그대로의 일본어 문장을 Smart Autofill 해 보았는데, 잘 분류해 주지 않았습니다만, 잘 생각하면, 그렇게 나눠 쓰는 것이 필요하다고 생각해, 형태소 해석한 데이터에 대비해 실행해 보니, 좋은 느낌으로 분류해 주게 되었습니다.

실제로 운용하려면 Prediction API를 사용하여 프로그래밍하는 것이 좋다고 생각합니다만, 우선은 어느 정도의 퀄리티로 자동 보완해 주는지의 테스트에는, 간편하게 시험할 수 있는 Smart Autofill은 매우 편리했습니다.

좋은 웹페이지 즐겨찾기