9 个不稳定版本 (3 个破坏性更新)

0.4.0 2023 年 4 月 21 日
0.3.0 2022 年 12 月 27 日
0.2.0 2022 年 11 月 12 日
0.1.5 2022 年 11 月 2 日
0.1.4 2022 年 10 月 30 日

#1426 in 文本处理

每月下载量 29

MIT 许可证

135KB
1.5K SLoC

rnltk

本软件包旨在为自然语言处理创建一个通用工具包,这是 Rust 生态系统中的当前缺陷。

项目可在 crates.io 上找到。

示例

查看示例文件夹,了解如何创建情感词典并获取一个术语的唤醒水平。

情感

情感分析最初由 Christopher Healey 博士 设计,然后移植到 Rust 以满足本项目需求。

标记

目前支持基本标记化(字符串到句子、字符串到标记、词频),但计划扩展以包括停用词删除。

词干提取

词干提取目前使用来自 rust-stem 的修改代码,但可能在与 rust-stemmers 软件包进一步研究后切换。

有关词干提取算法的更多信息,请参阅 此处

TF-IDF

词频-逆文档频率 (TF-IDF) 是一种用于查找文档相似性的算法。创建 TF-IDF 矩阵分为两个步骤

  1. 为文档中的每个术语,$t_i$,应用权重 $w_{i,j}$。$w_{i,j}$ 定义为 $tf_{i,j} \times idf_i$,其中 $tf_{i,j}$ 是 $t_i$ 在 $D_j$ 中的出现次数,$idf_i$ 是至少包含一个 $t_i$ 出现的文档 $n_i$ 的逆分数的日志,$idf_i = ln(\frac{n}{n_i})$。
  2. 然后将加权矩阵标准化,以消除文档长度的影响。

然后可以使用加权、归一化的矩阵来查找文档之间的余弦相似度。通常,计算两个文档向量的余弦相似度看起来像 $\cos(\theta) = \frac{D_i \cdot D_j}{|D_i| |D_j|}$。由于矩阵已经归一化,这简化为 $\cos(\theta) = D_i \cdot D_j$。

结果 $MxM$ 矩阵,其中 $M$ 是 TF-IDF 矩阵的列数,对角线上的值为 1,因为文档与其自身的相似度为 1。行和列的交集 $M_{i,j}$ 是 $D_i$ 和 $D_j$ 之间的余弦相似度值。

LSA

潜在语义分析(LSA)基于概念的思想来寻找文档相似度。LSA 从 $m \times n$ 的 TF-IDF 矩阵开始,使用奇异值分解(SVD)来降低矩阵的维度。选择 $k$ 个最大的奇异值来生成一个降低的 ${V_k}^T$ 矩阵,其中 $1 \le k \le n$。在 ${V_k}^T$ 矩阵中的每个文档列都进行归一化,然后我们计算它们的点积。为了将结果点积从范围 [-1...-1] 转换到 [0...1],我们将点积加 1,然后除以 2($\frac{1 + \cos(\theta)}{2}$)。

结果 $MxM$ 矩阵,其中 $M$ 是 TF-IDF 矩阵的列数,对角线上的值为 1,因为文档与其自身的相似度为 1。行和列的交集 $M_{i,j}$ 是 $D_i$ 和 $D_j$ 之间的余弦相似度值。

路线图

  • 文章摘要(基于词频)
  • 主题聚类
  • 情感否定

依赖关系

~8.5MB
~154K SLoC