Реализация словаря Gensim

Мне просто было интересно узнать о реализации словаря gensim. У меня есть следующий код:

    def build_dictionary(documents):
        dictionary = corpora.Dictionary(documents)
        dictionary.save('/tmp/deerwester.dict') # store the dictionary
        return dictionary    

и я заглянул внутрь файла deerwester.dict и он выглядит так:

8002 6367 656e 7369 6d2e 636f 7270 6f72
612e 6469 6374 696f 6e61 7279 0a44 6963
7469 6f6e 6172 790a 7101 2981 7102 7d71
0328 5508 6e75 6d5f 646f 6373 7104 4b09
5508 ...

следующий код, однако,

my_dict = dictionary.load('/tmp/deerwester.dict') 
print my_dict.token2id #view dictionary

дает это:

{'minors': 30, 'generation': 22, 'testing': 16, 'iv': 29, 'engineering': 15, 'computer': 2, 'relation': 20, 'human': 3, 'measurement': 18, 'unordered': 25, 'binary': 21, 'abc': 0, 'ordering': 31, 'graph': 26, 'system': 10, 'machine': 6, 'quasi': 32, 'random': 23, 'paths': 28, 'error': 17, 'trees': 24, 'lab': 5, 'applications': 1, 'management': 14, 'user': 12, 'interface': 4, 'intersection': 27, 'response': 8, 'perceived': 19, 'widths': 34, 'well': 33, 'eps': 13, 'survey': 9, 'time': 11, 'opinion': 7}

Поэтому мой вопрос таков: поскольку я не вижу фактических слов в файле.dict, каковы все шестнадцатеричные значения, хранящиеся там? Это какой-то супер сжатый формат? Мне любопытно, потому что я чувствую, что если это так, я должен подумать об использовании его с этого момента.

1 ответ

Решение

Приведенный пример:

>>> from gensim import corpora
>>> docs = ["this is a foo bar", "you are a foo"]
>>> texts = [[i for i in doc.lower().split()] for doc in docs]
>>> print texts
[['this', 'is', 'a', 'foo', 'bar'], ['you', 'are', 'a', 'foo']]

>>> dictionary = corpora.Dictionary(texts)
>>> dictionary.save('foobar.txtdic')

Если вы используете gensim.corpora.dictionary.save_as_text() (см. https://github.com/piskvorky/gensim/blob/develop/gensim/corpora/dictionary.py), вы должны получить следующий текстовый файл:

0   a   2
5   are 1
1   bar 1
2   foo 2
3   is  1
4   this    1
6   you 1

Если вы используете по умолчанию gensim.corpora.dictionary.save()Сохраняется в маринованный двоичный файл. Увидеть class SaveLoad(object) в https://github.com/piskvorky/gensim/blob/develop/gensim/utils.py

Для получения информации о pickleсм. http://docs.python.org/2/library/pickle.html

Другие вопросы по тегам