Создание матрицы совпадений с годами и словами - PullRequest
1 голос
/ 22 апреля 2019

У меня есть набор тезисов докладов с конференций и словарь с словарями частот слов каждого года. Я хочу превратить этот словарь словарей в матрицу, которая сравнивает частоты каждого года с другими годами, чтобы увидеть, какие годы наиболее похожи друг на друга.

Я превратил словарь в кадр данных панд. Помните: это слова и годы.

wordsdf = pd.DataFrame.from_dict(word_dfs, orient='index')

Я пытаюсь получить годы в виде столбцов и строк для сравнения в матрице coocc. Но пока, потому что они не все целые, я не могу просто использовать точечный продукт. Какие-либо предложения?

Я пробовал это безрезультатно:

# #to create a co-occurrence matrix
from nltk.tokenize import word_tokenize
from itertools import combinations
from collections import Counter

sentences = wordsdf
vocab = set(word_tokenize(' '.join(str(sentences)))
token_sent_list = [word_tokenize(sen) for sen in sentences]

co_occ = {ii:Counter({jj:0 for jj in vocab if jj!=ii}) for ii in vocab}
k=2

for sen in token_sent_list:
    for ii in range(len(sen)):
        if ii < k:
            c = Counter(sen[0:ii+k+1])
            del c[sen[ii]]
            co_occ[sen[ii]] = co_occ[sen[ii]] + c
        elif ii > len(sen)-(k+1):
            c = Counter(sen[ii-k::])
            del c[sen[ii]]
            co_occ[sen[ii]] = co_occ[sen[ii]] + c
        else:
            c = Counter(sen[ii-k:ii+k+1])
            del c[sen[ii]]
            co_occ[sen[ii]] = co_occ[sen[ii]] + c

# # Having final matrix in dict form lets you convert it to different python data structures
co_occ = {ii:dict(co_occ[ii]) for ii in vocab}
co_occ
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...