Как я могу создать логическую матрицу документов Shingles x?

#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