美文网首页
[根据词频排序]使用operator.itemgetter(1)

[根据词频排序]使用operator.itemgetter(1)

作者: VanJordan | 来源:发表于2019-01-08 10:03 被阅读8次
    return sorted(
          vocab_freq_map.items(), key=operator.itemgetter(1), reverse=True)
    
    • operator.itemgetter函数
    • operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子。
    a = [1,2,3] 
    >>> b=operator.itemgetter(1)      //定义函数b,获取对象的第1个域的值
    >>> b(a) 
    2 
    >>> b=operator.itemgetter(1,0)   //定义函数b,获取对象的第1个域和第0个的值
    >>> b(a) 
    (2, 1) 
    
    • 要注意,operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。
    • 和这个是等价的sorted(l, key=lambda x:x[0]),所以感觉用lambda函数更方便啊,
    • list.sort()是对已经存在的列表进行操作,进而可以改变进行操作的列表。而内建函数sorted返回的是一个新的list,而不是在原来的基础上进行的操作.
      vocab_freqs = dict((term, freq) for term, freq in vocab_freqs.items()
                         if doc_counts[term] > FLAGS.doc_count_threshold)
    
      # Sort by frequency
      ordered_vocab_freqs = data_utils.sort_vocab_by_frequency(vocab_freqs)
    
      # Limit vocab size
      ordered_vocab_freqs = ordered_vocab_freqs[:MAX_VOCAB_SIZE]
    
      # Add EOS token
      ordered_vocab_freqs.append((data_utils.EOS_TOKEN, 1))
    
    • 首先先去除词频大于threshold的单词组成字典形式。
    • 然后使用sorted进行排序。
    • 然后使用MAX_VOCAB_SIZE来截取。
    • 最后加上EOS_TOKEN

    相关文章

      网友评论

          本文标题:[根据词频排序]使用operator.itemgetter(1)

          本文链接:https://www.haomeiwen.com/subject/swxvrqtx.html