在Jupyter Notebook中将分词结果转换成数组或矩阵

2021-11-26 11:49| 发布者: Fuller| 查看: 7170| 评论: 0

摘要: 1,本Notebook背景介绍如果将集搜客分词和情感分析软件生成的结果文件交给sklearn都机器学习库做进一步计算,那么通常需要转换成numpy数组,也可能需要转换成numpy矩阵。而从numpy数组到numpy矩阵,只需要调用numpy ...

1,本Notebook背景介绍

如果将集搜客分词和情感分析软件生成的结果文件交给sklearn都机器学习库做进一步计算,那么通常需要转换成numpy数组,也可能需要转换成numpy矩阵。而从numpy数组到numpy矩阵,只需要调用numpy一个函数就行了。那么,关键是从分词工具生成的excel文件到numpy数组的转换。这个转换用Pandas桥接一下,都是很简单的过程。总之,路线是:excel转换成Pandas dataframe,然后在转换成numpy数组。

下面以选词结果表为例,展示转换成数组和矩阵需要用到的函数。这是一种最简单的情形,转换过程中没有任何对excel单元格进行处理的过程。

如果处理其他的表和其他目的,可能会难度大一些,比如处理分词效果表:分词效果表中的每一行文字做了切词,词与词之间用空格间隔。如果想在矩阵中,每个词作为一列,每一行填0或者1,表示是否在这一行句子中出现了这个词,那么就需要用python程序先把对应每个词建立每一列。这个过程将在后续的notebook中讲解。

本notebook的python代码主要执行了下面的步骤:

1. 加载选词结果表

2. 将结果转换成数组

3. 将结果转换成矩阵

2,引入需要用到的库

import os

import time

import numpy as np

import pandas as pd

3,输出和常量配置

pd.set_option('display.width', 1000)  # 设置字符显示宽度

pd.set_option('display.max_rows', None)  # 设置显示最大

# np.set_printoptions(threshold=np.inf) # threshold 指定超过多少使用省略号,np.inf代表无限大

# 存原始数据的目录

raw_data_dir = os.path.join(os.getcwd(), '..\\..\\data\\raw')

# 存处理后的数据的目录

processed_data_dir = os.path.join(os.getcwd(), '..\\..\\data\\processed')

filename_temp = pd.Series(['词频','分词效果','选词矩阵','选词匹配','选词结果','共词矩阵'])

file_word_freq = ''

file_seg_effect = ''

file_word_choice_matrix = ''

file_word_choice_match = ''

file_word_choice_result = ''

file_co_word_matrix = ''

4,检测data\raw目录下是否有选词结果表

在我们发布的一系列Jupyter Notebook中,凡是处理GooSeeker分词软件导出的结果文件的,都给各种导出文件起了固定的名字。为了方便大家使用,只要把导出文件放在data/raw文件夹,notebook就会找到导出文件,赋值给对应的文件名变量。下面罗列了可能用到的文件名变量:

file_word_freq:词频表

file_seg_effect: 分词效果表

file_word_choice_matrix: 选词矩阵表

file_word_choice_match: 选词匹配表

file_word_choice_result: 选词结果表

file_co_word_matrix: 共词矩阵表

【注意】本notebook只使用选词结果表,下面的代码将检查data/raw中有没有选词结果表,如果没有会报错,后面的程序就没法执行了。

# 0:'词频', 1:'分词效果', 2:'选词矩阵', 3:'选词匹配', 4:'选词结果', 5:'共词矩阵'

print(raw_data_dir + '\r\n')

for item_filename in os.listdir(raw_data_dir):

    if filename_temp[4] in item_filename:

        file_word_choice_result = item_filename

        continue

if file_word_choice_result:

    print("选词结果excel表:", "data\\raw\\", file_word_choice_result)

else:

    print("选词结果excel表:不存在")

输出结果显示:

C:\Users\work\workspace_219\notebook\Jupyter Notebook将分词结果转换成数组或矩阵\notebook\eda\..\..\data\raw

选词结果excel表: data\raw\ 选词结果_202109291141532740.xlsx


5,读取选词结果表

df_word_choice_result = pd.read_excel(os.path.join(raw_data_dir, file_word_choice_result))


6,查看excel表前10行数据

df_word_choice_result.head(10)


输出结果显示:

标签词 词频 词性

0 下岗 2805 动词

1 没有 1712 动词

2 企业 1320 名词

3 时候 1233 名词

4 工人 1094 名词

5 国家 1092 名词

6 工作 985 动词

7 问题 710 名词

8 知道 670 动词

9 可以 660 动词


7,将结果转换成数组

7.1,df.values

array_word_choice_result = df_word_choice_result.values

display(array_word_choice_result)

输出结果显示:

array([['下岗', 2805, '动词'],

       ['没有', 1712, '动词'],

       ['企业', 1320, '名词'],

       ...,

       ['重工业', 41, '名词'],

       ['民企', 30, '其他'],

       ['民营企业', 27, '名词']], dtype=object)


7.2,np.array(df)

np_array_word_choice_result = np.array(df_word_choice_result)

np_array_word_choice_result

输出结果显示:

array([['下岗', 2805, '动词'],

       ['没有', 1712, '动词'],

       ['企业', 1320, '名词'],

       ...,

       ['重工业', 41, '名词'],

       ['民企', 30, '其他'],

       ['民营企业', 27, '名词']], dtype=object)


8,将结果转换为矩阵

8.1,numpy matrix()和numpy mat/asmatrix

区别:如果输入已经是矩阵或ndarray,则asmatrix不会复制。等效于matrix(data, copy=False)。详细参看:numpy.asmatrix — NumPy v1.21 Manual

np_matrix_word_choice_result = np.matrix(df_word_choice_result)

np_matrix_word_choice_result

输出结果显示:

matrix([['下岗', 2805, '动词'],

        ['没有', 1712, '动词'],

        ['企业', 1320, '名词'],

        ...,

        ['重工业', 41, '名词'],

        ['民企', 30, '其他'],

        ['民营企业', 27, '名词']], dtype=object)


np_matrix_word_choice_result = np.mat(df_word_choice_result)

np_matrix_word_choice_result

输出结果显示:

matrix([['下岗', 2805, '动词'],

        ['没有', 1712, '动词'],

        ['企业', 1320, '名词'],

        ...,

        ['重工业', 41, '名词'],

        ['民企', 30, '其他'],

        ['民营企业', 27, '名词']], dtype=object)

9,下载本Notebook

使用Jupyter Notebook将分词结果转换成数组或矩阵
3

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (3 人)

最新评论

GMT+8, 2024-11-22 01:50