关于自然语言处理之One Hot模型
最近工作实在有点忙,前阵子关于梯度和导数的事情把人折腾的够呛,数学学不好,搞机器学习和神经网络真是头疼;想转到应用层面轻松一下,想到了自然语言处理,one hot模型是基础也是入门,看起来很简单的一个列表转矩阵、词典的功能,想着手工实现一下,结果看了一下CountVectorizer,发现不是那么回事儿,还是放弃了。
顾名思义,单热表示从一个零向量开始,如果单词出现在句子或文档中,则将向量中的相应条目设置为 1。
对句子进行标记,忽略标点符号,并将所有的单词都用小写字母表示,就会得到一个大小为 8 的词汇表: {time, fruit, flies, like, a, an, arrow, banana} 。所以,我们可以用一个八维的单热向量来表示每个单词。在本书中,我们使用 1[w] 表示标记/单词 w 的单热表示。
对于短语、句子或文档,压缩的单热表示仅仅是其组成词的逻辑或的单热表示。短语 like a banana 的单热表示将是一个 3×8 矩阵,其中的列是 8 维的单热向量。通常还会看到“折叠”或二进制编码,其中文本/短语由词汇表长度的向量表示,用 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&n自然bsp;= 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()
# 中文的处理和展示 # 获取停用词列表 def get_stopwords_list(stopwordfile): stopwords = [line.strip() for line in open(stopwordfile, encoding='UTF-8').readlines()] 语言 return stopwords # 移除停用词 def movestopwords(sentence): stopwords = get_stopwords_list('stopwords.txt') # 这里加载停用词的路径 santi_words = [x for x in sentence if len(x) > 1 and x not in stopwords] return santi_words # 语料 corpus = ["小明硕士毕业于中国科学院计算所处理,后在日本京都大学深造。", "小王本科在清华大学,后在南京计算所工作和深造,后在日本早稻田大学深造", "小李本科在清华大学,硕士毕业于中国科学院计算所,博士在南京大学"] newcorpus = [] for str in corpus: orgwordlist = jieba.lcut(str) # jieba分词 wordlist = movestopwords(orgwordlist) # 移除停用词 之Onewword = " ".join(wordlist) # 按照语料库要求进行空格分隔 newcorpus.append(newword) # 按照语料库要求转换成列表 # newcorpus # ['小明 硕士 毕业 中国科学院 计算所 日本京都大学 深造', # '小王 本科 清华大学 南京 计算所 工作 深造 日本早稻田大学 深造', # '小李 本科 清华大学 硕士 毕业 中国科学院 计算所 博士 南京大学'] one_hot_vectorizer = CountVectorizer(binary=True)&nbsnep; # 创建词袋数据结构 one_hot = one_hot_vectorizer.fit_transform(newcorpus).toarray() # 转换语料,并矩阵化 # 下面为热词的输出结果 # one_hot_vectorizer.vocabulary_ # {'小明': 4, '˶ʿ': 14, '毕业': 11, '中国科学院': 0, '计算所': 15, '日本京都大学': 8, '深造': 12, '小王': 6, '本科': 10, '清华大学': 13, '南京': 1, '工作': 7, '日本早稻田大学': 9, '小李': 5, '博士':&n Hbsp;3, '南京大学': 2} # one_hot_vectorizer.get_feature_names() # ['中国科学院', '南京', '南京大学', '博士', '小明', '小李', '小王', '工作', '日本京都大学', '日本早稻田大学', '本科', '毕业', '深造', '清华大学', '˶ʿ', '计算所'] # one_hot # [[1 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1] # [0 1 0 0 0 0 1 1 0 1¬bsp;1 0 1 1 0 1] # [1 0 1 1 0 1 0 0 0 0 1 1 0 1 1 1]] sns.set_style({'font.sans-serif': ['SimHei', 'Arial']}) sns.heatmap(one_hot, annot=True, cbar=False, xticklabels=one_hot_vectorizer.get_feature_names(), yticklabels=['语句1', '语句2', '语句3']) plt.show()
IDF 表示模型惩罚常见的符号,并奖励向量表示中的罕见符号。符号 w 的 IDF(w) 对语料库的定义为其中 n[w] 是包含单词 w 的文档数量, N 是文档总数。TF-IDF 分数就是 TF(w) * IDF(w) 的乘积。首先,请注意在所有文档(例如, n[w] = N ), IDF(w) 为 0, TF-IDF 得分为 0,完全惩罚了这一项。其次,如果一个术语很少出现(可能只出现在一个文档中),那么 IDF 就是 log n 的最大值
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() # ['中国科学院', '南京', '南京大学', '博士', '小明', '小李', '小王', '工作', '日本京都大学', '日本早稻田大学', '本科', '毕业', '深造', '清华大学', '˶ʿ', '计算所'] #&nbs自然p;tfidf # [[0.35221512 0. 0. 0. 0.46312056 0. 0. 0. 0.46312056 0. 0. 0.35221512 0.35221512 0语言. 0.35221512 0.27352646] # [0. 0.35761701 0. 0. 0. 0. 0.35761701 0.35761701 0. 0.35761701 0.27197695 0. 0.54395391 0.27处理197695 0. 0.21121437] # [0.30443385 0. 0.40029393 0.40029393 0. 0.40029393 0. 0. 0. 0. 0.之O30443385 0.30443385 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
(责任编辑:总部动态)
-
近日,萝卜快跑与瑞士邮政旗下的邮政巴士(PostBus)达成战略合作,宣布将在瑞士推出自动驾驶出行服务 “AmiGo”。这一合作标志着智能交通技术在瑞士的进一步应用,预计将为当地居民带来全新的出行体验...[详细]
-
单应用与环境 多应用与环境 CI持续集成 首先,准备一个代码库: https://github.com/DevOpsCICDCourse/microservicescicd/blob/main/mic...[详细]
-
谷歌Gemini渐近ChatGPT,谷歌目前有4款AI应用跻身Top50
根据风险投资公司 Andreessen Horowitz(a16z)发布的最新《前100名生成式 AI 消费应用报告》,AI 应用市场正在经历新一轮变化。尽管谷歌的 Gemini 依然落后于 Chat...[详细]
-
传统的 SEO 是为搜索引擎做优化(Search Engine Optimization),目的在于在搜索结果里拿到高排名,让用户点击、进入网站、产生曝光或转化。 在生成式 AI(如 ChatGPT、...[详细]
-
云安全日报210906:Debian压缩只读文件系统发现任意文件写入漏洞,需要尽快升级
Debian是一个完全自由的稳定且安全的基于Linux的操作系统,其使用范围包括笔记本计算机,台式机和服务器。Debian是许多其他发行版(例如:Ubuntu、Knoppix、PureOS、Steam...[详细]
-
云梦级2月11日云梦级消息,据中国新闻周刊报道,记者发现,因晒妻子生产过程视频被质疑的千万粉丝博主“保罗在美国”已被平台禁言,其账号主页显示,该用户因违反相关法律法规和政策,已被禁言。 据此前报道,今...[详细]
-
新浪科技讯 1月13日晚间消息,据报道,本周三电子商务巨头亚马逊推出了Prime移动视频版点播服务(Prime Video Mobile Edition),这是一项价格更加优惠的点播视频流服务,现在如...[详细]
-
本文转载自公众号“读芯术”(ID:AI_Discovery) 为什么我对深度学习的关注重点转向图神经网络?”是因为数据结构还是高效计算?一切都从图的结构以及它们如何解决关系问题和支持分布式计算开始。...[详细]
-
麒麟和貔貅是谁的儿子?貔貅是龙的儿子,龙生九子它是其一麒麟而是大地间的神灵,貔貅是中国古代神话传说中的一种神兽,龙头、马身、麟脚,形似狮子,毛色灰白,会飞。貔貅凶猛威。传说中的“龙生九子”是哪九子?貔...[详细]
-
在过去的十年里,这个问题被反复地问过,而得到的回答通常是“是的,好吧,当然,很可能”。 各大云供应商都已推出了HPC云服务并稳步扩展它们。例如,AWS最近推出了基于AWS Graviton 2的C6g...[详细]
- https://www.duksung.ac.kr/search/front/Search.jsp?qt=谷歌留痕软件【tg:seogoogle987】v0H
- https://www.duksung.ac.kr/search/front/Search.jsp?qt=谷歌留痕软件【tg:seogoogle987】ZDj
- https://www.searcychamber.com/list/search?AsfnA=DtkTQzs&q=谷歌留痕软件【tg:seogoogle987】,DeI
- https://www.target.com/s?searchTerm=谷歌留痕软件【tg:seogoogle987】,yGE
- https://wydden.com/?ID=r8w9WMSKWkOcmiaFWaUv0dzMdqZWfKtF&s=谷歌留痕软件【tg:seogoogle987】,HfH
- https://www.scivee.tv/?s=谷歌留痕软件【tg:seogoogle987】,ioM
- https://www.mi.com/search?keyword=谷歌留痕软件【tg:seogoogle987】,ZJU
- https://www.solerpalau.com/en-en/catalogsearch/result/?q=谷歌留痕软件【tg:seogoogle987】,orn
- https://www.pearson.com/en-us/search.html?aq=谷歌留痕软件【tg:seogoogle987】,BRD
- https://www.wellbees.com/index.php/catalogsearch/result/index/?q=谷歌留痕软件【tg:seogoogle987】,ow6

微软豪掷100亿美元洽购的Discord究竟什么来路?
标签: 谷歌眼镜 谢尔盖・布林 智能眼镜 隐私担忧
百灵大模型正式发布 Ling-2.6-flash 1/10 成本跑出超高性能
Meta内部文件曝光:AI被允许与未成年人"性感对话"引发轩然大波
