写点什么

文本分析基本流程

用户头像
Qien Z.
关注
发布于: 2021 年 05 月 31 日
文本分析基本流程

文本分析流程

清洗分词的顺序,可以按需要来进行

清洗主要包括过滤、停用词、特殊符号、拼写纠错、大小写转换、标点符号转换等等

分词可以使用 jieba,SnowNLP 等等来进行

标准化包括 Stemming、Lemmazation

特征提取主要有 tf-idf、Word2vec

建模包括相似度算法、分类算法等等


分词

分词比较简单,但却非常重要,可以说分词对整个分析结果起着成败的作用,可以说,越是基础的东西,对 NLP 的结果越是重要。


常用的中文分词工具

  • Jieba 分词 优点:轻量级、简单、快速、源码开放

  • SnowNLP

  • LTP

  • HanNLP


匹配算法

前向最大匹配 forward-max matching

窗口数 h=4,意思就是取前 4 个字在词库中寻找匹配,h 越大,循环的次数越多,时间也需要越长。

后向最大匹配 backward-max matching

与前向最大匹配 forward-max matching 相反,从后面的字开始检索

前向最大匹配与后向最大匹配的结论有可能是不一样的

除了这两种,还有将两种相结合的双向匹配算法


匹配算法的缺点

匹配算法没有很好地考虑语义,也就是含义,不考虑单词与单词之间的含义

整个过程是贪心策略,效率较高,但它不能得到最好的分词结果,从全局上考虑并不是最好的,它只能得到局部的最好选项。

这种情况,可以通过引入语言模型 Language model,如 Unigram 语言模型来计算语义的概率,从而选择最优的那种。


维特比算法 Viterb

维特比算法可以用于解决效率的问题,它是一个动态规划的算法,通过把概率转向导数,求最小值。


过滤无用的词

如果是对语义理解帮助不大,或者是会影响到语义理解的词,都可以过滤掉。这样可以减少词库的大小,提高效率。

根据场景的需要,一般会对停用词,或者出现频率很低的词去掉。不同场景下,对这类词的定义也是不一样的,所以一定要清楚这些单词在场景中是否具有意义。

停用词:例如,在英文中,“the”、“a”、“an”这些单词,如果被当作没有什么意义的,经常会被当作停用词来处理。

低频词:对分析作用不大,也可以去掉。


词的标准化

样子看起来不一样,但是语义是一样的单词。如:do、done、did。这种情况可以把它们合并起来。

在这里介绍 StemmingLemmazation 两种方法。Stemming 把单词合并的时候,do、done、did 会被统一为 do。但它未必会把单词都合并成能被我们认知的单词,也就是说,不一定会在它的词库当中。例如 fly、flies。它们会被合并为 fli, 而非该单词的原型,但这并不影响计算机对它的识别,因为计算机识别的是该向量。而 Lemmazation 相较而言,更加严格,合并后的单词是必然包含在词库当中的。


Porter Stemmer

Porter Stemmer Stemming 中很经典的一种算法。它有自己的一套很强的编写规则,例如,凡是 ational 的后缀,都会被改写成 ate。 例如,international,就变成了 internate。这种规则是经过了语言学家通过经验而得出来的。


拼写纠错

拼写纠错 spell correction

从输入的【错误单词】与正确的单词进行比较,找相似的单词,且该单词是存在于词库的。


编辑距离

编辑距离 edit distance 是一个计算字符串相似度的动态规划算法。例如将错误的单词【mime】进行纠正。那么【mime】有可能是【mine】或者【mite】或者【time】等等。那么,从错误的单词,到一个拼写正确的单词之间,计算它们不同之处的距离,例如,m 到 t 之间,只需要 replace *1 次的距离,当然,还可以进行 add,insert,delete,replace 等等的计算来得出最佳结果。


发布于: 2021 年 05 月 31 日阅读数: 14
用户头像

Qien Z.

关注

Everything is all 2020.04.10 加入

接受反驳&不接受被定义

评论

发布
暂无评论
文本分析基本流程