向量化是使用一套统一的标准打分,比如填写表格:年龄、性别、性格、学历、经验、资产列表,并逐项打分,分数范围[-1,1],用一套分值代表一个人,就叫作向量化,虽然不能代表全部,但至少是个量度。因此,可以说,万物皆可向量化。

词向量

同理,词也可以向量化word2vec(word to vector),可以从词性、感情色彩、程度等等方面量度,用一套分值代表一个词,从而词之间可以替换,比较。词与向量间的转换过程就叫作词的向量化。与人为评分不同的是,词向量一般通过训练生成,其每一维量度的作用也并不明确。词向量化常用于提取词的特征,提取后的特征再代入模型计算。

词向量如下图所示:

图片出自 https://jalammar.github.io/illustrated-word2vec/

上图把每个单词映射到50个维度(用50种特征表示一个词),每个维度在[-1,1]范围内取值,上图中1为红色,0为白色,-1为蓝色,中间各值为过渡色,从图中可以直观看到词间的相似度。 获取了词向量之后,除了可以计算词间或句间相似度,查找近义词,代入模型以外,还可以做组合词义,以及排除某种含义,如下图所示:

图片出自 https://jalammar.github.io/illustrated-word2vec/

Gensim

Gensim是一款常用的自然语言处理工具,提供Python三方工具包,常用于从文本中提取特征,提供TF-IDF,LSA,LDA,word2vec等功能。开发者可以用它训练自己的词向量,也可以使用他人训练好的词向量。

使用Gensim支持用数据训练词向量,网上例程很多。其原理是一种无监督学习,通过代入大量文章,根据各个词与其上下文关系,挖掘词义。一般自然语言处理的深度学习模型的第一层都是词向量化,因此,除了使用Gensim训练,还可以从其它模型中导出词向量。需要注意的是:高相似度表示两个词通常可以互换。并不一定是同义词,很多情况下,替换成反意词后句子也能读通,但含义完全不同。

腾讯词向量

腾讯词向量提供800多万中文词条,每个词条展开成200维向量,解压后16G。它使用Directional Skip-Gram(Skip-Gram的改进版)训练而成,可使用Ginsim调用。相对于传统的同义词词林和词表,可以说非常先进了。它提供的是通常意义上的词义,但对于具体任务不是很完美。可从以下网址下载腾讯词向量: https://ai.tencent.com/ailab/nlp/embedding.html 下面是官方示例。

那么何时选择腾讯词向量,何时又需要自己训练模型计算词向量?二者各有利弊,腾讯词向量体量大,速度慢,但涵盖的词和短语非常丰富,准确率也比较高。如果使用模型训练,则可针对某一目标训练,比如判别感情色彩时,某个词的表征和通常情况下的表征很可能有所不同,模型训练需要有足够的训练集,还要考虑模型支持词表(以字为单位还是以词为单位,如何分词),向量维度等等问题,难度更大,选择应视情况而定。

示例:

找近义词

from gensim.models import KeyedVectors
file = '/exports/nlp/Tencent_AILab_ChineseEmbedding.txt'
wv_from_text = KeyedVectors.load_word2vec_format(file, binary=False) # 加载时间比较长
wv_from_text.init_sims(replace=True)
word = '膝关节置换手术'
if word in wv_from_text.wv.vocab.keys():vec = wv_from_text[word]print(wv_from_text.most_similar(positive=[vec], topn=20))
else:print("没找到")

其运行结果如下图所示,看似比较合理。

有一些专有名词或者短语,可能没收录在词库中,这种情况下可以使用先拆词,对其中各个词分别映射向量,然后取均值的方法计算。

计算词距

print(wv_from_text.distance("喜欢", "讨厌")) # 0.299
print(wv_from_text.distance("喜欢", "爱")) # 0.295
print(wv_from_text.distance("喜欢", "西瓜")) # 0.670

这里指的距离,并不是近义词或者反义词,只是句中该处是否可被另一个词替换的可能性

计算字串距离

print(wv_from_text.n_similarity(['风景', '怡人'],['山美','水美'])) # 0.60
print(wv_from_text.n_similarity(['风景', '怡人'],['上','厕所'])) # 0.43

lda 可以处理中文_自然语言处理——使用词向量(腾讯词向量)相关推荐

  1. lda 可以处理中文_用python处理文本数据

    用python处理文本数据 Q:这篇文章主要讲什么? A:这篇文章主要讨论如何用python来做一些简单的文本处理--文本相似度比较. 谈起python的自然语言处理,肯定会让人想起NLTK.不过上面 ...

  2. lda 可以处理中文_对京东评论进行情感分析—LDA模型

    根据python制作词云图和python爬取京东评论,我们对商品评论做进一步分析. 一.情感分析的用途 首先,我们先看情感分析这个概念,百度上基本都是文本情感分析的介绍,大概意识是通过一些文本来分析其 ...

  3. 自然语言处理——使用词向量(腾讯词向量)

    向量化是使用一套统一的标准打分,比如填写表格:年龄.性别.性格.学历.经验.资产列表,并逐项打分,分数范围[-1,1],用一套分值代表一个人,就叫作向量化,虽然不能代表全部,但至少是个量度.因此,可以 ...

  4. python统计词频瓦尔登湖_自然语言处理之中文分词器-jieba分词器详解及python实战...

    (转https://blog.csdn.net/gzmfxy/article/details/78994396) 中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,在进行中文自 ...

  5. nlp自然语言处理_自然语言处理(NLP):不要重新发明轮子

    nlp自然语言处理 介绍 (Introduction) Natural language processing (NLP) is an intimidating name for an intimid ...

  6. 自然语言处理综述_自然语言处理

    自然语言处理综述 Aren't we all initially got surprised when smart devices understood what we were telling th ...

  7. bert 多义词_自然语言处理:Bert及其他

    以下内容主要参考了文末列出的参考文献,在此表示感谢! 2018年被认为是NLP技术的new era的开始.在这一年,提出了多种有创新性的技术,而且最后的集大成者Bert在NLP的多项任务中屠榜,造成的 ...

  8. NLP入门_自然语言处理_AI分支

    NLP (Natural Language Processing) 是人工智能(AI)的一个子领域. 自然语言是人类智慧的结晶,自然语言处理是人工智能中最为困难的问题之一,而对自然语言处理的研究也是充 ...

  9. python 分词字典的词性_自然语言处理基础技术之分词、向量化、词性标注

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:段石石 前言 前段时间,因为项目需求, 开始接触了NLP,有感自己不是科班出身,很多东西理解不深,于是花时间再读了一些NLP的经典教程的 ...

最新文章

  1. Aggregation,Composition和Dependency
  2. Bundler 的作用及原理
  3. input file 获取不到Request.Files 解决办法
  4. 【解决方法】Panda read_csv()把第一行的数据变成了列名,怎么处理
  5. python3 和python2文件相互转换
  6. [收藏]REST -维基百科
  7. leetcode 234. 回文链表(快慢指针+链表倒置)
  8. 多路查找树之2-3树的插入原理
  9. 使用 FOR XML语句 将查询结构作为XML格式返回【转】
  10. Android省电妙招
  11. 第十八章——基于策略的管理(1)——评估数据库属性
  12. [译] ASP.NET 生命周期 – ASP.NET 请求生命周期(二)
  13. 水稻PHP基因,科学网—和驯化相关的水稻基因 - 闫双勇的博文
  14. 设计模式 (十六) 命令模式
  15. Protel 99se 快捷键
  16. Mybatis 传入多个参数查询数据 (3种方法)
  17. 服务器系统封装iso,轻松几步 封装Windows系统镜像
  18. Markdown个人简历模板
  19. 嗑药简史:咖啡上瘾,喝还是不喝?
  20. 网易博客搬家至CSDN博客指南

热门文章

  1. 阿里云服务器的windows和linux系统怎么选
  2. C# 图片与byte[]转换
  3. 微信里如何发微博的表情?
  4. 宋鸿兵在《货币战争5》中谈到的美国医疗
  5. Chart.js给图片数据动态赋值
  6. 整理总结:深入浅出统计学——排列与组合
  7. 大数据与人工智能人脸识别
  8. 简转繁等中文转换(Golang)
  9. nginx 域名解析
  10. Android MD5加密法