Python >> Tutoriel Python >  >> Python Tag >> Gensim

Gensim.corpora.Dictionary a-t-il enregistré la fréquence des termes ?

Non, gensim.corpora.Dictionary n'enregistre pas la fréquence des termes. Vous pouvez voir le code source ici. La classe ne stocke que les variables membres suivantes :

    self.token2id = {}  # token -> tokenId
    self.id2token = {}  # reverse mapping for token2id; only formed on request, to save memory
    self.dfs = {}  # document frequencies: tokenId -> in how many documents this token appeared

    self.num_docs = 0  # number of documents processed
    self.num_pos = 0  # total number of corpus positions
    self.num_nnz = 0  # total number of non-zeroes in the BOW matrix

Cela signifie que tout dans la classe définit la fréquence comme la fréquence du document, jamais la fréquence du terme, car cette dernière n'est jamais stockée globalement. Ceci s'applique à filter_n_most_frequent(remove_n) ainsi que toute autre méthode.


J'avais la même question simple. Il apparaît que la fréquence du mot est cachée et non accessible dans l'objet. Je ne sais pas pourquoi cela rend les tests et la validation pénibles. Ce que j'ai fait, c'est exporter le dictionnaire sous forme de texte.

dictionary.save_as_text('c:\\research\\gensimDictionary.txt')

Dans ce fichier texte, ils ont trois colonnes. Par exemple, voici les mots "summit" "summon" et "sumo"

Fréquence des mots clés

10 sommet 1227

3658 invocation 118

8477 sumo 40

J'ai trouvé une solution les .cfs sont les fréquences des mots.. voir https://radimrehurek.com/gensim/corpora/dictionary.html#gensim.corpora.dictionary.Dictionary

print(str(dictionary[10]), str(dictionary.cfs[10])) 

sommet 1227

simple