### from collections import defaultdict from k40 import Morph, morph2sents from k41 import Chunk, morph2chunk, sources if __name__ == "__main__": with open( "/users/kcnco/github/100knock2021/pan/chapter05/ai.ja1.txt.parsed", "r") as ai: ai = ai.readlines() ai_morphs = [] for i in range(len(ai)): ai_morphs.append(Morph(ai[i])) sents = morph2sents(ai_morphs) for sent in sents: chunks = morph2chunk(sent) sources(chunks) for i in range(len(chunks)): #print(chunk.meta) #print(chunk.show_bunsetsu_tag()) if "サ変接続" in chunks[i].show_morph_pos1(): if "を" in chunks[i].show_only_listwords(): print(chunks[i].show_only_words(), end="") goto = chunks[i].dst verb = chunks[goto].show_base_for_X("動詞") adpos = set() dep = [] if verb != None: if chunks[goto].srcs != []:
### from collections import defaultdict from k40 import Morph, morph2sents from k41 import Chunk, morph2chunk if __name__ == "__main__": with open( "/users/kcnco/github/100knock2021/pan/chapter05/ai.ja1.txt.parsed", "r") as ai: ai = ai.readlines() ai_morphs = [] for i in range(len(ai)): ai_morphs.append(Morph(ai[i])) sent = morph2sents(ai_morphs)[32] #for sent in sents: chunks = morph2chunk(sent) for i in range(len(chunks)): if "名詞" in chunks[i].show_only_listpos(): #print(chunks[i].show_only_listpos()) print(chunks[i].show_only_words(), end="") goto = chunks[i].dst while goto != None: print(" -> " + chunks[goto].show_only_words(), end="") goto = chunks[goto].dst print("")
#与えられた文の係り受け木を有向グラフとして可視化せよ.可視化には,Graphviz等を用いるとよい. from collections import defaultdict from k40 import Morph, morph2sents from k41 import Chunk, morph2chunk if __name__ == "__main__": with open( "/users/kcnco/github/100knock2021/pan/chapter05/ai.ja1.txt.parsed", "r") as ai: ai = ai.readlines() ai_morphs = [] for i in range(len(ai)): ai_morphs.append(Morph(ai[i])) sent = morph2sents(ai_morphs)[32] #任意の文章No.を指定 #for sent in sents: chunks = morph2chunk(sent) sen = [] f = open("graph.gv", "w", encoding="UTF-8") f.write("digraph graph_name {" + "\n") f.write("node [fontname = \"MS Gothic\"];" + "\n") for i in range(len(chunks)): goto = chunks[i].dst sen.append(chunks[i].show_only_words()) if goto != None: f.write(chunks[i].show_only_words()) f.write(" -> " + chunks[goto].show_only_words()) goto = chunks[goto].dst f.write(";" + "\n")