Нормализация данных мешка слов в Gensim - PullRequest
0 голосов
/ 25 июня 2018

Я использую gensim для создания модели пакета слов и хочу выполнить нормализацию. Я нашел документацию (https://radimrehurek.com/gensim/models/normmodel.html),, но я не уверен, как реализовать это с учетом имеющегося у меня кода. Conversations - это список токенизированных документов, поэтому, по сути, список списков, когда каждый элемент является документом.

id2word = corpora.Dictionary(conversations)
id2word.filter_extremes(keep_n=5000, keep_tokens=None) 
corpus = [id2word.doc2bow(text) for text in conversations]
norm_corpus = NormModel(corpus)

Корпус - разреженная матрица, я полагаю. Для каждого документа он имеет ненулевую частоту и соответствующие значения: [[(0, 2), (1, 5), (2, 4) ... (92, 2), (93, 3) ], ...].

Последняя строка с norm_corpus не работает, когда я пытаюсь ввести ее в следующее: models.LsiModel(norm_corpus, id2word=id2word, num_topics=12). Я получаю сообщение об ошибке типа, объект 'int' не повторяется. Тем не менее, документация говорит, чтобы передать в корпус, так что я в замешательстве. Буду признателен за любую помощь - спасибо!

1 Ответ

0 голосов
/ 25 июня 2018

У меня нет способа проверить в данный момент, но попробуйте это:

norm_corpus = NormModel()
norm_corpus.normalize(text)

или

norm_corpus.normalize(id2word.doc2bow(text)

В вашем исходном коде у вас есть

`NormModel(iterable)`

, но в документации сказано, что вам нужно пройти:

NormModel(iterable of iterable(int,number))

Если это имеет смысл.

...