開発したアプリなど一覧

文字を適当に繋げてラテンっぽい文章を作ってみる。

アフィリエイトリンクを含む場合があります

ふと100均で買ったコップに書いてあるフランス語っぽい文章を見てたら、なんとなくランダムに文字繋げていったらそれっぽい文章になるのではないかと思い立ってスクリプト書いてためしてみた。どうせ英語以外の外国語わからないし。

各文字の出現率は下記URLにある、英単語で使用されている各文字の出現率から。ヨーロッパ系の言語なら大体同じになるでしょうということで。

文字頻度表

単に文字をランダムで繋げただけではかなり不自然になるので以下のルールを加える。

  • 単語の長さは3文字-8文字の間。
  • 母音のみ、子音のみの単語は無し。
  • 母音は連続して2つまで、子音は3つまで。
  • 同じ文字は連続しない。

ということで書いたのが以下のスクリプト。

#!/usr/bin/python import random,re

c = { 'e' : 11.40962588, 'a' : 8.446499792, 't' : 8.184687661, 'i' : 7.130098608, 'o' : 7.051799653, 's' : 6.973500697, 'n' : 6.770412782, 'r' : 6.222320096, 'h' : 4.255058847, 'l' : 3.87335144 , 'd' : 3.870904598, 'c' : 3.195576109, 'u' : 2.953338716, 'm' : 2.671951846, 'p' : 2.023538623, 'f' : 1.984389146, 'g' : 1.820450708, 'y' : 1.793535443, 'w' : 1.698108591, 'b' : 1.644278059, 'v' : 0.998311679, 'k' : 0.8955443 , 'j' : 0.205534757, 'x' : 0.176172649, 'q' : 0.08319264 , 'z' : 0.078298955 }

max = 0.0; _c = {};

for k in c: min = max max = max + c[k] _c.update({k:{'min':min,'max':max}})

def make_word(): text = [] ret_text = ''; for j in range(0, random.randint(3, 8)): rand = random.uniform(0, max * 1000) / 1000 for k in _c: if _c[k]['min'] <= rand and rand <= _c[k]['max']: text.append(k) break ret_text = ''.join(text) if re.compile(r'^[^aeiou]+$').search(ret_text)\ or re.compile(r'^[aeiou]+$').search(ret_text)\ or re.compile(r'[aeiou]{3,}').search(ret_text)\ or re.compile(r'[^aeiou]{4,}').search(ret_text)\ or re.compile(r'([a-zA-Z])\1+').search(ret_text): return make_word() return ret_text

sentence = []

for i in range(0,random.randint(3,10)): sentence.append(make_word())

print ' '.join(sentence)

そして実行した結果例を適当に。

tfua iaseya gie surtsih litlai thbi nih onh neciyt soete card cep odaebr wulst thtia scopwn hwun tovea oruf wse nfno glfuofta kbyemdt cod hoen jreymtai eds gris stie rewrmea nhti ofus gdcae weyh ekt egnh geu husa uhewaip cewhyepn ytafn tdre eteo eroec pnecedue feytranl deta iat sgedeh tcitoi etietw ortlan eni tdehcr emoelwes rete icuha csamnm onewerhi raehadse cerer hsret aliof asne uyawna tapibs ufrn nepbe

なんだかそれっぽい気がする。

こういった適当な文字列に対して「これポーランド語だよ!」とかマイナーな言語の名前言ってもきっとわからないと思う。

しかし新年度から何やってるのか。

Sponsored Link

コメント

タイトルとURLをコピーしました