Pythonで言語処理100本ノックを解く 06. 集合
Pythonで言語処理100本ノックを解いてみます。
7本目です。
環境
Ubuntu 16.04.3 LTS
Python 3.5.2
06. 集合
"paraparaparadise"と"paragraph"に含まれる文字bi-gramの集合を,それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ.さらに,'se'というbi-gramがXおよびYに含まれるかどうかを調べよ.
解答
from nlp05 import char_n_gram if __name__ == "__main__": setX = set(char_n_gram("paraparaparadise",2)) setY = set(char_n_gram("paragraph",2)) print("X", setX) print("Y", setY) print("和集合", setX | setY) print("積集合", setX & setY) print("差集合(X-Y)", setX - setY) print("差集合(Y-X)", setY - setX) print("集合Xにseが含まれるか?", "se" in setX) print("集合Yにseが含まれるか?", "se" in setY)
前回の問題で作成した、n-gramを取得する関数を使っています。
集合演算はかなり簡潔に、分かりやすく書くことが出来ますね。