Beispiel #1
0
from get_chunks_list import get_chunks_list

for c in get_chunks_list()[8+1]:
    print('文節の係り先->'+ str(c.link))
    body = ''
    for mor in c.morphs:
        body += mor.token_body + ' '
    print('文節 -> '+ body)
Beispiel #2
0
'''
42. 係り元と係り先の文節の表示
係り元の文節と係り先の文節のテキストをタブ区切り形式ですべて抽出せよ.ただし,句読点などの記号は出力しないようにせよ.
'''
from get_chunks_list import get_chunks_list

sents_list = get_chunks_list()
for chunklist in sents_list:#sents_listの要素は、一文のチャンクリスト
    # target_chunk = chunklist.copy()
    for c in chunklist: #ある一文のチャンクをすべてチェックする
        if c.link < 0: #文の終端のチャンクのかかり先はないので-1
            break
        for cc in sents_list[c.sentence_id]:
            if c.link == cc.cid:
                src_sent = ''
                dest_sent = ''
                for srcs in c.morphs:
                    src_sent += srcs.token_body_exclude_symbol
                    # src_sent += srcs.solve_knock40['surface'] + ' '
                for dest in cc.morphs:
                    dest_sent += dest.token_body_exclude_symbol
                    # dest_sent += dest.solve_knock40['surface'] + ' '
                print("{}\t{}".format(src_sent, dest_sent))
Beispiel #3
0
def get_root(_chunks_list, _chunk):
    if _chunk.is_root():
        return list([_chunk])
    else:
        next_chunk = _chunk.link
        return [_chunk] + get_root(_chunks_list, _chunks_list[next_chunk])


def morphs_formatter(_chunks):
    mor_list = [c.allbody_exc_symbol_as_list for c in _chunks]
    return ' -> '.join(mor_list)


# get_chunks_list()の戻りは, sentence (Chunk型のリスト) のリスト
# 空行を無視し0オリジンなので、sentence[5]が例文(8文目)に相当
for sent in get_chunks_list()[0:7]:
    np_chunk_list = [c for c in sent if c.has_noun]
    all_np_pair_list = list(combinations(np_chunk_list, 2))

    if len(all_np_pair_list) == 0:
        continue

    #名詞句ペアを総当りで調べる
    for np_pair in all_np_pair_list:
        chunk_i, chunk_j = np_pair

        # 題意より i < j なので除外
        if not chunk_i.cid < chunk_j.cid:
            continue

        #iからrootまでのチャンクのリスト