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
135KB
1.5K SLoC
rnltk
本软件包旨在为自然语言处理创建一个通用工具包,这是 Rust 生态系统中的当前缺陷。
项目可在 crates.io 上找到。
示例
查看示例文件夹,了解如何创建情感词典并获取一个术语的唤醒水平。
情感
情感分析最初由 Christopher Healey 博士 设计,然后移植到 Rust 以满足本项目需求。
标记
目前支持基本标记化(字符串到句子、字符串到标记、词频),但计划扩展以包括停用词删除。
词干提取
词干提取目前使用来自 rust-stem 的修改代码,但可能在与 rust-stemmers 软件包进一步研究后切换。
有关词干提取算法的更多信息,请参阅 此处。
TF-IDF
词频-逆文档频率 (TF-IDF) 是一种用于查找文档相似性的算法。创建 TF-IDF 矩阵分为两个步骤
- 为文档中的每个术语,$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})$。
- 然后将加权矩阵标准化,以消除文档长度的影响。
然后可以使用加权、归一化的矩阵来查找文档之间的余弦相似度。通常,计算两个文档向量的余弦相似度看起来像 $\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