📜  Gensim-文档和语料库

📅  最后修改于: 2020-10-16 02:21:44             🧑  作者: Mango


在这里,我们将学习Gensim的核心概念,主要关注文档和语料库。

Gensim的核心概念

以下是理解和使用Gensim所需的核心概念和术语-

  • 文档-ZIt指一些文本。

  • 语料库-指文件的集合。

  • 向量-文档的数学表示形式称为向量。

  • 模型-它是指用于将向量从一种表示转换为另一种表示的算法。

什么是文件?

如所讨论的,它指的是一些文本。如果我们详细介绍一下,它是文本序列类型的对象,在Python 3中称为“ str” 。例如,在Gensim中,文档可以是诸如-

  • 140个字符的简短推文
  • 单个段落,即文章或研究论文摘要
  • 新闻文章
  • 小说
  • 论文

文字顺序

文本序列类型在Python 3中通常称为“ str” 。众所周知,在Python,文本数据是通过字符串或更具体地说是“ str”对象处理的。字符串基本上是Unicode代码点的不可变序列,可以通过以下方式编写-

  • 单引号-例如, “嗨!你好吗?’ 。它也允许我们嵌入双引号。例如, “嗨! “你好吗?’

  • 双引号-例如, “嗨!你好吗?” 。它也允许我们嵌入单引号。例如, “嗨!’你好吗?”

  • 三重引号-可以使用三个单引号,例如”’嗨!你好吗?”’或三个双引号,例如“”“”嗨!’你好吗?“”“

所有的空格都将包含在字符串字面量。

以下是Gensim中的文档示例-

Document = “Tutorialspoint.com is the biggest online tutorials library and it’s all free also”

什么是语料库?

语料库可以定义为在自然的交流环境中产生的大型结构化的机器可读文本集。在Gensim中,文档对象的集合称为语料库。语料库的复数是语料库

语料库在Gensim中的作用

Gensim中的语料库扮演以下两个角色-

用作模型训练的输入

语料库在Gensim中扮演的最重要的角色是培训模型。为了初始化模型的内部参数,在训练过程中,模型会从训练语料中寻找一些常见的主题和主题。如上所述,Gensim专注于无监督模型,因此不需要任何人工干预。

用作主题提取器

训练模型后,就可以将其用于从新文档中提取主题。在这里,新文档是培训阶段未使用的文档。

语料库可以包括特定人员的所有推文,报纸上所有文章的列表或有关特定主题的所有研究论文等。

收集语料库

以下是包含5个文档的小型语料库的示例。在这里,每个文档都是一个由单个句子组成的字符串。

t_corpus = [
   "A survey of user opinion of computer system response time",
   "Relation of user perceived response time to error measurement",
   "The generation of random binary unordered trees",
   "The intersection graph of paths in trees",
   "Graph minors IV Widths of trees and well quasi ordering",
]

预处理收集语料库

一旦我们收集了语料库,应采取一些预处理步骤以使语料库保持简单。我们可以简单地删除一些常用的英语单词,例如“ the”。我们还可以删除仅在语料库中出现一次的单词。

例如,以下Python脚本用于小写每个文档,将其按空格分隔并过滤掉停用词-

import pprint
t_corpus = [
   "A survey of user opinion of computer system response time", 
   "Relation of user perceived response time to error measurement", 
   "The generation of random binary unordered trees", 
   "The intersection graph of paths in trees", 
   "Graph minors IV Widths of trees and well quasi ordering",
]
stoplist = set('for a of the and to in'.split(' '))
processed_corpus = [[word for word in document.lower().split() if word not in stoplist]
   for document in t_corpus]
    
pprint.pprint(processed_corpus)
]

输出

[['survey', 'user', 'opinion', 'computer', 'system', 'response', 'time'],
['relation', 'user', 'perceived', 'response', 'time', 'error', 'measurement'],
['generation', 'random', 'binary', 'unordered', 'trees'],
['intersection', 'graph', 'paths', 'trees'],
['graph', 'minors', 'iv', 'widths', 'trees', 'well', 'quasi', 'ordering']]

有效的预处理

Gensim还提供了语料库的更有效的预处理函数。在这种预处理中,我们可以将文档转换为小写标记的列表。我们也可以忽略太短或太长的令牌。这样的函数是gensim.utils.simple_preprocess(doc,deacc = False,min_len = 2,max_len = 15)

gensim.utils.simple_preprocess()功能

Gensim提供此函数,可将文档转换为小写标记列表,也可忽略太短或太长的标记。它具有以下参数-

doc(str)

它是指应在其上应用预处理的输入文档。

deacc(布尔型,可选)

此参数用于从标记中删除重音符号。它使用deaccent()来做到这一点。

min_len(int,可选)

借助此参数,我们可以设置令牌的最小长度。短于定义长度的令牌将被丢弃。

max_len(int,可选)

借助此参数,我们可以设置令牌的最大长度。超过定义长度的令牌将被丢弃。

该函数的输出将是从输入文档中提取的令牌。