に合わせてスコアに基づいて、リストの項目を並べ替える:は、私が持っていることを考えると関数曲線
- 各単語
- 難しさのレベルのための「シンプルさ」を示す言葉
- ポイント/スコアのリスト各単語の:
例
>>> words = ['apple', 'pear', 'car', 'man', 'average', 'older', 'values', 'coefficient', 'exponential']
>>> points = ['9999', '9231', '8231', '5123', '4712', '3242', '500', '10', '5']
>>> bins = [0, 0, 0, 0, 1, 1, 1, 2, 2]
現在、単語リストは、シンプルpoints
によって発注されます。
シンプルさを「2次曲線」としてモデル化したいのですが?、すなわち高い方から低い地点へと戻っハイに、すなわち対応点で、このように見える単語リストを生成:私はこれを試してみましたが、それは痛いほどクレイジーだ
['apple', 'pear', 'average', 'coefficient', 'exponential', 'older', 'values', 'apple', 'pear']
を:
>>> from collections import Counter
>>> Counter(bins)[0]
4
>>> num_easy, num_mid, num_hard = Counter(bins)[0], Counter(bins)[1], Counter(bins)[2]
>>> num_easy
4
>>> easy_words = words[:num_easy]
>>> mid_words = words[num_easy:num_easy+num_mid]
>>> hard_words = words[-num_hard:]
>>> easy_words, mid_words, hard_words
(['apple', 'pear', 'car', 'man'], ['average', 'older', 'values'], ['coefficient', 'exponential'])
>>> easy_1 = easy_words[:int(num_easy/2)]
>>> easy_2 = easy_words[len(easy_1):]
>>> mid_1 = mid_words[:int(num_mid/2)]
>>> mid_2 = mid_words[len(mid_1):]
>>> new_words = easy_1 + mid_1 + hard_words + mid_2 + easy_1
>>> new_words
['apple', 'pear', 'average', 'coefficient', 'exponential', 'older', 'values', 'apple', 'pear']
いいえ。ビンの数が> 3か、正弦曲線に合うように単語の「ポイント」を設定することができます。
これはまったくnlp
の質問ではなく、 'zipf'ディストリビューションとは関係なく、単語のランキングに合わせて並べ替えるものがあります。
オブジェクト(この場合は単語)を各整数にマップした整数のリストがあり、オブジェクトのリストを2次曲線に合わせて並べ替えたいとします。カスタム基準に従ってリストに
:
のように順序ポイントの派生? – schwobaseggl
ビンはポイントから派生しています。 – alvas
あなたは "単語リストはシンプルな' points'によって整理されていますが、 'points'は' 5123 '、' 3242 '、' 4712'という部分列があるのであなたの例では整列していません。私の理解に間違いはありますか? @Rohanil、typo。 – Rohanil