文本分析之gensim处理文本【语料库与词向量空间】

字节脉搏实验室

共 3260字,需浏览 7分钟

 ·

2021-06-01 14:01

文章源自【字节脉搏社区】-字节脉搏实验室

作者-S0u1

扫描下方二维码进入社区

文本分析是指对文本的表示及其特征项的选取;文本分析是文本挖掘、信息检索的一个基本问题,它把从文本中抽取出的特征词进行量化来表示文本信息。文本(text),与 讯息(message)的意义大致相同,指的是由一定的符号或符码组成的信息结构体,这种结构体可采用不同的表现形态,如语言的、文字的、影像的等等。文本是由特定的人制作的,文本的语义不可避免地会反映人的特定立场、观点、价值和利益。因此,由文本内容分析,可以推断文本提供者的意图和目的。

首先我们会用到jieba、gensim


jieba 是目前最好的 Python 中文分词组件,它主要有以下 3 种特性

  • 支持 3 种分词模式:精确模式、全模式、搜索引擎模式

  • 支持繁体分词

  • 支持自定义词典

1

import jieba  # 导入之前需要先安装 pip install jieba


Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。

支持流式训练,并提供了诸如相似度计算,信息检索等一些常用任务的API接口

1

from gensim import corpora,models,similarities # 导入之前需要先安装 pip install gensim


基本概念

语料:一组原始文本的集合,用于无监督地训练文本主题的隐层结构。语料中不需要人工标注的附加信息。在Gensim中,Corpus通常是一个可迭代的对象(比如列表)。每一次迭代返回一个可用于表达文本对象的稀疏向量。

向量:由一组文本特征构成的列表。是一段文本在Gensim中的内部表达。

稀疏向量:通常,我们可以略去向量中多余的0元素。此时,向量中的每一个元素是一个(key, value)的元组

模型:是一个抽象的术语。定义了两个向量空间的变换(即从文本的一种向量表达变换为另一种向量表达)。




1

2

3

4

data = '活在字节海洋里面的一群渔民:我们的方向是那云计算、系统集成、网工、运维、大数据还有那黑暗无比的网络'

res1 = jieba.cut(data)

for item in res1:

    print(item)



主要使用统计学的词向量转化。在进行中文的处理时需要提前进行分词,有时候还需要设置自己的专属名词以保证分词的准确性。这个不是重点,假如我们已经有了一个处理好的中文分词的文档语料。在此基础上进行后续操作。

将对应得text转化二位的list数据,以方便gensim生成向量

1

2

3

4

5

6

import pprint

text = train_data['text']

sentences = []

for item in text:

    sentence = str(item).split(',')

    sentences.append(sentence)

将分词之后的数据转化为字典文件

1

2

3

from gensim import corpora

dictionary = corpora.Dictionary(sentences)

print(dictionary)

这个字典有着非常重要的作用,每一个词都有一个固定的id,可以使用下面的代码进行查询

1

print(dictionary.token2id)

为了字典后续的应用可以将字典存储成文本文件

1

dictionary.save('mydic.dict')

同时也可以将生成的词袋模型保存起来

1

2

corpus = [dictionary.doc2bow(sentence) for sentence in sentences]

corpora.MmCorpus.serialize('bow.mm', corpus)



通知!

公众号招募文章投稿小伙伴啦!只要你有技术有想法要分享给更多的朋友,就可以参与到我们的投稿计划当中哦~感兴趣的朋友公众号首页菜单栏点击【商务合作-我要投稿】即可。期待大家的参与~

记得扫码

关注我们

浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报