word2vec介绍
word2vec官网:https://code.google.com/p/word2vec/
简言之:词向量表示法让相关或者相似的词,在距离上更接近。
具体使用(处理中文)
收集语料
本文:亚马逊中文书评语料,12万+句子文本。
语料以纯文本形式存入txt文本。
注意:
理论上语料越大越好
理论上语料越大越好
理论上语料越大越好
重要的事情说三遍。
因为太小的语料跑出来的结果并没有太大意义。
分词
中文分词工具还是很多的,我自己常用的:
- 中科院NLPIR
- 哈工大LTP
- 结巴分词
注意:分词文本将作为word2vec的输入文件。
分词文本示例
word2vec使用
python,利用gensim模块。
win7系统下在通常的python基础上gensim模块不太好安装,所以建议使用anaconda,具体参见: python开发之anaconda【以及win7下安装gensim】
直接上代码—— #!/usr/bin/env python # -*- coding: utf-8 -*- """ 功能:测试gensim使用,处理中文语料 时间:2016年5月21日 20:49:07 """ from gensim.models import word2vec import logging # 主程序 logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) sentences = word2vec.Text8Corpus(u"C:\\Users\\lenovo\\Desktop\\word2vec实验\\亚马逊中文书评语料.txt") # 加载语料 model = word2vec.Word2Vec(sentences, size=200) # 默认window=5 # 计算两个词的相似度/相关程度 y1 = model.similarity(u"不错", u"好") print u"【不错】和【好】的相似度为:", y1 print "--------\n" # 计算某个词的相关词列表 y2 = model.most_similar(u"书", topn=20) # 20个最相关的 print u"和【书】最相关的词有:\n" for item in y2: print item[0], item[1] print "--------\n" # 寻找对应关系 print u"书-不错,质量-" y3 = model.most_similar([u'质量', u'不错'], [u'书'], topn=3) for item in y3: print item[0], item[1] print "--------\n" # 寻找不合群的词 y4 = model.doesnt_match(u"书 书籍 教材 很".split()) print u"不合群的词:", y4 print "--------\n" # 保存模型,以便重用 model.save(u"书评.model") # 对应的加载方式 # model_2 = word2vec.Word2Vec.load("text8.model") # 以一种C语言可以解析的形式存储词向量 model.save_word2vec_format(u"书评.model.bin", binary=True) # 对应的加载方式 # model_3 = word2vec.Word2Vec.load_word2vec_format("text8.model.bin", binary=True) if __name__ == "__main__": pass
运行结果
【不错】和【好】的相似度为: 0.790186663972
--------和【书】最相关的词有:
书籍 0.675163209438
书本 0.633386790752
确实 0.568059504032
教材 0.551493048668
正品 0.532882153988
没得说 0.529319941998
好 0.522468209267
据说 0.51004421711
图书 0.508755385876
挺 0.497194319963
新书 0.494331330061
很 0.490583062172
不错 0.476392805576
正版 0.460161447525
纸张 0.454929769039
可惜 0.450752496719
工具书 0.449723362923
的确 0.448629021645
商品 0.444284260273
纸质 0.443040698767
--------书-不错,质量-
精美 0.507958948612
总的来说 0.496103972197
材质 0.493623793125
--------不合群的词: 很
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍pytorch中的embedding词向量的使用方法,包括了pytorch中的embedding词向量的使用方法的使用技巧和注意事项,需要的朋友参考一下 Embedding 词嵌入在 pytorch 中非常简单,只需要调用 torch.nn.Embedding(m, n) 就可以了,m 表示单词的总数目,n 表示词嵌入的维度,其实词嵌入就相当于是一个大矩阵,矩阵的每一行表示一个单词。
对语料库切词 因为word2vec的输入需要是切好词的文本文件,但我们的影视剧字幕语料库是回车换行分隔的完整句子,所以我们先对其做切词,有关中文切词的方法请见《教你成为全栈工程师(Full Stack Developer) 三十四-基于python的高效中文文本切词》,为了对影视剧字幕语料库切词,我们来创建word_segment.py文件,内容如下: # coding:utf-8 import
问题内容: 我的目标是为每个文档建立一个索引,将其按单词ngram(uni,bi和tri)分解,然后捕获所有这些单词ngram的术语向量分析。Elasticsearch有可能吗? 例如,对于包含“红色汽车行驶”的文档字段。我将能够获得信息: 提前致谢! 问题答案: 假设您已经了解术语向量API,则可以在索引时间应用带状令牌过滤器,以将这些术语彼此独立地添加到令牌流中。 设置为1(而不是默认值2),
自然语言是一套用来表达含义的复杂系统。在这套系统中,词是表义的基本单元。顾名思义,词向量是用来表示词的向量,也可被认为是词的特征向量或表征。把词映射为实数域向量的技术也叫词嵌入(word embedding)。近年来,词嵌入已逐渐成为自然语言处理的基础知识。 为何不采用one-hot向量 我们在“循环神经网络的从零开始实现”一节中使用one-hot向量表示词(字符为词)。回忆一下,假设词典中不同词
问题内容: 我正在尝试学习如何使用NLTK标记西班牙语单词。 从nltk的书中,使用它们的示例标记英语单词非常容易。因为我是nltk和所有语言处理的新手,所以我对如何进行程序感到很困惑。 我已经下载了语料库。有没有办法指定一个语料库。我看了看文档,没有发现任何建议。我觉得我缺少一些关键概念。我是否需要在cess_esp语料库中手动标记文本中的单词?(通过手动,我的意思是标记我的情感,然后再次运行语
NLTK语料库 NLTK包含多种语料库,举一个例子:Gutenberg语料库,执行: nltk.corpus.gutenberg.fileids() 返回Gutenberg语料库的文件标识符 [u'austen-emma.txt', u'austen-persuasion.txt', u'austen-sense.txt', u'bible-kjv.txt', u'blake-poems.tx