TypeError: doc2bow ожидает массив токенов unicode на входе, а не одну строку [duplicate]

Эта проблема еще не решена (по крайней мере), по крайней мере, нелегко / без скриптов: см. этот пост в списке рассылки git от Junio ​​C Hamano, объясняя ситуацию и предоставляя вызов для простого решения.

Основная причина состоит в том, что вам не нужно это:

С git, который не является древним (т.е. v1.5.0 или новее), нет причин иметь локальные " dev ", которые полностью отслеживают дистанцию. Если вы хотите только посмотреть и посмотреть, вы можете проверить ветвь удаленного отслеживания непосредственно на отдельном HEAD с помощью «git checkout origin/dev».

Это означает, что единственные случаи, которые нам нужно сделать удобно для пользователей обрабатывать эти локальные ветви, которые «отслеживают» удаленные, когда у вас есть локальные изменения, или когда вы планируете их использовать.

Если у вас есть локальные изменения на «dev», которые отмеченный для отслеживания удаления «dev», и если вы находитесь на ветке, отличной от «dev», тогда мы ничего не должны делать после того, как «git fetch» обновит «dev» удаленного отслеживания. В любом случае он не будет ускоренным переадресацией

blockquote>

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

Итак, как насчет «git branch --prune --remote=», который итерации по локальным ветвям, и если

(1) а не текущая ветвь; и (2) он отмечен для отслеживания некоторой ветви, взятой из & lt; upstream & gt ;; и (3) он не имеет никаких коммитов по своему усмотрению;

затем удаляет эту ветвь? «git remote --prune-local-forks » также прекрасен; Меня не волнует, какая команда очень сильно реализует эту функцию.

blockquote>

Примечание: с git 2.10 такого решения не существует. Обратите внимание, что подкоманда git remote prune и git fetch --prune относятся к удалению ветви удаленного отслеживания для ветки, которая больше не существует на удаленном компьютере, а не об удалении локальной ветви, которая отслеживает ветку удаленного отслеживания (для которой ветвь удаленного отслеживания является ветвью вверх по течению) .

6
задан Sam 20 October 2015 в 06:20
поделиться

1 ответ

В словаре.py функция инициализации:

def __init__(self, documents=None):
    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

    if documents is not None:
        self.add_documents(documents)

Функция add_documents Создайте словарь из коллекции документов. Каждый документ представляет собой список токенов:

def add_documents(self, documents):

    for docno, document in enumerate(documents):
        if docno % 10000 == 0:
            logger.info("adding document #%i to %s" % (docno, self))
        _ = self.doc2bow(document, allow_update=True) # ignore the result, here we only care about updating token ids
    logger.info("built %s from %i documents (total %i corpus positions)" %
                 (self, self.num_docs, self.num_pos))

Итак, если вы инициализируете словарь таким образом, вы должны передавать документы, но не один документ. Например,

dic = corpora.Dictionary([a.split()])

в порядке.

5
ответ дан wyq10 21 August 2018 в 02:19
поделиться
  • 1
    Привет wyq10, я пробовал этот подход, кажется, он работает, однако есть небольшая проблема. Счет (частота) всех токенов в словаре остается таким же, то есть 1, несмотря на частоту для многих токенов более 1 – Sam 20 October 2015 в 10:59
Другие вопросы по тегам:

Похожие вопросы: