実際の経験ジップ分布に応じて選択するには、最初に英語の単語の頻度の表が必要です。最も頻繁に行なわれる10万人がhereを得ることができます。 PDFだ
、テキストは、取り扱いが容易であるので、それを変換し、Linux上で、あなたはこれが作成されます
pdftotextのfreq100000.pdf
を行うことができます次の小さなスクリプトで使用できるテキストファイルfreq100000.txt
import re
import numpy as np
record = re.compile('[0-9]+ [0-9]+ [a-z]+')
data = {}
for line in open('freq100000.txt'):
m = record.match(line.strip())
if not m is None:
rank, freq, word = m.group(0).split()
data[word] = int(rank), int(freq)
def rel_freqs(wlist):
freqs = np.array([data[word.lower()][1] for word in wlist])
ps = np.add.accumulate(freqs)
choice = np.searchsorted(ps, np.random.randint(ps[-1]))
return choice
rel_freqs(['Here', 'in', 'the', 'wall', 'why'])
関数rel_freqs
は、リストから単語をランダムに選択し、そのインデックスを返します。単語を描く確率は、英語で出現する頻度に比例する。
英語のこれらの単語の実際の頻度を意味しますか? –
はい。私はzipfsの分布に従って要素を選択したい。あなたの質問を理解したら – Antonis