Python 创建包含年份和单词的共现矩阵

Python 创建包含年份和单词的共现矩阵,python,matrix,network-analysis,Python,Matrix,Network Analysis,我有一个会议摘要数据集,还有一本字典,里面有每年词频的字典。我想把这本字典变成一个矩阵,比较每年的频率和其他年份的频率,看看哪些年份彼此最相似 我把字典做成了一个数据框。记住:这是文字和岁月 wordsdf = pd.DataFrame.from_dict(word_dfs, orient='index') 我试图将年份作为列和行在coocc矩阵中进行比较。但到目前为止,因为它们不都是整数,我不能只使用点积。有什么建议吗 我试过了,但没有用: # #to create a co-occurre

我有一个会议摘要数据集,还有一本字典,里面有每年词频的字典。我想把这本字典变成一个矩阵,比较每年的频率和其他年份的频率,看看哪些年份彼此最相似

我把字典做成了一个数据框。记住:这是文字和岁月

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
创建共现矩阵的步骤 从nltk.tokenize导入单词\u tokenize 从itertools导入组合 从收款进口柜台 句子=单词 vocab=set(单词_标记化(“”.join(str(句子))) token_sent_list=[句子中sen的单词_tokenize(sen)] co_occ={ii:Counter({jj:0表示vocab中的jj,如果jj!=ii})表示vocab中的ii} k=2 对于令牌发送列表中的sen: 对于范围内的ii(len(sen)): 如果iilen(sen)-(k+1): c=计数器(sen[ii-k::]) 德尔c[森[ii]] co_occ[sen[ii]]=co_occ[sen[ii]]+c 其他: c=计数器(sen[ii-k:ii+k+1]) 德尔c[森[ii]] co_occ[sen[ii]]=co_occ[sen[ii]]+c ##使用dict形式的最终矩阵可以将其转换为不同的python数据结构 co_occ={ii:dict(co_occ[ii])用于vocab中的ii} co_occ
Hi Sophie,欢迎使用Stack Overflow。请将您的相关代码添加到您的问题中,以便其他成员能够帮助您。对此表示抱歉,Khalid。我附加了当前不起作用的代码。谢谢!Hi Sophie,欢迎使用Stack Overflow。请将您的相关代码添加到您的问题中,以便其他成员能够帮助您。s抱歉,哈立德。我附加了目前不起作用的代码。谢谢!