当前位置: 首页 > 后端技术 > Python

NLP实战笔记-基于机器学习的文本分类-(一)文本表示

时间:2023-03-26 13:18:13 Python

基于机器学习的文本分类知识点1.文本表示方法One-hot:这种表示方法无法表达词与词之间的相似度`measurements=[{'city':'Dubai','temperature':33.},{'city':'London','temperature':12.},{'city':'SanFrancisco','temperature':18.},]fromsklearn.feature_extractionimportDictVectorizervec=DictVectorizer()vec.fit_transform(measurements).toarray()`BagofWords:词袋表示,也称为计数向量表示(CountVectors)。文档的向量表示可以直接通过对单词的向量求和得到。scikit-learn提供了从文本内容中提取数字特征的常用方法,即:标记化:标记字符串并为每个可能的标记提供整数id,例如使用空格和标点符号作为标记分隔符;(wordsegmentationtokens)counting:统计每个文档出现的token个数;(statisticalwordfrequency)normalizing:通过减少大多数样本/文档中出现的一般标记来进行归一化和加权。(Normalization/归一化)在该方案中,特征和样本定义如下:每个单独的token(归一化或未归一化)的出现频率被用作特征。给定文档的所有标记频率的向量作为多变量样本。因此,文本语料库可以用矩阵表示,每一行代表一个文本,每一列代表一个标记(例如一个词)。向量化:将文本集合转换为数字特征向量的一般过程。这种方法(标记化、计数和规范化)称为“词袋”或“n-gram”模型。即只用词频描述文档,完全忽略词在文档中的相对位置信息。约翰喜欢看电影。玛丽也喜欢。-->>[1,2,1,1,1,0,0,0,1,1]约翰也喜欢看足球比赛。-->>[1,1,1,1,0,1,1,1,0,0]具体实现:sklearn1.CountVectorizer2.TfidfVectorizer3.HashingVectorizerFeatureextractionVectorize实例:>>>measurements=[...{'city':'迪拜','temperature':33.},...{'city':'伦敦','temperature':12.},...{'city':'旧金山','温度':18.},...]>>>fromsklearn.feature_extractionimportDictVectorizer>>>vec=DictVectorizer()>>>vec.fit_transform(measurements).toarray()array([[1.,0.,0.,33.],[0.,1.,0.,12.],[0.,0.,1.,18.]])>>>vec.get_feature_names()['city=Dubai','city=London','city=SanFrancisco','temperature']SKlearn中文本提取TF-IDFTF-IDF的得分代表了当前文档和整个语料库中词的相对重要性。TF-IDF得分由两部分组成:第一部分是词频(TermFrequency),第二部分是逆文档频率(InverseDocumentFrequency)。其中,语料库中的文档总数除以包含该词的文档数,然后取对数就是逆文档频率。TF(t)=该词在当前文档中出现的次数/当前文档中的总词数IDF(t)=log_e(文档总数/该词出现的文档总数)TF-IDF并且一个词在当前文档中出现的次数正比于这个词在整个语料库中出现的次数共现矩阵(Cocurrencematrix)ex:Johnlikestowatchmovies.Johnlikestoplay篮球。一般配合PCA或者SVD进行降维,比如将原来的m×n矩阵降维为m×r矩阵,其中r