長文の付箋への分割支援
長文を付箋として適度なサイズに分割することを支援したい ---
気楽に書いた文章
あー、そうか、付箋をたくさん作ってKJ法をするプロセスに慣れてない人は、そもそもの付箋を作るところでどの程度の情報の粒度にしたらいいかがピンとこないのか。そこのところをソフトウェアが支援することが必要だな
これは適切な粒度ではない
https://gyazo.com/15e2094edc84a4e2694d774851748fda
慣れた人間による分割作業
https://gyazo.com/0813639be5cc94dcbbac5d2d2ad9c220
https://gyazo.com/ca47482c3dfcbc2c4ce2cd0d0bd33018
これは分割と削除のみのパターン
書き換えを伴うとこういう感じ:
https://gyazo.com/024545873ed23e894dd2305b63569053
---
一応動いたがイマイチ
係受け解析してからその結果を使うのではなく、係受け解析の過程で工夫が必要と考えた
係受け解析自体を実装しようとしてるうちに「そもそも係受け解析必要ないのでは」という気づき
v2: 4階層分解アルゴリズム
考察
「離れたところに出現するが係受け的には繋がってる単語」に関して
係受け的に繋がってようが、離れたところに出現してるのだから付箋としては分離していい!
長さ依存の分割をしないで句読点で分割をしただけで割と良い
句読点で分割して、長すぎたら接続助詞でさらに刻むので良い感じ
仕組み
句読点や括弧などで分割する
長さが閾値を超えてるなら接続助詞で分割する
長さが閾値を超えてるなら係助詞で分割する
長さが閾値を超えてるなら格助詞で分割する
分割する場所を周囲の素性から機械学習でやろうかと思ってたのだけど、素性を目で見たらこれで良いじゃんって気持ちになった
v3: 分割優先度スコアの高い方から再帰的に分割していくアルゴリズム
v2の結果を観察して考察
「出てきて」「使っていて」が「て」で分割されて原形にすることで「くる」「いる」ができちゃう問題
同じ単語でも分割優先度は違う
状況によってスコアを変えて、大きい方から分割
いまはルールベースでスコア調整
いずれ破綻する
人間が過去の意思決定と整合性を持って調整できない
機械学習へ移行する?
うまく分割できてない事例を収集している
v4: 機械学習に移行するとしたら
どんな方法が良いか
1: 単語ごとに「区切るかどうか」の二値分類をし「区切るべきスコア」の大きい方から長さ制約を満たすまで分割する
いまのスコアベースの方法のスコア計算が機械学習になる形
2: CRF?LSTM?Transfomer?
あんまり重たい仕組みにすると、たとえできたとしても運用が面倒な気が
ゴミ掃除アルゴリズム
分割するだけではなく、不要な単語を削除している
例: 「あー、そうか、」
現在は辞書ベース最長一致で削ってる
付箋の細かさ
https://gyazo.com/bcb23346a3e5a66bf74a2e3fab09a350
今までは画像に関してはデフォルトではオートアップグレードしなかったが、M86からするように変わった。このオートアップグレードはHTTPにフォールバックしないのでHTTPのみでサーブされてる画像は表示不能になる。
20が良いと感じる
API
---
2021-01-05
文節に刻むところまでは良い、少し短いがその文節から末尾の助詞などを取り除いて付箋にしても良い
やりたいことを別の言葉で言えば:
文節だとちょっと短すぎるから、許容できる範囲で結合したい
結合したものの文字列の長さを見ながら判断したい
成果物に入れる必要のない単語やフレーズがたくさんあるので無視したい
素朴な方法
かっこで囲われてる範囲は十分短ければ採用
複数の行に共通して出現する単語列(RAKEを応用) これは有用だが、これだけでは不足
----