【NLP】关键词共现/属性共现矩阵

【NLP】关键词共现/属性共现矩阵

【共现】理解起来无非是两个词语同时出现的频次作为一个指标,构造矩阵。矩阵的第一列和第一行都是词语列表中的所有词,因此对角线一般设置为0——即不把自己和自己共现算进去。假如矩阵为M,M【i】【j】
就表示第i+1个词和第j+1个词一起在文档集合里出现了多少次,且M【i】【j】=M【j】【i】。

1.构建关键词矩阵

参考网上代码:
感谢Python构建关键词共现矩阵
输入有两个:
DATA——可以理解为文档集合,[[],[],[],…]每个小列表代表一篇文章
Keywordlist——是关键词列表,共现矩阵也是基于它初始化的
我是直接从本地数据库里读取了需要的数据,最后生成CSV文件的矩阵:
这部分在MAIN()中改了下,其他和参考代码一致。

def mainkeyword():

    output_path = r'随便起名.csv'
    # data = reader.readxls_col(keyword_path)[0]
    #原始数据
    data=dbdata()
    #关键词列表
    set_key_list =dbkey()
    # set_key_list = get_set_key(data)
    formated_data = format_data(data)
    matrix = build_matirx(set_key_list)
    matrix = init_matrix(set_key_list, matrix)
    result_matrix = count_matrix(matrix, formated_data)

    np.savetxt(output_path, result_matrix, fmt=('%s,'*len(matrix))[:-1])
    dbkey()
    dbdata()


结果如下:可能很多词只共现1次,总体算是稀疏矩阵。
在这里插入图片描述

2.构建属性共现矩阵

帮忙做一个项目时,对方提到属性这个概念,即可以理解为,把几个词归为一个属性,这样构造的属性共现矩阵就可以大大减少矩阵中数目为0的部分,而且会增大共现次数。
可以将代码里的keywordlist变成属性的字典,每个属性包含某些关键词
大致像这样👇
在这里插入图片描述
相比于上面关键词代码,只需改动计算矩阵共现频次的代码和Main()的代码:

def count_matrix_attr(matrix, formated_data):
    '''计算各个属性共现次数'''
    zd=dbattr()[0]
    for row in range(1, len(matrix)):
        # 遍历矩阵第一行,跳过下标为0的元素
        for col in range(1, len(matrix)):
                # 遍历矩阵第一列,跳过下标为0的元素
                # 实际上就是为了跳过matrix中下标为[0][0]的元素,因为[0][0]为空,不为关键词
            if matrix[0][row] == matrix[col][0]:
                # 如果取出的行关键词和取出的列关键词相同,则其对应的共现次数为0,即矩阵对角线为0
                matrix[col][row] = str(0)
            else:
                counter = 0
                # 初始化计数器
                for ech in formated_data:
                        # 遍历格式化后的原始数据,让取出的行关键词和取出的列关键词进行组合,
                        # 再放到每条原始数据中查询
                    for w1 in zd[matrix[0][row]]:
                        for w2 in zd[matrix[col][0]]:
                            if w1 in ech and w2 in ech:
                                counter += 1
                            else:
                                continue
                matrix[col][row] = str(counter)
    return matrix

def main():

    output_path = r'随便起名+1.csv'
    # data = reader.readxls_col(keyword_path)[0]
    #原始数据
    data=dbdata()
    # dbkey()
    # dbdata()
    #属性列表
    attr_list=dbattr()[1]
    # set_key_list = get_set_key(data)
    formated_data = format_data(data)
    matrix = build_matirx_attr(attr_list)
    matrix = init_matrix_attr(attr_list, matrix)
    result_matrix = count_matrix_attr(matrix, formated_data)

    np.savetxt(output_path, result_matrix, fmt=('%s,'*len(matrix))[:-1],encoding='utf-8')

结果如下👇(看起来好了蛮多)
在这里插入图片描述

------------------------------2020-02-11 By EchoZhang---------------

  • 11
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Gephi是一个开源的网络分析和可视化软件,可以用来研究和展示各种类型的网络数据。在Gephi中,关键词共现矩阵是一种用于分析关键词之间共同出现的模式和关系的方法。 关键词共现矩阵是一个由行和列组成的矩阵,其中每个行和列代表一个关键词矩阵中的每个单元格包含了两个关键词之间的共现次数或者共现频率。通过分析这个矩阵,我们可以了解到哪些关键词经常一起出现,以及它们之间的关系密切程度。 使用Gephi进行关键词共现矩阵分析的步骤大致如下: 首先,我们需要准备一个数据集。数据集可以是一份文本文件,其中包含一系列的文档或文章。在每篇文章中,我们可以提取出关键词或者短语来作为分析的对象。 接下来,我们需要使用一个自然语言处理(NLP)工具来对文本进行处理,去除一些无用的单词,例如停用词、标点符号等。然后,我们可以使用合适的算法,如TF-IDF(词频-逆文档频率)算法来计算每个关键词的重要性。 然后,我们将建立一个关键词共现矩阵。在矩阵中,每个行和列代表一个关键词,而矩阵中的每个单元格则表示两个关键词之间的共现次数或者共现频率。 最后,我们可以使用Gephi软件进行可视化和分析。通过将关键词共现矩阵加载到Gephi中,我们可以使用各种布局算法和图形显示方式来展示关键词之间的关系。我们可以根据共现次数或者共现频率来调整节点和边的大小和颜色,以显示出关键词之间的不同关系。 总而言之,Gephi关键词共现矩阵分析是一种通过网络分析和可视化软件来研究和展示关键词之间共同出现模式和关系的方法。通过分析关键词之间的共现矩阵,我们可以更深入地了解关键词之间的关系,从而帮助我们进行更准确的文本分析和信息提取。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值