Gensim - 文档与语料库



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

Gensim 的核心概念

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

  • 文档 - 它指的是一些文本。

  • 语料库 - 它指的是文档的集合。

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

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

什么是文档?

如上所述,它指的是一些文本。如果我们详细介绍一下,它是一个文本序列类型对象,在 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 中,文档对象的集合称为语料库。语料库的复数是corpora

语料库在 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(bool, 可选)

此参数用于删除标记中的重音符号。它使用deaccent() 来执行此操作。

min_len(int, 可选)

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

max_len(int, 可选)

借助此参数,我们可以设置标记的最大长度。大于定义长度的标记将被丢弃。

此函数的输出将是从输入文档中提取的标记。

广告