Я работаю над сходством документов с помощью WordNet, хотя я не знаю, как применить взвешивание IDF на этом этапе в моем коде.Я уверен, что это взвешивание - одна из самых простых вещей, но вся информация онлайн кажется довольно запутанной.Я пытаюсь добраться до точки, где я могу использовать косинусное сходство, хотя я потерян в данный момент, любая помощь приветствуется.Я собрал 2 корпуса в отдельные пакеты и посчитал частоты, так что часть TF завершена?
def make_bow(somestring):
rep=word_tokenize(somestring)
rep=normalise(rep)
rep=stem(rep)
rep=filter_stopwords(rep)
dict_rep={}
for token in rep:
dict_rep[token]=dict_rep.get(token,0)+1
return(dict_rep)
wsj=WSJCorpusReader()
rcr=ReutersCorpusReader()
collectionsize=50
collections={"wsj":[],"rcr":[]}
for key in collections.keys():
if key=="wsj":
generator=wsj.raw()
else:
generator=rcr.raw()
while len(collections[key])<collectionsize:
collections[key].append(next(generator))
bow_collections={key:[make_bow(doc) for doc in collection] for key,collection in collections.items()}
print(bow_collections)
В итоге получается печать:
{'wsj': [{'pierre': 1, 'vinken': 1, 'NUM': 2, 'year': 1, 'old': 1, 'join':
1, 'board': 1, 'nonexecutive': 1, 'director': 1}, {'vinken': 1, 'chairman':
1, 'elsevier': 1, 'dutch': 1, 'publishing': 1, 'group': 1}, {'rudolph': 1,
'agnew': 1, 'NUM': 1, 'year': 1, 'old': 1, 'former': 1, 'chairman': 1,
'consolidated': 1, 'gold': 1, 'field': 1, 'plc': 1, 'wa': 1, 'named': 1,
'nonexecutive': 1, 'director': 1, 'british': 1, ......