前提・実現したいこと
Python3.7で、与えれた文字から、順列によって5万個の単語を生成したいです。
また、できた単語の制限 (母音を含まない単語は取り除く) も行いたいです。
現在以下のようなforループを用いた処理を行っているのですが、とてもメモリを食うようです。
より効率よく処理を行うためになにか方法があるでしょうか?
Python
1import random 2# この中から取ってくる用の文字記号リスト 3consonant_inventory = ['p', 'b', 't', 'd', 'c', 'k', 'g', 'q', 'm', 'n', 'r', 'f', 'v', 's', 'z', 'x', 'h', 'l', 'j', 'w', 'ŋ', 'θ', 'ʃ', 'ʒ', 'ð', 'χ', 'ɟ', 'ɢ', 'ʔ', 'ɸ', 'ɴ',""] 4vowel_inventory = ['a', 'i', 'u', 'e', 'o', 'ɛ', 'ɔ', 'ʊ', 'ɪ', 'æ', 'ɑ', 'ʌ', 'ɘ', 'ə', 'ø', 'ɨ', 'ʉ', 'ʊ',""] 5word_inventory = [] 6 7for C1line in consonant_inventory: 8 C1 = C1line 9 for V1line in vowel_inventory: 10 V1 =V1line 11 for C2line in consonant_inventory: 12 C2 = C2line 13 for C3line in consonant_inventory: 14 C3 = C3line 15 for V2line in vowel_inventory: 16 V2 = V2line 17 for C4line in consonant_inventory: 18 C4 = C4line 19 # V1が空の場合はその単語を辞書にいれない、V2が空の場合はC1V1C2だけを辞書にいれる 20 if V1 != "": 21 if V2 == "": 22 word_inventory.append(C1 + V1 + C2) 23 else: 24 word_inventory.append(C1 + V1 + C2 + C3 + V2 + C4) 25 26word_inventory = list(set(word_inventory)) # 重複を取り除く 27word_inventory = random.sample(word_inventory,50000) # 語数を50000語に制限
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。