У вас есть две ошибки. Во-первых, у вас есть простая опечатка, здесь:
for word1,word2 in labels:
ids.append([word_to_id [word1], word_to_id [word1]])
Вы добавляете идентификатор для word1
дважды , там. Исправьте второй word1
, чтобы найти word2
вместо этого.
Далее, вы не проверяете, видели ли вы слово раньше, поэтому для 'Kleiber'
вы сначала даете ему идентификатор 4
, а затем переписываете эту запись на 6
на следующей итерации. Вам нужно дать уникальные слова, а не все слова:
counter = 0
for word in vocabulary:
if word not in word_to_id:
word_to_id[word] = counter
counter += 1
, иначе вы просто не можете добавить слово в vocabulary
, если у вас уже есть это слово в списке. Кстати, вам не нужен отдельный список vocabulary
. Отдельный цикл ничего не покупает, поэтому работает также следующее:
word_to_id = {}
counter = 0
for words in labels:
for word in words:
word_to_id [word] = counter
counter += 1
Вы можете немного упростить свой код, используя defaultdict
объект и itertools.count()
для предоставления значений по умолчанию:
from collections import defaultdict
from itertools import count
def words_to_ids(labels):
word_ids = defaultdict(count().__next__)
return [[word_ids[w1], word_ids[w2]] for w1, w2 in labels]
Объект count()
дает вам следующее целочисленное значение в серии каждый раз, когда вызывается __next__
, и defaultdict()
будет вызывать это каждое время, когда вы пытаетесь получить доступ к ключу, который еще не существует в словаре. Вместе они обеспечивают уникальный идентификатор для каждого уникального слова.
Думаю, да.
Отсюда: http://svn.apache.org/repos/asf/subversion/trunk/INSTALL
* libz (REQUIRED for client and server)
Subversion uses zlib for compressing binary differences.
These diff streams are used everywhere -- over the network,
in the repository, and in the client's working copy.
Да, Подверсия сжимает новые файлы, а также изменения. (Сервер не заботится, является ли файл текстом или двоичным файлом.)
Отметьте, однако: если файл, который Вы добавляете, будет уже сжат (например, архив zip, mp3 файл, JPEG, GIF), то подверсия не сможет сделать его немного меньшим.