②机器学习之自然语言处理——基于TfidfVectorizer和CountVectorizer及word2vec构建词向量矩阵(代码+原理)

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
简介: 机器学习之自然语言处理——基于TfidfVectorizer和CountVectorizer及word2vec构建词向量矩阵(代码+原理)

代码实操

import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_extraction.text import CountVectorizer
text = ["今天 上 NLP 课程",  "今天 的 课程 有 意思" ,  "数据 课程 也有 意思"]
vocabulary = ["今天", "上" , "NLP", "课程", "的", "有", "意思",  "数据", "也"]
contv = CountVectorizer(vocabulary=vocabulary, stop_words=[], min_df=0, token_pattern='(?u)\\b\\w*\\w*\\b', lowercase=False) # 实例化
contv1 = contv.fit_transform(text)  # 训练-传入数据
print(contv1)   #调取结果
print(contv1.toarray())
print(contv.vocabulary_)




{'今天': 0, '上': 1, 'NLP': 2, '课程': 3, '的': 4, '有': 5, '意思': 6, '数据': 7, '也': 8}
  (0, 0)  1
  (0, 1)  1
  (0, 2)  1
  (0, 3)  1
  (1, 0)  1
  (1, 3)  1
  (1, 4)  1
  (1, 5)  1
  (1, 6)  1
  (2, 3)  1
  (2, 6)  1
  (2, 7)  1
[[1 1 1 1 0 0 0 0 0]
 [1 0 0 1 1 1 1 0 0]
 [0 0 0 1 0 0 1 1 0]]



一般要设置的参数是:ngram_range,max_df,min_df,max_features等,具体情况具体分析


这里对参数进行一个详细的说明:



Word2Vec

它是一种语言模型,使用向量表示单词,向量空间表示句子。在将单词转化为向量之后,句子也就可以被表示成一个矩阵,这样就把现实中的语言成功转化成了数字。


它是一种词嵌入模型,简单来说,就是可以通过训练词嵌入模型将文本由原来的高维表示形式转化为低维表示形式,每一个维度代表着当前单词与其它单词在该维度下的不同,多个维度的数共同来表示这个单词。


word2vec是基于one-hot词向量进行的转化,one-hot是把每一个词都表示成(0,0,1,…,0,0,…)的形式,不仅在文字量巨大时会造成数据灾难,而且在多个词进行比较时效果一般。

image.png


image.png


Word2vec 的优缺点


优点:


由于 Word2vec 会考虑上下文,跟之前的 Embedding 方法相比,效果要更好(但不如 18 年之后的方法)

比之前的 Embedding方 法维度更少,所以速度更快

通用性很强,可以用在各种 NLP 任务中


缺点:


由于词和向量是一对一的关系,所以多义词的问题无法解决。

Word2vec 是一种静态的方式,虽然通用性强,但是无法针对特定任务做动态优化


word2vec更多学到的是具备相似上下文的词,学习的向量和真正语义还有差距。比如 “他的技术水平很好”,“他的技术水平很差”相似度也很高。


所以在使用情感分析的时候,一般不是很推荐word2vec进行分析和研究


代码案例

from gensim.models import Word2Vec
word2vec_model = Word2Vec(cutWords_list, 
                          vector_size=100,  # 向量长度
                          epochs=10,        # 训练批次
                          min_count=20      # 忽略词频数少于20的词
                         )



调用Word2Vec模型对象的wv.most_similar方法查看与摄影含义最相近的词。


  • wv.most_similar方法有2个参数,第1个参数是要搜索的词,第2个关键字参数topn数据类型为正整数,是指需要列出多少个最相关的词汇,默认为10,即列出10个最相关的词汇。
  • wv.most_similar方法返回值的数据类型为列表,列表中的每个元素的数据类型为元组,元组有2个元素,第1个元素为相关词汇,第2个元素为相关程度,数据类型为浮点型。


image.png


有需要可以点击此处下载

image.png


总结

如何将文本转换为数值矩阵,目前在自然语言处理当中有很多的方法,构建词向量,每一种的方法都有优缺点,我们在使用这类方法的时候,需要结合自己的实际情况进行比对,最终才能得到最佳的模型。


image.png

相关文章
|
4天前
|
机器学习/深度学习 自然语言处理 语音技术
探索机器学习中的自然语言处理技术
【10月更文挑战第38天】在本文中,我们将深入探讨自然语言处理(NLP)技术及其在机器学习领域的应用。通过浅显易懂的语言和生动的比喻,我们将揭示NLP技术的奥秘,包括其工作原理、主要任务以及面临的挑战。此外,我们还将分享一些实用的代码示例,帮助您更好地理解和掌握这一技术。无论您是初学者还是有经验的开发者,相信您都能从本文中获得宝贵的知识和启示。
15 3
|
3月前
|
机器学习/深度学习 自然语言处理 算法
【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 历史笔试详解
文章汇总并解析了百度机器学习/数据挖掘工程师/自然语言处理工程师历史笔试题目,覆盖了多分类任务激活函数、TCP首部确认号字段、GMM-HMM模型、朴素贝叶斯模型、SGD随机梯度下降法、随机森林算法、强连通图、红黑树和完全二叉树的高度、最长公共前后缀、冒泡排序比较次数、C4.5属性划分标准、语言模型类型、分词算法、贝叶斯决策理论、样本信息熵、数据降维方法、分箱方法、物理地址计算、分时系统响应时间分析、小顶堆删除调整等多个知识点。
42 1
【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 历史笔试详解
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
打造个性化新闻推荐系统:机器学习与自然语言处理的结合Java中的异常处理:从基础到高级
【8月更文挑战第27天】在信息过载的时代,个性化新闻推荐系统成为解决信息筛选难题的关键工具。本文将深入探讨如何利用机器学习和自然语言处理技术构建一个高效的新闻推荐系统。我们将从理论基础出发,逐步介绍数据预处理、模型选择、特征工程,以及推荐算法的实现,最终通过实际代码示例来展示如何将这些理论应用于实践,以实现精准的个性化内容推荐。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习在自然语言处理中的应用
【8月更文挑战第22天】本文将深入探讨机器学习技术如何革新自然语言处理领域,从基础概念到高级应用,揭示其背后的原理和未来趋势。通过分析机器学习模型如何处理、理解和生成人类语言,我们将展示这一技术如何塑造我们的沟通方式,并讨论它带来的挑战与机遇。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习中的自然语言处理技术
【7月更文挑战第40天】 随着人工智能的迅猛发展,自然语言处理(NLP)作为机器学习领域的重要分支,正逐渐改变我们与机器的互动方式。本文将深入探讨NLP的核心概念、关键技术以及在现实世界中的应用案例。我们将从基础原理出发,解析NLP如何处理和理解人类语言,并讨论最新的模型和算法如何提升NLP的性能。最后,通过几个实际应用场景的分析,展望NLP在未来可能带来的变革。
|
3月前
|
自然语言处理
【NLP】如何实现快速加载gensim word2vec的预训练的词向量模型
本文探讨了如何提高使用gensim库加载word2vec预训练词向量模型的效率,提出了三种解决方案:保存模型以便快速重新加载、仅保存和加载所需词向量、以及使用Embedding工具库代替word2vec原训练权重。
211 2
|
4月前
|
机器学习/深度学习 自然语言处理 数据挖掘
探索机器学习中的自然语言处理技术
【7月更文挑战第31天】本文深入探讨了自然语言处理(NLP)在机器学习领域的应用,包括其定义、重要性以及面临的挑战。文章进一步介绍了NLP的基本任务和常用技术,并通过实例展示了如何利用这些技术解决实际问题。最后,本文展望了NLP的未来发展方向和潜在影响。
|
3月前
|
机器学习/深度学习 自然语言处理 算法
【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 2023届校招笔试详解
百度2023届校招机器学习/数据挖掘/自然语言处理工程师笔试的题目详解
80 1
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习中的自然语言处理技术
【7月更文挑战第25天】自然语言处理(NLP)是机器学习领域的一个重要分支,它致力于让计算机能够理解、解释和生成人类语言。本文将深入探讨NLP的基本原理、关键技术以及在现实世界中的应用实例,旨在为读者提供一个全面的NLP技术概览,并展示其在现代科技中的重要性和应用前景。
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–4 机器学习LGB 方案
在讯飞英文学术论文分类挑战赛中使用LightGBM模型进行文本分类的方案,包括数据预处理、特征提取、模型训练及多折交叉验证等步骤,并提供了相关的代码实现。
48 0

热门文章

最新文章