Gensim Создание словаря без загрузки всех текстов в память Gensim - PullRequest
0 голосов
/ 25 августа 2018

Вместо того, чтобы создавать из одного документа ('mycorpus.txt'), как я могу создать словарь из нескольких документов (каждый из которых будет размером 25 МБ с 10 000 файлов) и, пожалуйста, помните, что я пытаюсь«построить словарь без загрузки всех текстов в память» через gensim

>>> from gensim import corpora
>>> from six import iteritems
>>> dictionary = corpora.Dictionary(line.lower().split() for line in open('mycorpus.txt'))
>>> stop_ids = [dictionary.token2id[stopword] for stopword in stoplist
>>>             if stopword in dictionary.token2id]
>>> once_ids = [tokenid for tokenid, docfreq in iteritems(dictionary.dfs) if docfreq == 1]
>>> dictionary.filter_tokens(stop_ids + once_ids)  # remove stop words and words that appear only once
>>> dictionary.compactify()  # remove gaps in id sequence after words that were removed
>>> print(dictionary)

1 Ответ

0 голосов
/ 27 августа 2018

Для этого вам нужно iterator.
Как взято из веб-сайт gensim :

class MySentences(object):
    def __init__(self, dirname):
        self.dirname = dirname

    def __iter__(self):
        for fname in os.listdir(self.dirname):
            for line in open(os.path.join(self.dirname, fname)):
                yield line.lower().split()

sentences = MySentences('/some/directory') # a memory-friendly iterator

sentences - это iterator, который будет открывать каждый файл при необходимости , используйте его, а затем уничтожьте экземпляр.Поэтому в любой момент в памяти только один файл.

С веб-сайта:

, если наш ввод разбросан по нескольким файлам на диске, с одним предложением в строке, а затем вместозагружая все в список в памяти, мы можем обработать входной файл за файлом, строка за строкой

Чтобы использовать его в вашем случае, просто замените вашу строку dictionary на:

dictionary = corpora.Dictionary(line for line in sentences)

где sentences - это переменная, которую мы определили ранее, которой был задан путь к папке с несколькими .txt файлами.

Чтобы узнать больше об итераторах, итераторах и генераторах, ознакомьтесь с этот блог .

...