def word_count(): data = mk30.load_morph() word_counter = defaultdict(int) for line in data: word_counter[line["base"]] += 1 return word_counter
# coding=utf-8 """ 34. 「AのB」 2つの名詞が「の」で連結されている名詞句を抽出せよ. """ import mk30 data = mk30.load_morph() for num, line in enumerate(data): if line["surface"] == "の" and data[num - 1]["pos"] == "名詞" and data[num + 1]["pos"] == "名詞": print data[num - 1]["surface"] + line["surface"] + data[num + 1]["surface"] """ スライディングウィンドウ """ """ $ python mk34.py 彼の掌 掌の上 書生の顔 はずの顔 顔の真中 穴の中 書生の掌 掌の裏 何の事 肝心の母親 藁の上
# coding=utf-8 """ 32. 動詞の原形 動詞の原形をすべて抽出せよ. """ import mk30 for line in mk30.load_morph(): if line["pos"] == "動詞": print line["base"] """ $ python mk32.py 生れる つく する 泣く する いる 始める 見る 聞く 捕える 煮る 食う 思う 載せる られる 持ち上げる
# coding=utf-8 """ 35. 名詞の連接 名詞の連接(連続して出現する名詞)を最長一致で抽出せよ. """ import mk30 data = mk30.load_morph() noun_ls = list() for num, line in enumerate(data): if line["pos"] == "名詞" and data[num + 1]["pos"] == "名詞": # noun = noun + line["surface"] noun_ls.append(line["surface"]) elif line["pos"] == "名詞" and data[num + 1]["pos"] != "名詞": noun_ls.append(line["surface"]) if len(noun_ls) >= 2: print "".join(noun_ls) noun_ls = list() """ itertoolsのgroupby便利! """ """ $ python mk35.py 人間中 一番獰悪 時妙 一毛
# coding=utf-8 """ 33. サ変名詞 サ変接続の名詞をすべて抽出せよ. """ import mk30 for line in mk30.load_morph(): if line["pos1"] == "サ変接続": print line["surface"] """ $ python mk33.py 見当 記憶 話 装飾 突起 運転 記憶 分別 決心 我慢 餓死 訪問 始末 猶予 遭遇 我慢