推荐书: Python开发最佳实践

抽样系统备注文本信息自动化分类器

分享时@该用户已经被封, 我就能回答你的问题奥!

第一步: 构建潜在语义空间

  • 分词:将备注信息切分成词
  • 清理:将标点符号清理掉
  • 构建词在备注信息中的词频矩阵, 如:

\[ \begin{array}{c | ccc} \text{matrix} & \text{备注1} & \text{备注2} & \text{备注n...} \\ \hline \text{残疾} & 0 & 1 & \cdots \\ \text{父母} & 1 & 1 & \cdots \\ \text{建议} & 0 & 2 & \cdots \\ \vdots & \vdots & \vdots & \vdots \\ \end{array} \]

  • 进行加权,用tf-idf方法

  • 根据如下公式对矩阵进行svd分解

\[ \{X\}=\{W\}\{S\}\{P\} \]

如果你使用python,你可以使用numpy.linalg.SVD函数来做这个分解。

  • 筛选对角矩阵S中最大的n个特征值,然后选出WP中与特征值对应的特征向量,组合起来形成相应的\(W'\)\(P'\)

  • 最后根据公式反向计算词文矩阵X',得到潜在语义空间:

\[ \{W'\}\{S'\}\{P'\}=\{X'\} \]

得到的X’矩阵中,每一行都是一个词向量。

  • 求备注向量

在原始的词频矩阵X中,每一列代表一个备注中,词的词频,我们把它叫做备注的词频向量——\(V_i\),其中下标i表示第i
个备注。由于在上一步中我们求得了每个词的语义向量。所以备注的词频向量就可以转换成词所在的语义空间向量\(V'_i\)。让向量\(w_j\)表示X’中j词的语义向量。假如矩阵中有n个词。

\[ M = X'.T * V_i = \left[ \begin{array} \vdots\\ w_j \\ \vdots \end{array} \right] * V_i = \left[ \begin{array} \vdots\\ w'_j \\ \vdots \end{array} \right] \]
\[ V'_i = \sum_{j=0}^n w'_j \]

第二步:使用机器学习算法预测备注是否能参加测试

  • \( V'_i \) 就是备注文档的语义向量,这样我们就得到了备注文档的语义。以此为输入,以该备注的被试是否能够参加测试为输出,使用适当的机器学习方法即可预测一个备注是否能够参加测试。