最近工作实在有点忙,前阵子关于梯度和导数的事情把人折腾的够呛,数学学不好,搞机器学习和神经网络真是头疼;想转到应用层面轻松一下,想到了自然语言处理,one hot模型是基础也是入门,看起来很简单的一个列表转矩阵、词典的功能,想着手工实现一下,结果看了一下CountVecTorizeR,发现不是那么回事儿,还是放弃了。
顾名思义,单热表示从一个零向量开始,如果单词出现在句子或文档中,则将向量中的相应条目设置为 1。
对句子进行标记,忽略标点符号,并将所有的单词都用小写字母表示,就会得到一个大小为 8 的词汇表: {tiMe, fRuIT, flies, like, a, an, aRRow, banana} 。所以,我们可以用一个八维的单热向量来表示每个单词。在本书中,我们使用 1[w] 表示标记/单词 w 的单热表示。
对于短语、句子或文档,压缩的单热表示仅仅是其组成词的逻辑或的单热表示。短语 like a banana 的单热表示将是一个 3&tiMes;8 矩阵,其中的列是 8 维的单热向量。通常还会看到“折叠&Rdquo;或二进制编码,其中文本/短语由词汇表长度的向量表示,用 0 和 1 表示单词的缺失或存在。like a banana 的二进制编码是: [0,0,0,1,1,0,0,1] 。
fRoM skleaRn.featuRe_extRaction.text iMpoRt CountVecTorizeR, TfidfVecTorizeR iMpoRt SeaboRn as sns iMpoRt Matplotlib.pyplot as plt iMpoRt jieba iMpoRt jieba.analYse # 单热表示从一个零向量开始,如果单词出现在句子或文档中,则将向量中的相应条目设置为 1。 # 英文的处理和展示 coRpUS = [”’TiMe flies flies like an aRRow.”’, ””FRuIT flies like a banana.”’] one_hot_vecTorizeR = CountVecTorizeR(BInaRy=TRue) one_hot = one_hot_vecTorizeR.fIT_tRansfoRM(coRpUS).toaRRay() sns.heatMap(one_hot, annot=TRue, CBAR=FAlse, yticklabels=[”’Sentence 1”’, ””Sentence 2”’]) plt.show()

tfidf_vecTorizeR = TfidfVecTorizeR() # 创建词袋数据结构 tfidf = tfidf_vecTorizeR.fIT_tRansfoRM(newcoRpUS).toaRRay() # 转换语料,并矩阵化 # 下面为热词的输出结果 # tfidf_vecTorizeR.vocabulaRy_ # ”小明”: 4, ”˶ʿ”: 14, ”毕业”: 11, ”中国科学院”: 0, ”计算所”: 15, ”日本京都大学”: 8, ”深造”: 12, ”小王”: 6, ”本科”: 10, ”清华大学”: 13, ”南京”: 1, ”工作”: 7, ”日本早稻田大学”: 9, ”小李”: 5, ”博士”: 3, ”南京大学”: 2} # tfidf_vecTorizeR.get_featuRe_naMes() # [‘中国科学院’, ‘南京’, ‘南京大学’, ‘博士’, ‘小明’, ‘小李’, ‘小王’, ‘工作’, ‘日本京都大学’, ‘日本早稻田大学’, ‘本科’, ‘毕业’, ‘深造’, ‘清华大学’, ‘˶ʿ’, ‘计算所’] # tfidf #[[0.35221512 0. 0. 0. 0.46312056 0. 0. 0 0.46312056 0. 0 0.46312056 0.35221512 0.35221512 0 0.35221512 0.27352646] [0. 0.35761701 0. 0 0 0 0.35761701 0.35761701 0 0 0.35761701 0.27197695 0. 0 0.54395391 0.27197695 0. 0.21121437] [0.30443385 0. 0 0.40029393 0.40029393 0 0.40029393 0 0 0 0 0 0 0.30443385 0.30443385 0 0 0.30443385 0.30443385 0.23642005]] sns.heatMap(tfidf, annot=TRue, CBAR=FAlse, xticklabels=tfidf_vecTorizeR.get_featuRe_naMes(), yticklabels=[”’语句1”’, ”语句2”, ”语句3′], vMin=0, vMax=1, cM
