gensim

机器学习:gensim之Word2Vec 详解

我只是一个虾纸丫 提交于 2020-04-24 23:06:11
一 前言 Word2Vec是同上一篇提及的PageRank一样,都是Google的工程师和机器学习专家所提出的的;在学习这些算法、模型的时候,最好优先去看Google提出者的原汁Paper和Project,那样带来的启发将更大。因为创造者对自己所创之物的了解程度优于这世上的绝大部分者,这句话,针对的是爱看博文的读者,like me。 另外,补充几句。 1.防止又被抄袭,故关键笔记以图贴之。 2.标题前带阿拉伯数字标号的内容,便是使用Gensim的Word2Vec模型过程中的完整流程序号,通常也较为常用且重要。 二 鸣谢 感谢如下文章/论文的详细描述,它们亦是本文的主要测试依据,尤其需要感谢最后四篇博文的精彩解说。 Word2Vec Introduction - Google - [推荐] Gensim - Word2Vec - Github Gensim - Github 基于 Gensim 的 Word2Vec 实践 翻译Gensim的word2vec说明 Gensim之Word2Vec使用手册 - [推荐] word2vec词向量中文语料处理(python gensim word2vec总结) 三 Word2Vec 概要 重要API/类 gensim.models.KeyedVectors gensim.models.word2vec gensim.models

文本情感分析(二):基于word2vec、glove和fasttext词向量的文本表示

泪湿孤枕 提交于 2020-04-22 03:54:13
上一篇博客用词袋模型,包括词频矩阵、Tf-Idf矩阵、LSA和n-gram构造文本特征,做了Kaggle上的电影评论情感分类题。 这篇博客还是关于文本特征工程的,用词嵌入的方法来构造文本特征,也就是用word2vec、glove和fasttext词向量进行文本表示,训练随机森林分类器。 一、训练word2vec和fasttext词向量 Kaggle情感分析题给出了三个数据集,一个是带标签的训练集,共25000条评论,一个是测试集,无标签的,用来做预测并提交结果,这两个数据集是上一篇文章里我们用过的。 此外还有一个无标签的数据集,有50000条评论,不用太可惜了。我们可以想到,用无标签的数据可以训练word2vec词向量,进行词嵌入。与词袋模型相比,word2vec词向量能解决文本表示维度过高的问题,并且把单词之间的位置信息考虑进去了。或许,用word2vec词向量进行文本表示,能取得更好的预测结果。 另外,我们也可以训练fasttext词向量。fasttext这个模型就是为了文本分类而造出来的,词向量是其副产品,它的结构和word2vec的CBOW模型的结构类似,但是输入是整篇文本而不是上下文信息,而且用字符级别的n-gram来得到单词的词向量表示,捕捉有相同后缀的词的语义关联。 gensim中集成了训练word2vec词向量和fasttext词向量的包,用法非常类似

文本分类模型第三弹:BoW(Bag of Words) + TF-IDF + LightGBM

青春壹個敷衍的年華 提交于 2020-04-15 09:35:52
【推荐阅读】微服务还能火多久?>>> 一、前言 本文是文本分类模型的第三弹,利用词袋模型(BoW),词频逆文档频率(TF-IDF)与 LightGBM 模型进行文本分类。 原本计划的第三弹内容为 TextCNN 网络,介于最近刚刚利用 LightGBM 完成了一个简单的文本分类的任务,就趁热记录一下,作为第三弹的内容。 这里是文本分类系列: 文本分类模型第一弹:关于Fasttext,看这一篇就够了 文本分类模型第二弹:HAN(Hierarchy Attention Network) 文本分类模型第三弹:BoW(Bag of Words) + TF-IDF + LightGBM 二、相关论文及理论 1.LightGBM 这里是 LightGBM 提出的论文《 LightGBM: A Highly Efficient Gradient Boosting Decision Tree 》,LightGBM 本质上也是 梯度提升树(GBDT)的优化模型,GBDT 的本质是回归树模型,在做分类任务时,通过“回归相应类别”的概率值,来曲线完成分类任务。LightGBM 与上一代 kaggle 神器 Xgboost 相比,由于采用了直方图算法(用于特征处理),和 Leaf-wise 的树分裂方法(用于模型构建),模型准确度更高,训练耗时更低。其不仅应用于传统的机器学习回归及二分类,多分类任务,在

NLP python库 nltk 安装

て烟熏妆下的殇ゞ 提交于 2020-04-10 15:11:19
使用python进行自然语言处理,有一些第三方库供大家使用: ·NLTK(Python自然语言工具包)用于诸如标记化、词形还原、词干化、解析、POS标注等任务。该库具有几乎所有NLP任务的工具。 ·Spacy是NLTK的主要竞争对手。这两个库可用于相同的任务。 ·Scikit-learn为机器学习提供了一个大型库。此外还提供了用于文本预处理的工具。 ·Gensim是一个主题和向量空间建模、文档集合相似性的工具包。 ·Pattern库的一般任务是充当Web挖掘模块。因此,它仅支持自然语言处理(NLP)作为辅助任务。 ·Polyglot是自然语言处理(NLP)的另一个Python工具包。它不是很受欢迎,但也可以用于各种NLP任务。 先由nltk入手学习。 1. NLTK安装 简单来说还是跟python其他第三方库的安装方式一样,直接在命令行运行:pip install nltk 2. 运行不起来? 当你安装完成后,想要试试下面的代码对一段英文文本进行简单的切分: import nltk text=nltk.word_tokenize("PierreVinken , 59 years old , will join as a nonexecutive director on Nov. 29 .") print(text) 运行结果, 报错如下: ... raise LookupError

gensim.interfaces.TransformedCorpus - How use?

久未见 提交于 2020-04-10 03:33:52
问题 I'm relative new in the world of Latent Dirichlet Allocation. I am able to generate a LDA Model following the Wikipedia tutorial and I'm able to generate a LDA model with my own documents. My step now is try understand how can I use a previus generated model to classify unseen documents. I'm saving my "lda_wiki_model" with id2word =gensim.corpora.Dictionary.load_from_text('ptwiki_wordids.txt.bz2') mm = gensim.corpora.MmCorpus('ptwiki_tfidf.mm') lda = gensim.models.ldamodel.LdaModel(corpus=mm,

gensim.interfaces.TransformedCorpus - How use?

雨燕双飞 提交于 2020-04-10 03:32:49
问题 I'm relative new in the world of Latent Dirichlet Allocation. I am able to generate a LDA Model following the Wikipedia tutorial and I'm able to generate a LDA model with my own documents. My step now is try understand how can I use a previus generated model to classify unseen documents. I'm saving my "lda_wiki_model" with id2word =gensim.corpora.Dictionary.load_from_text('ptwiki_wordids.txt.bz2') mm = gensim.corpora.MmCorpus('ptwiki_tfidf.mm') lda = gensim.models.ldamodel.LdaModel(corpus=mm,

gensim.interfaces.TransformedCorpus - How use?

守給你的承諾、 提交于 2020-04-10 03:31:49
问题 I'm relative new in the world of Latent Dirichlet Allocation. I am able to generate a LDA Model following the Wikipedia tutorial and I'm able to generate a LDA model with my own documents. My step now is try understand how can I use a previus generated model to classify unseen documents. I'm saving my "lda_wiki_model" with id2word =gensim.corpora.Dictionary.load_from_text('ptwiki_wordids.txt.bz2') mm = gensim.corpora.MmCorpus('ptwiki_tfidf.mm') lda = gensim.models.ldamodel.LdaModel(corpus=mm,

Python数据预处理:机器学习、人工智能通用技术(1)

僤鯓⒐⒋嵵緔 提交于 2020-04-06 04:54:40
Python数据预处理:机器学习、人工智能通用技术 白宁超 2018年12月24日17:28:26 摘要: 大数据技术与我们日常生活越来越紧密,要做大数据,首要解决数据问题。原始数据存在大量不完整、不一致、有异常的数据,严重影响到数据建模的执行效率,甚至可能导致模型结果的偏差,因此要数据预处。数据预处理主要是将原始数据经过文本抽取、数据清理、数据集成、数据处理、数据变换、数据降维等处理后,不仅提高了数据质量,而且更好的提升算法模型性能。数据预处理在数据挖掘、自然语言处理、机器学习、深度学习算法中起着重要的作用。( 本文原创,转载必须注明出处 .) 1 什么是数据预处理 数据预处理简而言之就是将 原始数据 装进一个 预处理的黑匣子 之后,产生出 高质量数据 用来适应相关技术或者算法模型。为了大家更明确的了解数据预处理,我们举个新闻分类的例子: 将原始的数据直接进行分类模型训练,分类器准确率和召回率都比较低。因为我们原始数据存在很多干扰项,比如 的 , 是 等这些所谓停用词特征对分类起的作用不大,很难达到工程应用。 我们将原始数据放假预处理黑匣子后,会自动过滤掉干扰数据,并且还会按照规约的方法体现每个词特征的重要性,然后将词特征压缩变换在数值型矩阵中,再通过分类器就会取得不错的效果,可以进行工程应用。 总结 :数据预处理前的数据存在不完整、偏态、噪声、特征比重、特征维度、缺失值

word2vec gensim multiple languages

做~自己de王妃 提交于 2020-03-22 06:42:53
问题 This problem is going completely over my head. I am training a Word2Vec model using gensim. I have provided data in multiple languages i.e. English and Hindi. When I am trying to find the words closest to 'man', this is what I am getting: model.wv.most_similar(positive = ['man']) Out[14]: [('woman', 0.7380284070968628), ('lady', 0.6933152675628662), ('monk', 0.6662989258766174), ('guy', 0.6513140201568604), ('soldier', 0.6491742134094238), ('priest', 0.6440571546554565), ('farmer', 0

Is it possible to compute Document similarity for every document in an LDA corpus?

假如想象 提交于 2020-03-21 05:12:29
问题 I am going through this Notebook about LDA and Document Similarity: https://www.kaggle.com/ktattan/lda-and-document-similarity In this Notebook the Document similarity for a small set of documents gets computed however I want to compute the similarity for the whole corpus. Instead of using test_df like in the Notebook: new_bow = dictionary.doc2bow(test_df.iloc[random_article_index,7]) new_doc_distribution = np.array([tup[1] for tup in lda.get_document_topics(bow=new_bow)]) I want to use train