def main(): text = "paraparaparadise" x = get_n_gram.n_gram(list(text)) print(x) difx = dif(x) print(difx) text = "paragraph" y = get_n_gram.n_gram(list(text)) print(y) dify = dif(y) print(dify) union = (difx | dify) intersection = (difx & dify) difference = (difx - dify) print(union) print(intersection) print(difference) if "se" in difx: print(u"found_se_in_x") if "se" in dify: print(u"found_se_in_y")
def main(): text = "paraparaparadise" x = get_n_gram.n_gram(list(text)) print(x) difx = dif(x) print(difx) text = "paragraph" y = get_n_gram.n_gram(list(text)) print(y) dify = dif(y) print(dify) union = (difx | dify) intersection = (difx & dify) difference = (difx - dify) print(union) print(intersection) print(difference) if "se" in difx: print (u"found_se_in_x") if "se" in dify: print (u"found_se_in_y")
# -*- encoding: utf-8 -*- from knock05 import n_gram X = set(n_gram("paraparaparadise", 2)) Y = set(n_gram("paragraph", 2)) print("X " + str(X)) print("Y " + str(Y)) print("和集合 " + str(X.union(Y))) print("積集合 " + str(X.intersection(Y))) print("X - Y " + str(X.difference(Y))) print("Y - X " + str(Y.difference(X))) print("seがXに含まれるか?" + str("se" in X)) print("seがYに含まれるか?" + str("se" in Y))
""" import os import sys from knock05 import n_gram sys.path.append(os.path.join(os.path.dirname(__file__), "../../")) from kiyuna.utils.message import Renderer, message # noqa: E402 isort:skip if __name__ == "__main__": w1 = "paraparaparadise" w2 = "paragraph" n = 2 X = set(n_gram(w1, n)) Y = set(n_gram(w2, n)) tgt = n_gram("se", n).pop() print("X =", X) print("Y =", Y) print("X ∪ Y = {}".format(X | Y)) # X.union(Y) print("X ∩ Y = {}".format(X & Y)) # X.intersection(Y) print("X \\ Y = {}".format(X - Y)) # X.difference(Y) print("Y \\ X = {}".format(Y - X)) # Y.difference(X) print(f"X includes 'se': {tgt in X}") print(f"Y includes 'se': {tgt in Y}") with Renderer("MEMO") as out:
''' 06. 集合 "paraparaparadise" と "paragraph" に含まれる文字 bi-gram の集合を, それぞれ, X と Y として求め,X と Y の和集合,積集合,差集合を求めよ. さらに,'se' という bi-gram が X および Y に含まれるかどうかを調べよ. ''' from knock05 import n_gram # -B をつけるとキャッシュが出ない if __name__ == '__main__': w1 = "paraparaparadise" w2 = "paragraph" tgt = n_gram('se', n=2).pop() X = set(n_gram(w1, n=2)) Y = set(n_gram(w2, n=2)) print('X =', X) print('Y =', Y) print('X ∪ Y = {}'.format(X | Y)) # X.union(Y) print('X ∩ Y = {}'.format(X & Y)) # X.intersection(Y) print('X \ Y = {}'.format(X - Y)) # X.difference(Y) print('Y \ X = {}'.format(Y - X)) # Y.difference(X) print(f"X includes 'se': {tgt in X}") print(f"Y includes 'se': {tgt in Y}")
from knock05 import n_gram str1 = "paraparaparadise" str2 = "paragraph" n = 2 X = set(n_gram(str1, n)) Y = set(n_gram(str2, n)) print(f"{X | Y}") print(f"{X & Y}") print(f"{X - Y}") if "se" in X: print("Xに含まれる") else: print("Xに含まれない") if "se" in Y: print("Yに含まれる") else: print("Yに含まれない")
# 06. 集合 # “paraparaparadise”と”paragraph”に含まれる文字bi-gramの集合を,それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ. # さらに,’se’というbi-gramがXおよびYに含まれるかどうかを調べよ. from knock05 import n_gram if __name__ == "__main__": str1 = "paraparaparadise" str2 = "paragraph" str3 = "se" X = n_gram(str1, t="char") X = set(X) Y = n_gram(str2, t="char") Y = set(Y) union = X | Y intersec = X & Y # 差集合演算は可換でないので、「XとYの差集合」という表現はよくない。 diff1 = X - Y diff2 = Y - X print(f"{X=}") print(f"{Y=}") print(f"{union=}") print(f"{intersec=}") print(f"{diff1=}") print(f"{diff2=}") # 「XおよびYに含まれるかどうかを調べよ」は、「XとYのそれぞれに対して別々に調べる」という意味だとは思うが、「XとYの両方に含まれるかどうかを調べる」という意味にも解釈できる? # 「および」は、文脈によって、「かつ」にも「または」にも言い換えられる? ans1 = str3 in X ans2 = str3 in Y ans3 = str3 in intersec print(f"{str3}はXに含まれるか:{ans1}")
from knock05 import n_gram s1 = "paraparaparadise" s2 = "paragraph" bg1 = n_gram(2, s1) bg2 = n_gram(2, s2) se = n_gram(2, "se")[0] print("Union:", set(bg1) or set(bg2)) print("Intersection:", set(bg1) and set(bg2)) print("minus:", set(bg1) - set(bg2)) print(se, "in bigram(", s1, "):", se in bg1) print(se, "in bigram(", s2, "):", se in bg2)
from knock05 import n_gram s1 = "paraparaparadise" s2 = "paragraph" X = set(n_gram(s1, 2)[0]) Y = set(n_gram(s2, 2)[0]) print(f"和集合 : {X | Y}") print(f"積集合 : {X & Y}") print(f"差集合 : {X - Y}") if "se" in X: print("'se' is in X.") else: print("'se' is not in X.") if "se" in Y: print("'se' is in Y.") else: print("'se' is not in Y.")
import knock05 s1 = 'paraparaparadise' s2 = 'paragraph' X = set(knock05.n_gram(2, s1, knock05.CHAR)) Y = set(knock05.n_gram(2, s2, knock05.CHAR)) print(f'{"X":<15}: {X}') print(f'{"Y":<15}: {Y}') print(f'{"Union":<15}: {X | Y}') print(f'{"Intersection":<15}: {X & Y}') print(f'{"Difference(X-Y)":<15}: {X - Y}') print(f'{"Difference(Y-X)":<15}: {Y - X}') print(f"Is 'se' belong to X? -> {'se' in X}") print(f"Is 'se' belong to Y? -> {'se' in Y}") # 06. 集合 # "paraparaparadise"と"paragraph"に含まれる文字bi - gramの集合を,それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ. # さらに,'se'というbi - gramがXおよびYに含まれるかどうかを調べよ. # 実行結果 # X : {'is', 'pa', 'ra', 'ad', 'ar', 'se', 'ap', 'di'} # Y : {'gr', 'ag', 'ph', 'pa', 'ra', 'ar', 'ap'} # Union : {'gr', 'ag', 'ph', 'is', 'pa', 'ra', 'ad', 'ar', 'se', 'ap', 'di'} # Intersection : {'ra', 'ar', 'ap', 'pa'} # Difference(X-Y): {'ad', 'is', 'di', 'se'} # Difference(Y-X): {'ag', 'gr', 'ph'} # Is 'se' belong to X? -> True # Is 'se' belong to Y? -> False
# 06. 集合 # "paraparaparadise"と"paragraph"に含まれる文字bi-gramの集合を, # それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ. # さらに,'se'というbi-gramがXおよびYに含まれるかどうかを調べよ. from knock05 import n_gram if __name__ == "__main__": target1 = "paraparaparadise" target2 = "paragraph" # n_gram 関数はリストで返されるので、集合演算を行うために set 型にキャスト x = set(n_gram(target1, 2)) y = set(n_gram(target2, 2)) print(f"X : {x}") print(f"Y : {y}") print(f"union : {x | y}") print(f"intersection : {x & y}") print(f"difference(X-Y) : {x - y}") print(f"difference(Y-X) : {y - x}") print(f"'se' in X? : {'se' in x}") print(f"'se' in Y? : {'se' in y}")
from knock05 import n_gram X = set(n_gram("paraparaparadise")) Y = set(n_gram("paragraph")) print("X or Y: {}".format(X | Y)) print("X and Y: {}".format(X & Y)) print("X - Y: {}".format(X - Y)) print("Y - X: {}".format(Y - X)) print("'se' in X?: {}".format("se" in X)) print("'se' in Y?: {}".format("se" in Y))
from knock05 import n_gram ''' "paraparaparadise"と"paragraph"に含まれる文字bi-gramの集合を,それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ. さらに,'se'というbi-gramがXおよびYに含まれるかどうかを調べよ. ''' if __name__ == '__main__': s1 = "paraparaparadise" s2 = "paragraph" X = set(n_gram(s1, 2)) Y = set(n_gram(s2, 2)) print(X.union(Y), X.intersection(Y), X.difference(Y), Y.difference(X)) if 'se' in X.intersection(Y): print('Yes') else: print('No')