英文字変換

「英文字変換」の編集履歴(バックアップ)一覧はこちら

英文字変換」(2014/05/07 (水) 17:38:06) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

自然言語処理では様々な文字を取り扱います。 その際、ABCとabcを全く同じものとしたり別々のものとしたい時が別れることがあります。 今回は小文字や全角を全て半角大文字に変換するプログラムを書いてみましょう。 convalpha(A,X):- name(A,B), convsalpha(B,Y), name(X,Y). convsalpha([],[]):-!. convsalpha([A|L],[B|S]):-A>96,A<123,!,B is A-32,convsalpha(L,S). %[a-z]=[97-122] %shift-jis convsalpha([A|L],[B|S]):-A>33375,A<33402,!,B is A-33311,convsalpha(L,S). %[A-Z]=[33376-33401] convsalpha([A|L],[B|S]):-A>33408,A<33435,!,B is A-33344,convsalpha(L,S). %[a-z]=[33409-33434] convsalpha([A|L],[B|S]):-A>33358,A<33368,!,B is A-33311,convsalpha(L,S). %[0-9]=[33359-33368] %utf8 convsalpha([A|L],[B|S]):-A>15711392,A<15711419,!,B is A-15711328,convsalpha(L,S). %[A-Z]=[15711393-15711418] convsalpha([A|L],[B|S]):-A>15711616,A<15711643,!,B is A-15711552,convsalpha(L,S). %[a-z]=[15711617-15711642] convsalpha([A|L],[B|S]):-A>15711375,A<15711386,!,B is A-15711328,convsalpha(L,S). %[0-9]=[15711376-15711385] convsalpha([A|L],[A|S]):-convsalpha(L,S). 実際にコンサルトして確認してみましょう。 | ?-convalpha(abc,X). X = ABC yes | ?-convalpha('abc',X). X = ABC | ?-convalpha(aBC,X). X = ABC このようにリスト処理は書き方を少しだけ変えるだけで様々な処理を記述することができます。
自然言語処理では様々な文字を取り扱います。 その際、ABCとabcを全く同じものとしたり別々のものとしたい時が別れることがあります。 今回は小文字や全角を全て半角大文字に変換するプログラムを書いてみましょう。 convalpha(A,X):- name(A,B), convsalpha(B,Y), name(X,Y). convsalpha([],[]):-!. convsalpha([A|L],[B|S]):-A>96,A<123,!,B is A-32,convsalpha(L,S). %[a-z]=[97-122] %shift-jis convsalpha([A|L],[B|S]):-A>33375,A<33402,!,B is A-33311,convsalpha(L,S). %[A-Z]=[33376-33401] convsalpha([A|L],[B|S]):-A>33408,A<33435,!,B is A-33344,convsalpha(L,S). %[a-z]=[33409-33434] convsalpha([A|L],[B|S]):-A>33358,A<33368,!,B is A-33311,convsalpha(L,S). %[0-9]=[33359-33368] %utf8 convsalpha([A|L],[B|S]):-A>15711392,A<15711419,!,B is A-15711328,convsalpha(L,S). %[A-Z]=[15711393-15711418] convsalpha([A|L],[B|S]):-A>15711616,A<15711643,!,B is A-15711552,convsalpha(L,S). %[a-z]=[15711617-15711642] convsalpha([A|L],[B|S]):-A>15711375,A<15711386,!,B is A-15711328,convsalpha(L,S). %[0-9]=[15711376-15711385] convsalpha([A|L],[A|S]):-convsalpha(L,S). 実際にコンサルトして確認してみましょう。 | ?-convalpha(abc,X). X = ABC yes | ?-convalpha('abc',X). X = ABC | ?-convalpha(aBC,X). X = ABC このようにリスト処理は書き方を少しだけ変えるだけで様々な処理を記述することができます。

表示オプション

横に並べて表示:
変化行の前後のみ表示: