テキスト解析 Web APIでルールの追加・除外を設定する方法

テキスト解析 Web APIとは

Yahoo!デベロッパーネットワークが提供している、テキスト解析Web APIを利用して、日本語を解析するWebサービスです。

これを使用すれば文章校正ができるWebページを簡単に作成できます。

テキスト解析 Web APIを使用するには Client ID を取得します。

LINEヤフー Tech Blogで公開されているコードを利用すれば、テキスト解析Web APIを使用した文章校正のWebページを簡単に作成できます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<style>
  * { box-sizing: border-box; }
  textarea { width: 100%; }
</style>
<script>
  const APPID = 'あなたの Client ID(アプリケーション ID)';
  async function yapifuri(query) {
    const url = "https://jlp.yahooapis.jp/FuriganaService/V2/furigana?appid=" + encodeURIComponent(APPID);
    const res = await fetch(url, {
      method: 'POST',
      mode: 'cors',
      body: JSON.stringify({
        "id": "A123",
        "jsonrpc" : "2.0",
        "method" : "jlp.furiganaservice.furigana",
        "params" : { "q" : query, "grade" : 1 }
      }),
    });
    return res.json();
  }
  async function kaiseki() {
    const text = document.querySelector("#input-text").value;
    const j = await yapifuri(text);
    if (!j || !j['result']['word']) return;
    document.querySelector("#output-text").value =
      j['result']['word'].map(
        x => x['surface'] + (x['furigana'] ? '(' + x['furigana'] + ')' : '')
      ).join("");
  }
</script>
</head>
<body>
<button onclick="kaiseki()">解析</button>
<br>
テキスト入力エリア
<textarea id="input-text"></textarea>
テキスト出力エリア
<textarea id="output-text"></textarea>
</body>
</html>

Webページ内の入力欄に文章を入力して「校正開始」を押すと、校正が開始されて修正候補が表示されます。

テキスト解析 Web API サンプル

テキスト解析サンプル

校正ルールを追加する方法

前述のサンプルの例だと「重用」は正しくは「重要」で、「。。」は正しくは「。」です。

しかし、テキスト解析 Web APIのルールにはないので検出されません。

そんなときは以下のように配列オブジェクトでルールを追加すれば、APIにないルールでも検出できます。

const words = [
  { word: '重用', suggestion: '重要' },
  { word: '。。', suggestion: '。' },
];

// 中略

words.forEach(w => {
  const regex = new RegExp(w.word, 'g');
  let match;

  while ((match = regex.exec(text)) !== null) {
    obj.result.suggestions.push({
      length: w.word.length,
      offset: match.index,
      word: w.word,
      suggestion: w.suggestion,
    });
  }
});
obj.result.suggestions.sort((a, b) => a.offset - b.offset);

校正ルールを除外する方法

テキスト解析 Web APIでは「Web」 や「PC」が検出されてカタカナ表記を提案されますが、これらは検出してほしくない人のほうが多いでしょう。

そんなときは以下のように配列オブジェクトで除外ルールを追加すれば、APIにあるルールでも検出されなくなります。

また、テキスト解析 Web APIには「助詞不足の可能性あり」というルールがあるのですが、「今会いに行く」などの問題のない文章でも検出されることが多いので、これも除外したほうが良いです。

const removeWords = [
  'Web',
  'PC',
];

// 中略

obj.result.suggestions = obj.result.suggestions.filter(item => {
  return !removeWords.includes(item.word) && item.rule !== '助詞不足の可能性あり';
});

テキスト解析(改良版)

この記事で説明した校正ルールの追加・除外を加えたテキスト解析(改良版)のWebページのサンプルも作成しました。

実際に使って改良前と見比べたほうが理解しやすいので、以下のリンク先で試してみて下さい。

テキスト解析サンプル

テキスト解析(改良版)サンプル