精华内容
下载资源
问答
  • 当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征:特征是否发散:如果一个特征不发散,例如方差接近...根据特征选择的形式又可以将特征选择方...

    当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征:

    • 特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
    • 特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。除移除低方差法外,本文介绍的其他方法均从相关性考虑。

    根据特征选择的形式又可以将特征选择方法分为3种:

    • Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
    • Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
    • Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。

    特征选择主要有两个目的:

    • 减少特征数量、降维,使模型泛化能力更强,减少过拟合;
    • 增强对特征和特征值之间的理解。

      拿到数据集,一个特征选择方法,往往很难同时完成这两个目的。通常情况下,选择一种自己最熟悉或者最方便的特征选择方法(往往目的是降维,而忽略了对特征和数据理解的目的)。本文将结合 Scikit-learn提供的例子 介绍几种常用的特征选择方法,它们各自的优缺点和问题。

    Filter

    1. 移除低方差的特征 (Removing features with low variance)

      假设某特征的特征值只有0和1,并且在所有输入样本中,95%的实例的该特征取值都是1,那就可以认为这个特征作用不大。如果100%都是1,那这个特征就没意义了。当特征值都是离散型变量的时候这种方法才能用,如果是连续型变量,就需要将连续变量离散化之后才能用。而且实际当中,一般不太会有95%以上都取某个值的特征存在,所以这种方法虽然简单但是不太好用。可以把它作为特征选择的预处理,先去掉那些取值变化小的特征,然后再从接下来提到的的特征选择方法中选择合适的进行进一步的特征选择。

    >>> from sklearn.feature_selection import VarianceThreshold
    >>> X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]
    >>> sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
    >>> sel.fit_transform(X)
    array([[0, 1],
           [1, 0],
           [0, 0],
           [1, 1],
           [1, 0],
           [1, 1]])

    果然, VarianceThreshold 移除了第一列特征,第一列中特征值为0的概率达到了5/6.

    2. 单变量特征选择 (Univariate feature selection)

      单变量特征选择的原理是分别单独的计算每个变量的某个统计指标,根据该指标来判断哪些指标重要,剔除那些不重要的指标。

      对于分类问题(y离散),可采用:
        卡方检验f_classifmutual_info_classif互信息
      对于回归问题(y连续),可采用:
        皮尔森相关系数f_regressionmutual_info_regression最大信息系数

      这种方法比较简单,易于运行,易于理解,通常对于理解数据有较好的效果(但对特征优化、提高泛化能力来说不一定有效)。这种方法有许多改进的版本、变种。

      单变量特征选择基于单变量的统计测试来选择最佳特征。它可以看作预测模型的一项预处理。==Scikit-learn将特征选择程序用包含 transform 函数的对象来展现==:

    • SelectKBest 移除得分前 k 名以外的所有特征(取top k)
    • SelectPercentile 移除得分在用户指定百分比以后的特征(取top k%)
    • 对每个特征使用通用的单变量统计检验: 假正率(false positive rate) SelectFpr, 伪发现率(false discovery rate) SelectFdr, 或族系误差率 SelectFwe.
    • GenericUnivariateSelect 可以设置不同的策略来进行单变量特征选择。同时不同的选择策略也能够使用超参数寻优,从而让我们找到最佳的单变量特征选择策略。

      将特征输入到评分函数,返回一个单变量的f_score(F检验的值)或p-values(P值,假设检验中的一个标准,P-value用来和显著性水平作比较),注意SelectKBest 和 SelectPercentile只有得分,没有p-value。

    • For classification: chi2, f_classif, mutual_info_classif
    • For regression: f_regression, mutual_info_regression

    Notice:
      The methods based on F-test estimate the degree of linear dependency between two random variables. (F检验用于评估两个随机变量的线性相关性)On the other hand, mutual information methods can capture any kind of statistical dependency, but being nonparametric, they require more samples for accurate estimation.(另一方面,互信息的方法可以捕获任何类型的统计依赖关系,但是作为一个非参数方法,估计准确需要更多的样本)

    Feature selection with sparse data:
      If you use sparse data (i.e. data represented as sparse matrices), chi2, mutual_info_regression, mutual_info_classif will deal with the data without making it dense.(如果你使用稀疏数据(比如,使用稀疏矩阵表示的数据), 卡方检验(chi2)、互信息回归(mutual_info_regression)、互信息分类(mutual_info_classif)在处理数据时可保持其稀疏性.)

    Examples:
    Univariate Feature Selection
    Comparison of F-test and mutual information

    2.1 卡方(Chi2)检验

      经典的卡方检验是检验定性自变量对定性因变量的相关性。比如,我们可以对样本进行一次chi2chi2 测试来选择最佳的两项特征:

    >>> from sklearn.datasets import load_iris
    >>> from sklearn.feature_selection import SelectKBest
    >>> from sklearn.feature_selection import chi2
    >>> iris = load_iris()
    >>> X, y = iris.data, iris.target
    >>> X.shape
    (150, 4)
    >>> X_new = SelectKBest(chi2, k=2).fit_transform(X, y)
    >>> X_new.shape
    (150, 2)

    2.2 Pearson相关系数 (Pearson Correlation)

      皮尔森相关系数是一种最简单的,能帮助理解特征和响应变量之间关系的方法,该方法衡量的是变量之间的线性相关性,结果的取值区间为[-1,1],-1表示完全的负相关,+1表示完全的正相关,0表示没有线性相关。

      Pearson Correlation速度快、易于计算,经常在拿到数据(经过清洗和特征提取之后的)之后第一时间就执行。Scipy的 pearsonr 方法能够同时计算 相关系数 和p-value.

    import numpy as np
    from scipy.stats import pearsonr
    np.random.seed(0)
    size = 300
    x = np.random.normal(0, 1, size)
    # pearsonr(x, y)的输入为特征矩阵和目标向量
    print("Lower noise", pearsonr(x, x + np.random.normal(0, 1, size)))
    print("Higher noise", pearsonr(x, x + np.random.normal(0, 10, size)))
    >>>
    # 输出为二元组(sorce, p-value)的数组
    Lower noise (0.71824836862138386, 7.3240173129992273e-49)
    Higher noise (0.057964292079338148, 0.31700993885324746)

    这个例子中,我们比较了变量在加入噪音之前和之后的差异。当噪音比较小的时候,相关性很强,p-value很低。

      Scikit-learn提供的 f_regrssion 方法能够批量计算特征的f_score和p-value,非常方便,参考sklearn的 pipeline

      Pearson相关系数的一个明显缺陷是,作为特征排序机制,他只对线性关系敏感。如果关系是非线性的,即便两个变量具有一一对应的关系,Pearson相关性也可能会接近0。例如:

    x = np.random.uniform(-1, 1, 100000)
    print pearsonr(x, x**2)[0]
    -0.00230804707612

      更多类似的例子参考 sample plots 。另外,如果仅仅根据相关系数这个值来判断的话,有时候会具有很强的误导性,如 Anscombe’s quartet ,最好把数据可视化出来,以免得出错误的结论。

    2.3 互信息和最大信息系数 (Mutual information and maximal information coefficient (MIC)

      经典的互信息(互信息为随机变量X与Y之间的互信息I(X;Y)I(X;Y)为单个事件之间互信息的数学期望)也是评价定性自变量对定性因变量的相关性的,互信息计算公式如下:

    I(X;Y)=E[I(xi;yj)]=xiϵXyjϵYp(xi,yj)logp(xi,yj)p(xi)p(yj)I(X;Y)=E[I(xi;yj)]=∑xiϵX∑yjϵYp(xi,yj)logp(xi,yj)p(xi)p(yj)

      互信息直接用于特征选择其实不是太方便:1、它不属于度量方式,也没有办法归一化,在不同数据及上的结果无法做比较;2、对于连续变量的计算不是很方便(X和Y都是集合,x,y都是离散的取值),通常变量需要先离散化,而互信息的结果对离散化的方式很敏感。

      最大信息系数克服了这两个问题。它首先寻找一种最优的离散化方式,然后把互信息取值转换成一种度量方式,取值区间在[0,1]。 minepy 提供了MIC功能。

    反过头来看y=x2y=x2这个例子,MIC算出来的互信息值为1(最大的取值)。

    from minepy import MINE
    m = MINE()
    x = np.random.uniform(-1, 1, 10000)
    m.compute_score(x, x**2)
    print(m.mic())
    >>>1.0

      MIC的统计能力遭到了 一些质疑 ,当零假设不成立时,MIC的统计就会受到影响。在有的数据集上不存在这个问题,但有的数据集上就存在这个问题。

    2.4 距离相关系数 (Distance Correlation)

      距离相关系数是为了克服Pearson相关系数的弱点而生的。在xxx2x2这个例子中,即便Pearson相关系数是0,我们也不能断定这两个变量是独立的(有可能是非线性相关);但如果距离相关系数是0,那么我们就可以说这两个变量是独立的。

      R的 energy 包里提供了距离相关系数的实现,另外这是 Python gist 的实现。

    > x = runif (1000, -1, 1)
    > dcor(x, x**2)
    [1] 0.4943864

      尽管有 MIC 和 距离相关系数 在了,但当变量之间的关系接近线性相关的时候,Pearson相关系数仍然是不可替代的。
      第一,Pearson相关系数计算速度快,这在处理大规模数据的时候很重要。
      第二,Pearson相关系数的取值区间是[-1,1],而MIC和距离相关系数都是[0,1]。这个特点使得Pearson相关系数能够表征更丰富的关系,符号表示关系的正负,绝对值能够表示强度。当然,Pearson相关性有效的前提是两个变量的变化关系是单调的。

    2.5 基于模型的特征排序 (Model based ranking)

      这种方法的思路是直接使用你要用的机器学习算法,针对 每个单独的特征 和 响应变量建立预测模型。假如 特征 和 响应变量 之间的关系是非线性的,可以用基于树的方法(决策树、随机森林)、或者 扩展的线性模型 等。基于树的方法比较易于使用,因为他们对非线性关系的建模比较好,并且不需要太多的调试。但要注意过拟合问题,因此树的深度最好不要太大,再就是运用交叉验证

      在 波士顿房价数据集 上使用sklearn的 随机森林回归 给出一个_单变量选择_的例子(这里使用了交叉验证):

    from sklearn.cross_validation import cross_val_score, ShuffleSplit
    from sklearn.datasets import load_boston
    from sklearn.ensemble import RandomForestRegressor
    import numpy as np
    
    # Load boston housing dataset as an example
    boston = load_boston()
    X = boston["data"]
    Y = boston["target"]
    names = boston["feature_names"]
    
    rf = RandomForestRegressor(n_estimators=20, max_depth=4)
    scores = []
    # 单独采用每个特征进行建模,并进行交叉验证
    for i in range(X.shape[1]):
        score = cross_val_score(rf, X[:, i:i+1], Y, scoring="r2",  # 注意X[:, i]和X[:, i:i+1]的区别
                                cv=ShuffleSplit(len(X), 3, .3))
        scores.append((format(np.mean(score), '.3f'), names[i]))
    print(sorted(scores, reverse=True))

    [('0.620', 'LSTAT'), ('0.591', 'RM'), ('0.467', 'NOX'), ('0.342', 'INDUS'), ('0.305', 'TAX'), ('0.240', 'PTRATIO'), ('0.206', 'CRIM'), ('0.187', 'RAD'), ('0.184', 'ZN'), ('0.135', 'B'), ('0.082', 'DIS'), ('0.020', 'CHAS'), ('0.002', 'AGE')]

    Wrapper

    3. 递归特征消除 (Recursive Feature Elimination)

      递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,移除若干权值系数的特征,再基于新的特征集进行下一轮训练

      sklearn官方解释:对特征含有权重的预测模型(例如,线性模型对应参数coefficients),RFE通过递归减少考察的特征集规模来选择特征。首先,预测模型在原始特征上训练,每个特征指定一个权重。之后,那些拥有最小绝对值权重的特征被踢出特征集。如此往复递归,直至剩余的特征数量达到所需的特征数量。

      RFECV 通过交叉验证的方式执行RFE,以此来选择最佳数量的特征:对于一个数量为d的feature的集合,他的所有的子集的个数是2的d次方减1(包含空集)。指定一个外部的学习算法,比如SVM之类的。通过该算法计算所有子集的validation error。选择error最小的那个子集作为所挑选的特征。

    from sklearn.feature_selection import RFE
    from sklearn.linear_model import LogisticRegression
    
    #递归特征消除法,返回特征选择后的数据
    #参数estimator为基模型
    #参数n_features_to_select为选择的特征个数
    RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(iris.data, iris.target)

    示例:
    Recursive feature elimination: 一个递归特征消除的示例,展示了在数字分类任务中,像素之间的相关性。
    Recursive feature elimination with cross-validation: 一个递归特征消除示例,通过交叉验证的方式自动调整所选特征的数量。

    Embedded

    4. 使用SelectFromModel选择特征 (Feature selection using SelectFromModel)

      单变量特征选择方法独立的衡量每个特征与响应变量之间的关系,另一种主流的特征选择方法是基于机器学习模型的方法。有些机器学习方法本身就具有对特征进行打分的机制,或者很容易将其运用到特征选择任务中,例如回归模型,SVM,决策树,随机森林等等。其实Pearson相关系数等价于线性回归里的标准化回归系数。

      SelectFromModel 作为meta-transformer,能够用于拟合后任何拥有coef_feature_importances_ 属性的预测模型。 如果特征对应的coef_或 feature_importances_ 值低于设定的阈值threshold,那么这些特征将被移除。除了手动设置阈值,也可通过字符串参数调用内置的启发式算法(heuristics)来设置阈值,包括:平均值(“mean”), 中位数(“median”)以及他们与浮点数的乘积,如”0.1*mean”。

    Examples
    Feature selection using SelectFromModel and LassoCV: 在阈值未知的前提下,选择了Boston dataset中两项最重要的特征。

    4.1 基于L1的特征选择 (L1-based feature selection)

      使用L1范数作为惩罚项的线性模型(Linear models)会得到稀疏解:大部分特征对应的系数为0。当你希望减少特征的维度以用于其它分类器时,可以通过 feature_selection.SelectFromModel 来选择不为0的系数。特别指出,常用于此目的的稀疏预测模型有 linear_model.Lasso(回归), linear_model.LogisticRegression 和 svm.LinearSVC(分类):

    >>> from sklearn.svm import LinearSVC
    >>> from sklearn.datasets import load_iris
    >>> from sklearn.feature_selection import SelectFromModel
    >>> iris = load_iris()
    >>> X, y = iris.data, iris.target
    >>> X.shape
    (150, 4)
    >>> lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X, y)
    >>> model = SelectFromModel(lsvc, prefit=True)
    >>> X_new = model.transform(X)
    >>> X_new.shape
    (150, 3)

      使用feature_selection库的SelectFromModel类结合带L1以及L2惩罚项的逻辑回归模型:

    from sklearn.feature_selection import SelectFromModel
    #带L1和L2惩罚项的逻辑回归作为基模型的特征选择
    #参数threshold为权值系数之差的阈值
    SelectFromModel(LR(threshold=0.5, C=0.1)).fit_transform(iris.data, iris.target)

      对于SVM和逻辑回归,参数C控制稀疏性:C越小,被选中的特征越少。对于Lasso,参数alpha越大,被选中的特征越少。

    示例:
    Classification of text documents using sparse features: 不同算法使用基于L1的特征选择进行文档分类的对比。

    Note:

    L1恢复和压缩感知 (L1-recovery and compressive sensing)
      对于一个好的alpha值,在满足特定条件下, Lasso 仅使用少量观测值就能够完全恢复出非零的系数。特别地,样本的数量需要“足够大”,否则L1模型的表现会充满随机性,所谓“足够大”取决于非零系数的数量,特征数量的对数,噪声的数量,非零系数的最小绝对值以及设计矩阵X的结构。此外,设计矩阵必须拥有特定的属性,比如不能太过相关(correlated)。 对于非零系数的恢复,还没有一个选择alpha值的通用规则 。alpha值可以通过交叉验证来设置(LassoCV or LassoLarsCV),尽管这也许会导致模型欠惩罚(under-penalized):引入少量非相关变量不会影响分数预测。相反BIC (LassoLarsIC) 更倾向于设置较大的alpha值。
    Reference Richard G. Baraniuk “Compressive Sensing”, IEEE Signal Processing Magazine [120] July 2007

    4.2 随机稀疏模型 (Randomized sparse models)

      基于L1的稀疏模型的局限在于,当面对一组互相关的特征时,它们只会选择其中一项特征。为了减轻该问题的影响可以使用随机化技术,通过_多次重新估计稀疏模型来扰乱设计矩阵_,或通过_多次下采样数据来统计一个给定的回归量被选中的次数_。——==稳定性选择 (Stability Selection)==

      RandomizedLasso 实现了使用这项策略的Lasso,RandomizedLogisticRegression 使用逻辑回归,适用于分类任务。要得到整个迭代过程的稳定分数,你可以使用 lasso_stability_path

      注意到对于非零特征的检测,要使随机稀疏模型比标准F统计量更有效, 那么模型的参考标准需要是稀疏的,换句话说,非零特征应当只占一小部分。

    示例:
    Sparse recovery: feature selection for sparse linear models: 比较了不同的特征选择方法,并讨论了它们各自适用的场合。

    参考文献:
    N. Meinshausen, P. Buhlmann, “Stability selection”, Journal of the Royal Statistical Society, 72 (2010)
    F. Bach, “Model-Consistent Sparse Estimation through the Bootstrap”

    4.3 基于树的特征选择 (Tree-based feature selection)

      基于树的预测模型(见 sklearn.tree 模块,森林见 sklearn.ensemble 模块)能够用来计算特征的重要程度,因此能用来去除不相关的特征(结合 sklearn.feature_selection.SelectFromModel):

    >>> from sklearn.ensemble import ExtraTreesClassifier
    >>> from sklearn.datasets import load_iris
    >>> from sklearn.feature_selection import SelectFromModel
    >>> iris = load_iris()
    >>> X, y = iris.data, iris.target
    >>> X.shape
    (150, 4)
    >>> clf = ExtraTreesClassifier()
    >>> clf = clf.fit(X, y)
    >>> clf.feature_importances_  
    array([ 0.04...,  0.05...,  0.4...,  0.4...])
    >>> model = SelectFromModel(clf, prefit=True)
    >>> X_new = model.transform(X)
    >>> X_new.shape               
    (150, 2)

    示例:
    Feature importances with forests of trees: 从模拟数据中恢复有意义的特征。
    Pixel importances with a parallel forest of trees: 用于人脸识别数据的示例。

    5. 将特征选择过程融入pipeline (Feature selection as part of a pipeline)

      特征选择常常被当作学习之前的一项预处理。在scikit-learn中推荐使用
    sklearn.pipeline.Pipeline:

    clf = Pipeline([
      ('feature_selection', SelectFromModel(LinearSVC(penalty="l1"))),
      ('classification', RandomForestClassifier())
    ])
    clf.fit(X, y)

      在此代码片段中,将 sklearn.svm.LinearSVC 和 sklearn.feature_selection.SelectFromModel 结合来评估特征的重要性,并选择最相关的特征。之后 sklearn.ensemble.RandomForestClassifier 模型使用转换后的输出训练,即只使用被选出的相关特征。你可以选择其它特征选择方法,或是其它提供特征重要性评估的分类器。更多详情见 sklearn.pipeline.Pipeline 相关示例。
      
    关于更多,参见另一个文档:
    《基于模型的特征选择详解 (Embedded & Wrapper)》


    小结:

    所属方式说明
    VarianceThresholdFilter方差选择法(移除低方差的特征)
    SelectKBestFilter可选关联系数、卡方校验、最大信息系数作为得分计算的方法
    RFEWrapper递归地训练基模型,将权值系数较小的特征从特征集合中消除
    SelectFromModelEmbedded训练基模型,选择权值系数较高的特征

    参考:
    [1] [1.13. Feature selection](http://scikit-learn.org/stable/modules/feature_selection.html#feature-selection)
    [2] [1.13 特征选择](http://sklearn.lzjqsdd.com/modules/feature_selection.html#feature-selection)
    [3] [干货:结合Scikit-learn介绍几种常用的特征选择方法](http://www.tuicool.com/articles/ieUvaq)
    [4] [使用sklearn做单机特征工程](http://www.cnblogs.com/jasonfreak/p/5448385.html#3601031)
    [5] [使用sklearn优雅地进行数据挖掘](http://www.cnblogs.com/jasonfreak/p/5448462.html)
    [6] [谁动了我的特征?——sklearn特征转换行为全记录](http://www.cnblogs.com/jasonfreak/p/5619260.html)

    注:
      文档[4]实际上是用sklearn实现整个数据挖掘流程,特别是在提高效率上sklearn的并行处理,流水线处理,自动化调参,持久化是使用sklearn优雅地进行数据挖掘的核心。这里是一个简单的总结,具体可查看该文档:

    类或方法说明
    sklearn.pipelinePipeline流水线处理
    sklearn.pipelineFeatureUnion并行处理
    sklearn.grid_searchGridSearchCV网格搜索自动化调参
    externals.joblibdump数据持久化
    externals.joblibload从文件系统中加载数据至内存
    标签:  特征工程特征选择
    展开全文
  • nlp实践特征选择

    2019-03-07 18:57:41
    tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。tf-idf加权的各种...

    1. TF-IDF原理

    tf-idf(英语:term frequency–inverse document frequency)是一种用于信息检索与文本挖掘的常用加权技术。tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。tf-idf加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了tf-idf以外,互联网上的搜索引擎还会使用基于链接分析的评级方法,以确定文件在搜索结果中出现的顺序。
    (维基百科)
    维基百科对tfidf的描述

    2. 文本矩阵化

    使用词袋模型,以TF-IDF特征值为权重。(可以使用Python中TfidfTransformer库)

     vectorizer = CountVectorizer()  # 该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频
        transformer = TfidfTransformer()  # 该类会统计每个词语的tf-idf权值
        tfidf = transformer.fit_transform(
            vectorizer.fit_transform(train))  # 第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵
    
        word = vectorizer.get_feature_names()  # 获取词袋模型中的所有词语
        weight = tfidf.toarray()  # 将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重
        for i in range(len(weight)):  # 打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重
            print("-------这里输出第", i, u"类文本的词语tf-idf权重------")
            for j in range(len(word)):
                print(word[j], weight[i][j])
    

    运行结果

    3. 互信息的原理。

    互信息(mutual information)是用来评价一个事件的出现对于另一个事件的出现所贡献的信息量
    概念
    互信息,Mutual Information,缩写为MI,表示两个变量X与Y是否有关系,以及关系的强弱。

    缺点
    在做文本分类时,我们可能会判断一个词和某类的相关程度,但是计算时,未考虑词频的影响
    (可以让互信息的结果再乘上tf-idf因子,从而将特征频率与特征分布考虑进去)

    应用
    1、文本自动摘要
    2、两个词语同时出现的概率
    PMI(点互信息),通过判断一个词分别与poor和excellent的互信息来判断这个词的情感倾向

    4. 利用互信息进行特征筛选。

    sklearn编程
    from sklearn import metrics as mr
    mr.mutual_info_score(label,x)
    label、x为list或array。
    计算x和label的互信息

    参考
    文本挖掘预处理之TF-IDF:文本挖掘预处理之TF-IDF - 刘建平Pinard - 博客园
    使用不同的方法计算TF-IDF值:使用不同的方法计算TF-IDF值 - 简书
    sklearn-点互信息和互信息:sklearn:点互信息和互信息 - 专注计算机体系结构 - CSDN博客
    如何进行特征选择(理论篇)机器学习你会遇到的“坑”:如何进行特征选择(理论篇)机器学习你会遇到的“坑”

    展开全文
  • 自然语言处理NLP)学习路线总结

    万次阅读 多人点赞 2019-03-20 21:01:53
    目录 自然语言处理概述 ...自然语言处理入门基础 ...自然语言处理的主要技术范畴 ...自然语言处理(Natural Language Processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究人与计算机之间...

    目录

    1. 自然语言处理概述

    2. 自然语言处理入门基础

    3. 自然语言处理的主要技术范畴

    4. 自然语言处理基本点

    5. 特征处理

    6. 模型选择

    7. NLP常用工具

    8. NLP语言模型

    9. 快速入门NLP方法

    10. 自然语言处理学习资料

    1、自然语言处理概述

    自然语言处理(Natural Language Processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究人与计算机之间用自然语言进行有效通信的理论和方法。融语言学、计算机科学、数学等于一体的科学。旨在从文本数据中提取信息。目的是让计算机处理或“理解”自然语言,以执行自动翻译、文本分类和情感分析等。自然语言处理是人工智能中最为困难的问题之一。

    2、自然语言处理入门基础

    2.1 数学基础

    (1)线性代数

    向量、 矩阵、距离计算(余弦距离、欧式距离、曼哈顿距离、明可夫斯基距离、切比雪夫距离、杰卡德距离、汉明距离、标准欧式距离、皮尔逊相关系数)

    (2)概率论

    随机试验、条件概率、全概率、贝叶斯定理、信息论

    (3)统计学

    图形可视化(饼图、条形图、热力图、折线图、箱线图、散点图、雷达图、仪表盘)

    数据度量标准(平均数、中位数、众数、期望、方差、标准差)

    概率分布(几何分布、二项分布、正态分布、泊松分布)

    统计假设检验

    2.2 语言学基础

    语音、词汇、语法

    2.3 Python基础

    廖雪峰教程,Python从入门到实践

    2.4 机器学习基础

    统计学习方法、机器学习周志华、机器学习实战

    2.5 深度学习基础

    CNN、RNN、LSTM

    2.6 自然语言处理的理论基础

    统计自然语言处理(宗成庆第二版)、Python自然语言处理、数学之美(第二版)

    3、自然语言处理的主要技术范畴

    3.1 语义文本相似度分析

    语义文本相似度分析是对两段文本的意义和本质之间的相似度进行分析的过程。

    3.2 信息检索(Information Retrieval, IR)

    信息检索是指将信息按一定的方式加以组织,并通过信息查找满足用户的信息需求的过程和技术。

    3.3 信息抽取(Information Extraction)

    信息抽取是指从非结构化/半结构化文本(如网页、新闻、 论文文献、微博等)中提取指定类型的信息(如实体、属性、关系、事件、商品记录等),并通过信息归并、冗余消除和冲突消解等手段将非结构化文本转换为结构化信息的一项综合技术。

    3.4 文本分类(Text Categorization)

    文本分类的任务是根据给定文档的内容或主题,自动分配预先定义的类别标签。

    3.5 文本挖掘(Text Mining)

    文本挖掘是信息挖掘的一个研究分支,用于基于文本信息的知识发现。文本挖掘的准备工作由文本收集、文本分析和特征修剪三个步骤组成。目前研究和应用最多的几种文本挖掘技术有:文档聚类、文档分类和摘要抽取。

    3.6 文本情感分析(Textual Affective Analysis)

    情感分析是一种广泛的主观分析,它使用自然语言处理技术来识别客户评论的语义情感,语句表达的情绪正负面以及通过语音分析或书面文字判断其表达的情感等。

    3.7 问答系统(Question Answering, QA)

    自动问答是指利用计算机自动回答用户所提出的问题以满足用户知识需求的任务。不同于现有搜索引擎,问答系统是信息服务的一种高级形式,系统返回用户的不再是基于关键词匹配排序的文档列表,而是精准的自然语言答案。

    3.8 机器翻译(Machine Translation,MT)

    机器翻译是指利用计算机实现从一种自然语言到另外一种自然语言的自动翻译。被翻译的语言称为源语言(source language),翻译到的语言称作目标语言(target language)。

    机器翻译研究的目标就是建立有效的自动翻译方法、模型和系统,打破语言壁垒,最终实现任意时间、任意地点和任意语言的自动翻译,完成人们无障碍自由交流的梦想。

    3.9 自动摘要(Automatic Summarization)

    自动文摘(又称自动文档摘要)是指通过自动分析给定的一篇文档或多篇文档,提炼、总结其中的要点信息,最终输出一篇长度较短、可读性良好的摘要(通常包含几句话或数百字),该摘要中的句子可直接出自原文,也可重新撰写所得。

    根据输入文本的数量划分,文本摘要技术可以分为单文档摘要和多文档摘要。
    在单文档摘要系统中,一般都采取基于抽取的方法。而对于多文档而言,由于在同一个主题中的不同文档中不可避免地存在信息交叠和信息差异,因此如何避免信息冗余,同时反映出来自不同文档的信息差异是多文档文摘中的首要目标,而要实现这个目标通常以为着要在句子层以下做工作,如对句子进行压缩,合并,切分等。另外,单文档的输出句子一般是按照句子在原文中出现的顺序排列,而在多文档摘要中,大多采用时间顺序排列句子,如何准确的得到每个句子的时间信息,也是多文档摘要需要解决的一个问题。

    3.10 语音识别(Speech Recognition)

    语言识别指的是将不同语言的文本区分出来。其利用语言的统计和语法属性来执行此任务。语言识别也可以被认为是文本分类的特殊情况
    在这里插入图片描述

    4、自然语言处理基本点

    4.1 语料库(Corpus)

    语料库中存放的是在语言的实际使用中真实出现过的语言材料;语料库是以电子计算机为载体承载语言知识的基础资源;真实语料需要经过加工(分析和处理),才能成为有用的资源。

    4.2 中文分词(Chinese Word egmentation)

    (1)中文分词指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。

    (2)现有的分词方法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法、基于统计的分词方法和基于深度学习的中文分词。推荐

    (3)比较流行的中文分词工具:jieba、StanfordNLP、HanLP、SnowNLP、THULAC、NLPIR

    4.3 词性标注(Part-of-speech tagging)

    (1)词性标注是指为给定句子中的每个词赋予正确的词法标记,给定一个切好词的句子,词性标注的目的是为每一个词赋予一个类别,这个类别称为词性标记(part-of-speech tag),比如,名词(noun)、动词(verb)、形容词(adjective)等。

    (2)词性标注是一个非常典型的序列标注问题。最初采用的方法是隐马尔科夫生成式模型, 然后是判别式的最大熵模型、支持向量机模型,目前学术界通常采用的结构是感知器模型和条件随机场模型。近年来,随着深度学习技术的发展,研究者们也提出了很多有效的基于深层神经网络的词性标注方法。

    4.4 句法分析(Parsing)

    (1)基于规则的句法结构分析

    (2)基于统计的语法结构分析

    4.5 词干提取(Stemming)

    词干提取是将词语去除变化或衍生形式,转换为词干或原型形式的过程。词干提取的目标是将相关词语还原为同样的词干。

    4.6 词形还原(Lemmatization)

    词形还原是将一组词语还原为词源或词典的词目形式的过程。

    4.7 停用词过滤

    停用词过滤是指在文本中频繁出现且对文本信息的内容或分类类别贡献不大甚至无贡献的词语,如常见的介词、冠词、助词、情态动词、代词以及连词等。

    4.8 词向量化(Word Vector)

    词向量化是用一组实数构成的向量代表自然语言的叫法。这种技术非常实用,因为电脑无法处理自然语言。词向量化可以捕捉到自然语言和实数间的本质关系。通过词向量化,一个词语或者一段短语可以用一个定维的向量表示。(word2vec)

    from gensim.models import Word2Vec
    

    4.9 命名实体消歧(Named Entity Disambiguation)

    命名实体消岐是对句子中的提到的实体识别的过程。

    例如,对句子“Apple earned a revenue of 200 Billion USD in 2016”,命名实体消岐会推断出句子中的Apple是苹果公司而不是指一种水果。一般来说,命名实体要求有一个实体知识库,能够将句子中提到的实体和知识库联系起来。

    4.10 命名实体识别(named entity recognition)

    命名实体识别是识别一个句子中有特定意义的实体并将其区分为人名,机构名,日期,地名,时间等类别的任务。

    三种主流算法:CRF,字典法和混合方法

    5、特征处理

    5.1 特征提取(Feature Extraction)

    特征提取是指将机器学习算法不能识别的原始数据转化为算法可以识别的特征的过程。

    举例(文本分类特征提取步骤):

    (1)对训练数据集的每篇文章,我们进行词语的统计,以形成一个词典向量。词典向量里包含了训练数据里的所有词语(假设停用词已去除),且每个词语代表词典向量中的一个元素。

    (2)在经过第一步的处理后,每篇文章都可以用词典向量来表示。这样一来,每篇文章都可以被看作是元素相同且长度相同的向量,不同的文章具有不同的向量值。这也就是表示文本的词袋模型(bag of words)。

    (3)针对于特定的文章,如何给表示它的向量的每一个元素赋值呢?最简单直接的办法就是0-1法了。简单来说,对于每一篇文章,我们扫描它的词语集合,如果某一个词语出现在了词典中,那么该词语在词典向量中对应的元素置为1,否则为0。

    5.2 特征选择( Feature Selection)

    当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。特征选择是指去掉无关特征,保留相关特征的过程,也可以认为是从所有的特征中选择一个最好的特征子集。特征选择本质上可以认为是降维的过程。

    from sklearn.feature_extraction.text import TfidfVectorizer

    5.3 降维(Dimension Reduction)

    6、模型选择

    6.1 马尔可夫模型、隐马尔可夫模型、层次化隐马尔可夫模型、马尔可夫网络

    (1)应用:词类标注、语音识别、局部句法剖析、语块分析、命名实体识别、信息抽取等。应用于自然科学、工程技术、生物科技、公用事业、信道编码等多个领域。

    (2)马尔可夫链:在随机过程中,每个语言符号的出现概率不相互独立,每个随机试验的当前状态依赖于此前状态,这种链就是马尔可夫链。

    (3)多元马尔科夫链:考虑前一个语言符号对后一个语言符号出现概率的影响,这样得出的语言成分的链叫做一重马尔可夫链,也是二元语法。二重马尔可夫链,也是三元语法,三重马尔可夫链,也是四元语法

    6.2 条件随机场(CRF)

    (1)条件随机场用于序列标注,中文分词、中文人名识别和歧义消解等自然语言处理中,表现出很好的效果。原理是:对给定的观察序列和标注序列,建立条件概率模型。条件随机场可用于不同预测问题,其学习方法通常是极大似然估计。

    (2)条件随机场模型也需要解决三个基本问题:特征的选择、参数训练和解码。

    6.3 贝叶斯网络

    贝叶斯网络又称为信度网络或信念网络(belief networks),是一种基于概率推理的数学模型,其理论基础是贝叶斯公式。

    6.4 最大熵模型

    7、NLP常用工具

    (1)Anaconda

    Anaconda是一个用于科学计算的Python开发平台,支持 Linux,Mac和Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本Python并存、切换以及各种第三方包安装问题。Anaconda利用conda命令来进行package和environment的管理,并且已经包含了Python和相关的配套工具。Anaconda集成了大量的机器学习库以及数据处理必不可少的第三方库,比如NumPy,SciPy,Scikit-Learn以及TensorFlow等。

    (2)Scikit-learn

    Scikit-learn是广受欢迎的入门级机器学习库,包含大量的机器学习算法和特征提取实现,使用非常简便。Scikit-learn实现的是浅层学习算法,神经网络仅实现了多层感知机。

    (3)TensorFlow

    TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,可被用于语音识别或图像识别等多项机器学习和深度学习领域。

    (4)Keras

    Keras是一个高级别的Python神经网络框架,能在TensorFlow或者 Theano 上运行。Keras的作者、谷歌AI研究员Francois Chollet宣布了一条激动人心的消息,Keras将会成为第一个被添加到TensorFlow核心中的高级别框架,这将会让Keras变成Tensorflow的默认API。

    (5)Gensim

    Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法,支持流式训练,并提供了诸如相似度计算,信息检索等一些常用任务的API接口。

    (6)NLTK

    在NLP领域中,NLTK是最常使用的一个Python库。

    (7)Jieba

    Jieba,结巴分词是最受欢迎的中文分词工具。

    8、NLP语言模型

    (1)词的独热表示(one-hot representation)

    (2)Bag of Words

    (3)Bi-gram 和 N-gram

    (4)词的分布式表示(distributed representation)

    (5)共现矩阵(Cocurrence martrix)

    (6)神经网络语言模型(Neural Networ Language model,NNLM)

    (7)word2vec

       连续词袋模型(Continuous Bag of Words,CBOW)
       Skip-Gram模型
    

    9、快速入门NLP方法

    (1)认真看完一本NLP相关的书,坚持看完一部视频。

    (2)看这两年相关方向的综述论文,然后看一些经典的论文和最新论文。

    (3)独立实现一个小型的自然语言处理项目。

    (4)可以在Github上找到很多相关的开源代码,选一个自己感兴趣的方向进行研究。

    10、自然语言处理学习资料

    (1)我爱自然语言处理

    (2)一文读懂自然语言NLP

    (3)中文分词原理与工具

    (4)自然语言处理项目资源库汇总

    在这里插入图片描述
    在这里插入图片描述
    大爷赏个脸?
    在这里插入图片描述

    展开全文
  • 特征选择方法CHI和IG

    千次阅读 2016-09-14 15:07:34
    1)TF-IDF在特征选择时的误区。 TF-IDF用于向量空间模型,进行文档相似度计算是相当有效的。但在文本分类中单纯使用TF-IDF来判断一个特征是否有区分度是不够的。 它仅仅综合考虑了该词在文档中的重要程度和文档...

    1)TF-IDF在特征选择时的误区。

    TF-IDF用于向量空间模型,进行文档相似度计算是相当有效的。但在文本分类中单纯使用TF-IDF来判断一个特征是否有区分度是不够的

    它仅仅综合考虑了该词在文档中的重要程度和文档区分度。

    它没有考虑特征词在类间的分布。特征选择所选择的特征应该在某类出现多,而其它类出现少,即考察各类的文档频率的差异。如果一个特征词,在各个类间分布比较均匀,这样的词对分类基本没有贡献;但是如果一个特征词比较集中的分布在某个类中,而在其它类中几乎不出现,这样的词却能够很好代表这个类的特征,而TF-IDF不能区分这两种情况。

    它没有考虑特征词在类内部文档中的分布情况。在类内部的文档中,如果特征词均匀分布在其中,则这个特征词能够很好的代表这个类的特征,如果只在几篇文档中出现,而在此类的其它文档中不出现,显然这样的特征词不能够代表这个类的特征。


    2)特征选择方法综述。

    文本中能观察到的量其实只有两个:词频和文档频率,所有的方法一律以这两个量为计算基础。

    针对英文纯文本的实验结果表明:作为特征选择方法时,卡方检验和信息增益的效果最佳(相同的分类算法,使用不同的特征选择算法来得到比较结果);文档频率方法(直接依据文档频率大小排序的方法)的性能同前两者大体相当,术语强度方法性能一般;互信息方法的性能最差。


    3)信息增益。

    在文本分类中,特征词t的取值只有t(代表t出现)和clip_image006(代表t不出现)。那么

    最后,信息增益

    但信息增益最大的问题还在于它只能考察特征对整个系统的贡献,而不能具体到某个类别上,这就使得它只适合用来做所谓“全局”的特征选择(指所有的类都使用相同的特征集合),而无法做“本地”的特征选择(每个类别有自己的特征集合,因为有的词,对这个类别很有区分度,对另一个类别则无足轻重)。

    实现方法:

     统计正负分类的文档数:N1、N2。

     统计每个词的正文档出现频率(A)、负文档出现频率(B)、正文档不出现频率(C)、负文档不出现频率(D)。

     计算信息熵

     计算每个词的信息增益


     将每个词按信息增益值从大到小排序,选取前k个词作为特征,k即特征维数。



    4)卡方检测,CHI-Square test。

    卡方检验最基本的思想就是通过观察实际值与理论值的偏差来确定理论的正确与否具体做的时候常常先假设两个变量确实是独立的(“原假设”),然后观察实际值(观察值)与理论值(这个理论值是指“如果两者确实独立”的情况下应该有的值)的偏差程度,如果偏差足够小,我们就认为误差是很自然的样本误差,是测量手段不够精确导致或者偶然发生的,两者确确实实是独立的,此时就接受原假设;如果偏差大到一定程度,使得这样的误差不太可能是偶然产生或者测量不精确所致,我们就认为两者实际上是相关的,即否定原假设,而接受备择假设。

    理论值为E,实际值为x,偏差程度的计算公式为:

    这个式子就是开方检验使用的差值衡量公式。当提供了数个样本的观察值x1x2,……xi,……xn之后,代入到式中就可以求得卡方值,用这个值与事先设定的阈值比较,如果大于阈值(即偏差很大),就认为原假设不成立,反之则认为原假设成立。

    在文本分类的特征选择阶段,一般使用“词t与类别c不相关”来做原假设计算出的开方值越大,说明对原假设的偏离越大,我们越倾向于认为原假设的反面情况是正确的选择的过程为每个词计算它与类别c的开方值,从大到小排个序(此时开方值越大越相关),取前k个就可以。

    卡方检验的缺点是:它只统计文档是否出现词,而不管出现了几次。这会使得他对低频词有所偏袒(因为它夸大了低频词的作用)。甚至会出现有些情况,一个词在一类文章的每篇文档中都只出现了一次,其开方值却大过了在该类文章99%的文档中出现了10次的词,其实后面的词才是更具代表性的,但只因为它出现的文档数比前面的词少了“1”,特征选择的时候就可能筛掉后面的词而保留了前者。这就是开方检验著名的“低频词缺陷”。因此开方检验也经常同其他因素如词频综合考虑来扬长避短。

    实现方法:

     统计样本集中文档总数(N)。

     统计每个词的正文档出现频率(A)、负文档出现频率(B)、正文档不出现频率(C)、负文档不出现频率(D)。

    3 计算每个词的卡方值,公式如下:

     将每个词按卡方值从大到小排序,选取前k个词作为特征,k即特征维数。

    展开全文
  • 自然语言处理中,第一步需要面对的就是词向量特征的提取。语言的特征提取在sklearn模块中有相当完善的方法和模块,而针对中文其实也可以同过分词软件做分词然后再按照英文文本的思路开展特征提取,机器学习。
  • 数据清洗,特征转换,特征选择,降维,异常数据处理及自然语言处理详细介绍。
  • [NLP自然语言处理]谷歌BERT模型深度解析

    万次阅读 多人点赞 2018-10-15 17:49:18
    BERT目前已经刷新的11项自然语言处理任务的最新记录包括:将GLUE基准推至80.4%(绝对改进7.6%),MultiNLI准确度达到86.7% (绝对改进率5.6%),将SQuAD v1.1问答测试F1得分纪录刷新为93.2分(绝对提升1.5分),...
  • 语言处理规则(数据)与程序分离,程序体现为规则语言的解释器! 2. 词法分析  形态还原(针对英语、德语、法语等) 把句子中的词还原成它们的基本词形。  词性标注 为句子中的词标上预定义类别集合(标注集...
  • 自然语言处理 特征提取

    万次阅读 多人点赞 2019-04-10 14:44:02
    1. 基本文本处理技能 1.1 分词   在语言中,语义的基本单元是单词。在英语句子中已天然就已经分割成单词(空白符和标点符号隔开),而在汉语中字和字紧紧的连在一起。所以我们需要进行分词。分词有很多种算法:...
  • 特征提取参考文献 参考文献 1、sklearn——CountVetorizer详解
  • 特征选择,目的就是选出对分类最有帮助的特征项。但是交给计算机去处理的话,需要量化。因此如何选出这最有帮助的,就出现了种种方法。 一般来说,选择特征在3000的时候,总体效益是很不错的,再往上涨,占用空间...
  • 自然语言处理NLP概论

    2021-07-23 09:14:19
    文章目录1 什么是NLP1.1 NLP的两大任务1 NLU 自然语言理解2 NLG 自然语言生成1.2 NLP的发展和技术路线1 基于传统机器学习的NLP流程2 基于深度学习的NLP流程3 方法路线1.3 目前研究方向2 词法分析(Lexical Analyse)...
  • 特征降纬方法,包括:词袋模型、维度选择方法、主题模型和神经网络的一些基本处理思路
  • NLP-数据预处理后的特征选择

    千次阅读 2018-05-09 23:41:35
    通过特征选择剔除不相关或冗余的特征,减少特征个数,减少运行时间的目的。 数据预处理后,需要选择有意义的特征,然后再输入机器学习的算法和模型进行训练。 一、相关系数法 计算各个特征对目标值的相关系数...
  • 自然语言处理NLP知识结构

    千次阅读 2018-11-08 15:18:08
    自然语言处理NLP知识结构 文|秦陇纪,数据简化DataSimp 自然语言处理(计算机语言学、自然语言理解)涉及:字处理,词处理,语句处理,篇章处理词处理分词、词性标注、实体识别、词义消歧语句处理句法分析...
  • NLP中的新词发现特征选择

    千次阅读 2017-08-17 15:18:54
    http://blog.csdn.net/wendingzhulu/article/details/44464895
  • 自然语言处理NLP)知识结构总结

    万次阅读 多人点赞 2018-03-17 18:04:35
    自然语言处理知识太庞大了,网上也都是一些...主要参考书为宗成庆老师的《统计自然语言处理》,虽然很多内容写的不清楚,但好像中文NLP书籍就这一本全一些,如果想看好的英文资料,可以到我的GitHub上下载: http://...
  • 词表示传统的右word2vec,ELMo,BERT等,word2vec包括有名的skip-gram模型和CWOB模型,下游具体NLP任务有机器翻译,对话系统,自然语言理解(NLU),自然语言生成(NLG),命名实体识别等。 处理流程: 预处理:分词...
  • NLP相关知识梳理研究和应用领域研究难点学科掌握一般处理过程获取语料语料预处理特征工程模型训练模型评估模型上线应用模型重构(非必须) 感谢知乎 @华天清 的总结 研究和应用领域 自动分词 词性标注 句法分析 ...
  • 文章目录机器学习中的特征特征的重要性特征提取和特征选择去除方差较小的特征单变量特征选择 (Univariate feature selection)F检验与互信息其他特征选择方法重复性特征删除:用模型选择:并入pipeline 机器学习中的...
  • 前文提到过,除了开方检验(CHI)以外,信息增益(IG,Information Gain)也是很有效的特征选择方法。但凡是特征选择,总是在将特征的重要程度量化之后再进行选择,而如何量化特征的重要性,就成了各种方法间最大的...
  • 基本方法1.1 专家推荐和业务理解1.2 方差分析2. 单变量分析2.1 Pearson Correlation Coefficient2.1.1 原理2.1.2 Notice2.1.3 使用示例2.2 Spearman Correlation Coefficient2.2.1 原理2.2.2 Notice2.2.3 使用示例3...
  • 今天晚上咱们要学习的课程比之前的难度要稍微大点,也是目前人工智能领域最难的研究方向之一——自然语言处理NLP)。 自然语言处理——AI领域“第一团宠” NLP作为AI领域的认知智能,其动态一直都是业内专家学者...
  • 主成分分析:主成分分析应该是应用最广的数据降维方法了;而且各个软件基本上都能做,算法不难,自己编写也可以,但是这里注意一下,亲测,一些软件的PCA算出来的数,和自己编的不一样,因为我写方差的时候用的是, ...
  • NLP关键词提取方法总结及实现

    万次阅读 多人点赞 2019-07-23 21:09:41
    卡方检验可用于文本分类问题中的特征选择,此时不需要设定阈值,只关心找到最为相关的topK个特征。基本思想:比较理论频数和实际频数的吻合程度或者拟合优度问题。 4、基于sklearn的卡方检验实现 from ...
  • NLP自然语言处理简述

    千次阅读 2018-09-15 17:04:06
    自然语言处理要研制表示语言能力(linguistic competence)和语言应用(linguistic performance)的模型,建立计算框架来实现这样的语言模型,提出相应的方法来不断完善这样的语言模型,根据这样的语言模型设计各种...
  • 自然语言处理的最大熵方法 之1

    千次阅读 2012-02-17 19:52:17
    自然语言处理的最大熵方法 )  最大熵的方法可以追溯到圣经时期(Biblical times)。但是,到了目前计算机已经变得足够的强大,在现实世界中的实际问题,比如统计估计、模式识别等问题可以用到最大熵的概念来...
  • 自然语言处理技术之词嵌入方法-2

    千次阅读 2020-11-22 23:30:23
    词嵌入是自然语言处理NLP)中语言模型与表征学习技术的统称,也是实现自然语言处理任务的基础。 目录 传统词向量特征的表示方法 1.one-hot one-hot的缺点 2.TF-IDF TF-IDF的缺点 3.词的分布式表示...
  • NLP自然语言处理】技术路线

    千次阅读 2019-10-22 12:41:33
    自然语言处理 NLP 1. 数学基础........................................................................................................... 3 1.1. 线性代数..............................
  • 第一部分:文本分类 训练文本分类器过程见下图: 文本分类问题: 给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个 ...文本分类的处理大致分为文本预处理、文本特征提取、分类模型构建等。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,155
精华内容 28,462
关键字:

nlp的特征选择方法