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

2021-07-09 15:28:05 浏览数 (1)

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

作者-S0u1

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

首先我们会用到jieba、gensim
jieba 是目前最好的 Python 中文分词组件,它主要有以下 3 种特性
  • 支持 3 种分词模式:精确模式、全模式、搜索引擎模式
  • 支持繁体分词
  • 支持自定义词典
代码语言:javascript复制
import jieba  # 导入之前需要先安装 pip install jieba
Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。

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

代码语言:javascript复制
from gensim import corpora,models,similarities # 导入之前需要先安装 pip install gensim

基本概念

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

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

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

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

代码语言:javascript复制
data = '活在字节海洋里面的一群渔民:我们的方向是那云计算、系统集成、网工、运维、大数据还有那黑暗无比的网络'
res1 = jieba.cut(data)
for item in res1:
    print(item)

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

将对应得text转化二位的list数据,以方便gensim生成向量 import pprint text = train_data['text'] sentences = [] for item in text: sentence = str(item).split(',') sentences.append(sentence)将分词之后的数据转化为字典文件 from gensim import corpora dictionary = corpora.Dictionary(sentences) print(dictionary)

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

为了字典后续的应用可以将字典存储成文本文件 dictionary.save('mydic.dict')同时也可以将生成的词袋模型保存起来 corpus = [dictionary.doc2bow(sentence) for sentence in sentences] corpora.MmCorpus.serialize('bow.mm', corpus)

0 人点赞