#python-3.x #matrix #boolean #minhash #shingles
#python-3.x #матрица #логический #минхаш #опоясывающий лишай
Вопрос:
Я должен создать логическую матрицу из [уникальных наборов гальки во всех документах] x [идентификаторов документов]. До сих пор у меня есть список под названием allshinglesU, который содержит все уникальные наборы черепицы во всех документах. У меня также есть словарь ключей и значений с именем docsAsShingleSetsW, в котором идентификаторы документов являются ключами, а наборы гальки, найденные в этом документе, являются значениями. Как я могу создать логическую матрицу, чтобы определить, появляется ли уникальный набор гальки в документе n?
Это мой прогресс до сих пор:
docsAsShingleSetsW = {} # Maintain a list of all document IDs. docNames = [] shingle_size = 2 totalShingles = 0 shingleNo = 0 allshingles = [] for i in range(0, len(documents)): # Read all of the words words = documents[i] words = words.split() docID = i docNames.append(docID) # 'shinglesInDoc' will hold all of the unique shingles present in the current document. If a shingle ID occurs multiple times in the document, it will only appear once in the set. # keep word shingles shinglesInDocWords = set() # keep hashed shingles shinglesInDocInts = set() shingle = [] # For each word in the document... for index in range(len(words) - shingle_size 1): # Construct the shingle text by combining k words together. shingle = words[index:index shingle_size] shingle = ' '.join(shingle) # Hash the shingle to a 32-bit integer. crc = binascii.crc32(bytes(shingle,encoding='utf8')) amp; 0xffffffff if shingle not in shinglesInDocWords: shinglesInDocWords.add(shingle) allshingles.append(shingle) # Add the hash value to the list of shingles for the current document. # Note that set objects will only add the value to the set if the set # doesn't already contain it. if crc not in shinglesInDocInts: shinglesInDocInts.add(crc) # Count the number of shingles across all documents. shingleNo = shingleNo 1 else: del shingle index = index - 1 # Store the completed list of shingles for this document in the dictionary. docsAsShingleSets[docID] = shinglesInDocInts docsAsShingleSetsW[docID] = shinglesInDocWords totalShingles = shingleNo