長文を付箋として適度なサイズに分割することを支援したい


気楽に書いた文章

あー、そうか、付箋をたくさん作ってKJ法をするプロセスに慣れてない人は、そもそもの付箋を作るところでどの程度の情報の粒度にしたらいいかがピンとこないのか。そこのところをソフトウェアが支援することが必要だな これは適切な粒度ではない

  • image 慣れた人間による分割作業
  • image
  • image
    • これは分割と削除のみのパターン
  • 書き換えを伴うとこういう感じ:
    • image

  • v1: 係り受け連続範囲抽出

    • 一応動いたがイマイチ
    • 係受け解析してからその結果を使うのではなく、係受け解析の過程で工夫が必要と考えた
    • 係受け解析自体を実装しようとしてるうちに「そもそも係受け解析必要ないのでは」という気づき
  • v2: 4階層分解アルゴリズム

    • 考察
      • 「離れたところに出現するが係受け的には繋がってる単語」に関して
        • 係受け的に繋がってようが、離れたところに出現してるのだから付箋としては分離していい!
      • 長さ依存の分割をしないで句読点で分割をしただけで割と良い
      • 句読点で分割して、長すぎたら接続助詞でさらに刻むので良い感じ
    • 仕組み
      • 句読点や括弧などで分割する
      • 長さが閾値を超えてるなら接続助詞で分割する
      • 長さが閾値を超えてるなら係助詞で分割する
      • 長さが閾値を超えてるなら格助詞で分割する
    • 分割する場所を周囲の素性から機械学習でやろうかと思ってたのだけど、素性を目で見たらこれで良いじゃんって気持ちになった
  • v3: 分割優先度スコアの高い方から再帰的に分割していくアルゴリズム

    • v2の結果を観察して考察
      • 「出てきて」「使っていて」が「て」で分割されて原形にすることで「くる」「いる」ができちゃう問題
      • 同じ単語でも分割優先度は違う
      • 状況によってスコアを変えて、大きい方から分割
      • いまはルールベースでスコア調整
        • いずれ破綻する
        • 人間が過去の意思決定と整合性を持って調整できない
        • 機械学習へ移行する?
        • うまく分割できてない事例を収集している
  • v4: 機械学習に移行するとしたら

    • どんな方法が良いか
    • 1: 単語ごとに「区切るかどうか」の二値分類をし「区切るべきスコア」の大きい方から長さ制約を満たすまで分割する
      • いまのスコアベースの方法のスコア計算が機械学習になる形
    • 2: CRF?LSTM?Transfomer?
      • あんまり重たい仕組みにすると、たとえできたとしても運用が面倒な気が
    • 機械学習で長文付箋分割

ゴミ掃除アルゴリズム

  • 分割するだけではなく、不要な単語を削除している
  • 例: 「あー、そうか、」
  • 現在は辞書ベース最長一致で削ってる

付箋の細かさ image

今までは画像に関してはデフォルトではオートアップグレードしなかったが、M86からするように変わった。このオートアップグレードはHTTPにフォールバックしないのでHTTPのみでサーブされてる画像は表示不能になる。

  • 20が良いと感じる

長文の付箋への分割支援:良くない分割の例

API


2021-01-05

  • Shift-Reduce アルゴリズムでできないか?
  • 前回、係り受け連続範囲を取ってからいらない単語を削るアプローチをした
  • 係り受け解析はCaboChaに丸投げしたが…
  • 文節に刻むところまでは良い、少し短いがその文節から末尾の助詞などを取り除いて付箋にしても良い
  • やりたいことを別の言葉で言えば:
    • 文節だとちょっと短すぎるから、許容できる範囲で結合したい
    • 結合したものの文字列の長さを見ながら判断したい
    • 成果物に入れる必要のない単語やフレーズがたくさんあるので無視したい
  • 素朴な方法
    • かっこで囲われてる範囲は十分短ければ採用
    • 複数の行に共通して出現する単語列(RAKEを応用)
      • これは有用だが、これだけでは不足

yure 長文コンテンツを自動で付箋に刻む機能

pRegroup