Python FlashText 模块

2024 年 8 月 29 日 | 阅读 3 分钟

在本教程中,我们将学习 FlashText 模块以及如何使用 FlashText 在文本序列中替换单词。这提供了替换文本文档中大量单词的高效方法。

FlashText 算法的工作原理

FlashText 算法建立在专有算法 FlashText 算法之上。本质上,它基于 Aho-Corasick 算法的 Python 实现。

该算法的优点是减少了在文本中搜索大量关键字所花费的时间。FlashText 算法将所有关键字与相应的替换词存储在一个字典中。因此,它省略了对字典中每个关键字的扫描文本,它只扫描文本一次。如果单词在扫描的字典键中匹配,则替换为键的值。

如何安装 FlashText

我们可以使用如下的 pip 命令进行安装。

使用 FlashText

让我们来介绍一下 FlashText 模块的类。

KeywordProcessor 类

KeywordProcessor 类是负责关键字处理的主要类。让我们直接从 FlashText 导入它并进行初始化。

最后一行创建了 KeywordProcessor 对象,该对象将在不区分大小写模式下工作。

但是,我们可以在区分大小写模式下创建 KeywordProcessor 实例。

定义关键字字典

在此模块中,我们使用关键字来定义需要替换的单词。KeywordProcessor 对象包含一个包含所有已定义关键字的字典。

有两种向字典添加关键字的方法:批量添加或逐个添加。

首先,让我们看看如何逐个添加关键字 -

  • replacementWord 是一个可选参数。如果未指定,关键字将被添加到字典中,并且无法用另一个替换词替换它。因此,如果您想替换该单词,我们建议您传递 <replacementWord> 参数。

如果我们有很多关键字,逐个添加可能会花费很长时间。或者,我们可以创建一个小的关键字列表来批量添加关键字。

示例 -

字典中的每个键都是一个字符串关键字。每个值都必须是一个列表。或者,您可以提供关键字列表。

此方法允许仅添加没有替换词的关键字。或者,我们可以像下面这样在文本文件中指定键值对。

我们可以使用 keywords_from_file() 函数导入文件 -

这是一种流行的方法,因为它具有最大的灵活性和出色的可读性。考虑到它最终都将成为一个字典,这也是与算法最自然的匹配。

让我们看一个实际的例子 - 假设我们有一个文本文件,并且我们想尽量减少同义词的使用以标准化所使用的词汇。在此示例中,我们将所有出现的单词 "grim"、"nasty"、"unpleasent" 替换为单词 bad(替换词),并将所有出现的单词例如 excellent、quality、fine 替换为单词 good。

我们需要为 keyword_dictionary 创建一个关键字和 replacement_words 的字典。

示例 -

然后,将此 keyword_dictionary 添加到 keyword_processor 对象。

用替换词替换关键字

一旦我们将关键字及其相应的替换词分配到 KeywordProcessor 实例中,我们就可以使用 replace_keywords() 函数,该函数会扫描提供的文本并执行替换。

提供的文本会被解析,其中所有关键字都会被替换为其匹配的值,并返回新字符串。而不是处理字符串字面量,我们将处理文档。我们将以读取模式打开文档并读取其中的行,然后将字符串传递给 replace_keyword() 函数。

示例 -

现在,我们在 new.txt 中添加一些文本。