class Document:
def __init__(self, doc_id):
# create a new document with its ID
self.id = doc_id
# create an empty dictionary
# that will hold the term frequency (TF) counts
self.tfs = {}
def tokenization(self, text):
# split a title into words,
# using space " " as delimiter
words = text.lower().split(" ")
for word in words:
# for each word in the list
if word in self.tfs:
# if it has been counted in the TF dictionary
# add 1 to the count
self.tfs[word] = self.tfs[word] + 1
else:
# if it has not been counted,
# initialize its TF with 1
self.tfs[word] = 1
def save_dictionary(diction_data, file_path_name):
f = open("./textfiles", "w+")
for key in diction_data:
# Separate the key from the frequency with a space and
# add a newline to the end of each key value pair
f.write(key + " " + str(diction_data[key]) + "\n")
f.close()
def vectorize(data_path):
Documents = []
for i in range(1, 21):
file_name = "./textfiles/"+ i + ".txt"
# create a new document with an ID
doc = Document(i+1)
#Read the files
f = open(file_name)
print(f.read())
# compute the term frequencies
#read in the files contents
doc.tokenization(f.read())
# add the documents to the lists
Documents.append(doc)
save_dictionary(doc.tfs, "tf_" + str(doc.id) + ".txt")
DFS = {}
for doc in Documents:
for word in doc.tfs:
DFS[word] = DFS.get(word,0) + 1
save_dictionary(doc.DFS, "DFS_" + str(doc.id) + ".txt")
vectorize("./textfiles")
Итак, выше приведен код, который у меня есть, и он не работает. Я добавил вложенное l oop для каждого слова в словаре документа, чтобы сделать следующее: Если оно не отображается в словаре для DF, добавьте слово в словарь DF;
Если оно уже есть словарь DF, увеличьте его значение DF, добавив к нему 1;
Затем, после обработки всех файлов, я снова вызываю функцию save_dictionary (), чтобы сохранить словарь DF в файл с именем df.txt по тому же пути. с входными текстовыми файлами. Затем векторизируйте.
Когда я запускаю код, ничего не происходит, поэтому я определенно что-то сделал не так, любая помощь будет оценена.