from 長文の付箋への分割支援 係り受け連続範囲

  • 係り受け解析して、チャンクのかかり先が次のチャンクであるようなブロックを取り出す
  • CaboCha

python

from cabocha.analyzer import CaboChaAnalyzer
analyzer = CaboChaAnalyzer()
tree = analyzer.parse(
    "僕が今作ってるものも「たくさんのアトムがあって、しばしば複数のコンポーネントが一つのアトムに依存してたり、複数のアトムに依存するコンポーネントがあったりする、アトムの変更では一部のコンポーネントだけ再描画したい」という特徴なのでRecoilのアプローチはとてもフィットしそう")
start = 0
while start < tree.chunk_size:
    i = start
    result = [tree[i].surface]
    while True:
        if tree[i].next_link_id == i + 1:
            result.append(tree[i + 1].surface)
            i += 1
        else:
            break
    print(start, result, tree[i].next_link_id)
    start = i + 1

:

   0 ['僕が'] 2
   1 ['今', '作ってる', 'ものも'] 23
   4 ['「たくさんの', 'アトムが', 'あって、'] 12
   7 ['しばしば'] 12
   8 ['複数の', 'コンポーネントが'] 12
   10 ['一つの', 'アトムに', '依存してたり、'] 15
   13 ['複数の', 'アトムに', '依存する', 'コンポーネントが', 'あったりする、'] 22
   18 ['アトムの', '変更では'] 22
   20 ['一部の', 'コンポーネントだけ', '再描画したい」という', '特徴なので'] 27
   24 ['Recoilの', 'アプローチは'] 27
   26 ['とても', 'フィットしそう'] -1 

助詞や活用を削る(手作業、これも機械的に支援したい) :

僕
今作ってるもの
たくさんのアトムがある
しばしば
複数のコンポーネント
一つのアトムに依存
複数のアトムに依存するコンポーネントがある
アトムの変更
一部のコンポーネントだけ再描画したい
Recoilのアプローチ
とてもフィットしそう

:

input
僕は短文の付箋を作ることとか、長文で書いてしまったものを短く刻むことに慣れてるのだけど、世の中の人は慣れてないから長文のまま入れてしまって「字が小さすぎて読めない付箋」を作っちゃうよね

expected output
僕
短文の付箋を作る
長文で書いてしまったものを短く刻む
慣れてる
世の中の人
慣れてない
長文のまま入れてしまう
字が小さすぎて読めない付箋
作っちゃう

0 ['僕は'] 11
1 ['短文の', '付箋を', '作る', 'こととか、'] 7
5 ['長文で', '書いてしまった', 'ものを'] 9
8 ['短く', '刻む', 'ことに', '慣れてるのだけど、'] 22
12 ['世の中の', '人は', '慣れてないから'] 22
15 ['長文の', 'まま', '入れてしまって'] 22
18 ['「字が', '小さすぎて', '読めない', '付箋」を', '作っちゃうよね'] -1

これは係り受け解析で失敗してる

pRegroup2020