NLP机器学习-自然语言处理NL的学习笔记
NLP机器学习-自然语言处理NL的学习笔记
目前网上了解到python中可以实现NL学习的两个较为强大的组件分别为scikit-learn和tensorflow,因为scikit-learn评论最为简单,故以此为学习入口。
scikit-learn的中文资料较为缺乏,而学习NL的基础还要关注很多算法,代码中很多函数和概念软件本身没有涉及,只是需要找相关概念的算法或定义去学习,所以对学习带来了不小难度,学习资料过于分散,所以记录下来,以备查询。
1、算法
2.1、算法分类
2.1.1、线性算法
线性算法较为简单,提取特征,提取相关的类,计算特征的独立性,重复度,将概率最大的分类推荐出来。如:朴素贝叶斯、K-Mean,
2.1.2、非线性算法
非线性就是面向一个增长的知识库进行匹配,从而找到更符合逻辑的结果。比如神经网络,策略树算法等。难点是完整的知识库的成立困难。
2、专业术语
以下三个概念比较重要,是评估算法正确失败的重要概念词,通过举例查找数据中,男人个数,例:
正确值:男60人,女40人,通过算法要找男人数,预测结果为:测男=50(40男人TP,10女人FP),测女=50(30女人TN,20男人FN)。
|----------------------------------------
| TP 40 | TN 30 |
|----------------------------------------
| FP 10 | FN 20 |
-----------------------------------------
2.1、真正值(TP)
预测结果中正确的数量。
2.2、假正值(FP)
预测结果中错误的数量。
2.3、真负值(TN)
非查询范围中,对的数量。
2.4、假负值(FN)
非查询范围中,该查询到的数量。也就是没查到的男人数量。
2.5、精准率(Precision)
公式:TP/(TP+FP),分析结果中,其中百分之多少是对的,公式解释:找到的中对的男人数/找到的男人总数(这个数里面有误将女的算进来的)。
2.6、召回率(Recall)
公式:TP/(TP+FN),词的匹配率,公式解释:找到的男人数/总男人数。
2.7、正确率(Accuracy)
公式: (TP+TN)/(TP+FN+FP+TN),匹配正确总概率,公式解释:匹配对的男人女人总数/人总数。
3、分类算法
贝叶斯算法是分类算法统称,朴素贝叶斯算法在scikit-learn中sklearn.naive_bayes.MultinomialNB类实现,获取特征出现次数最多的,将其分类输出。其实现原理是将key加载到内存,然后进行匹配,返回。
>>> import numpy as np
>>> X = np.random.randint(5, size=(6, 100))
>>> y = np.array([1, 2, 3, 4, 5, 6])
>>> from sklearn.naive_bayes import MultinomialNB
>>> clf = MultinomialNB()
>>> clf.fit(X, y)
MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)
>>> print(clf.predict(X[2:3]))
[3]
这段中,先生成两个数组分员为X和y,X是所有的特征,是一个2维数组,y中表明x数组中,每一个数组的目标id,然后通过fit或partial_fit函数培训给MutinomialNB,然后通过predict进行预测结果。

浙公网安备 33010602011771号