item2vec怎么使用gensim?还是直接word2vec

Janna ·
更新时间:2024-11-13
· 868 次阅读

推荐算法中的word2vec大牛直接用的该库源码,然后这个玩意目前我无法得到,所以有看到word2vec库,然而这个库不能直接在win下用pip安装,所以我先试试在服务器能不能行?

服务器是可以的,依赖环境Cython。不过有个警告,不知道会不会影响

>>> import word2vec /./anaconda3/lib/python3.7/site-packages/sklearn/externals/joblib/__init__.py:15: FutureWarning: sklearn.externals.joblib is deprecated in 0.21 and will be removed in 0.23. Please import this functionality directly from joblib, which can be installed with: pip install joblib. If this warning is raised when loading pickled models, you may need to re-serialize those models with scikit-learn 0.21+. warnings.warn(msg, category=FutureWarning) >>> import sklearn >>> sklearn.__version__ '0.22.1'

解释有点蒙蔽,没看懂啥意思。暂且不管。

然而似乎与大牛所讲的参数不同,不知道怎么对应上,于是考虑gensim的Word2Vec

Help on package word2vec: NAME word2vec PACKAGE CONTENTS _version io scripts_interface tests (package) utils word2vec_noop wordclusters wordvectors VERSION 0.10.2 FILE /home/./lib/python3.7/site-packages/word2vec/__init__.py

服务器也可直接安装gensim,然而参数与大牛的还是有区别,有点蒙蔽,怎么显示训练后的输出。待我搜索下其他资料,发现绝大多数还是用的gensim的模块。

下面继续熟悉model的一些函数,来源help给出的官方用法示例:例子1

from gensim.models import Word2Vec sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]] model = Word2Vec(min_count=1) model.build_vocab(sentences) # prepare the model vocabulary model.train(sentences, total_examples=model.corpus_count, epochs=model.iter) # train word

上面的sentences需要传入两次吗??需要创建vocabulary吗?我对比下不创建的结果是否一样,这里面还涉及到一个问题,也就是说同样的代码,不同次运行结果相同吗?结果是一样的,只要参数不变。这和深度学习不同,深度学习训练的模型,即便是参数都一样,网络参数也不同。

必须在训练前创建vocabulary,

RuntimeError: you must first build vocabulary before training the model

train不给sentence也不行。行吧,按照官方的来。

help model.train得到其参数:

train(sentences=None, corpus_file=None, total_examples=None, total_words=None, epochs=None, start_alpha=None, end_alpha=None, word_count=0, queue_factor=2, report_delay=1.0, compute_loss=False, callbacks=())

为了避免常见的错误,epoch必须显示给出,迭代的次数;

sentencs仍旧是列表迭代器,元素为str;corpus_file : str,语料文件地址两者只能有其一;

total_examples : int ,sentences的数量;total_words : int,sentences中词的个数;

start_alpha : float ,end_alpha : float,如果这俩提供了,将会替换Word2Vec初始化时给定的相应参数。

word_count : int,已经训练的词的个数,通常设置为0,因为训练了所有sentences中的词;

 report_delay : float在报告过程之前等待的时间。

官方例子2:初始化模型,并保存模型的参数,此时并没有保存语料,我绝对似乎不需要给定语料,但在加载模型后必须再次创建vocabulary,否则出错。另外,语料似乎保存了,因为没有给common_texts时模型比较小。给定后加载不需再次创建vocabulary

model = Word2Vec(common_texts, size=100, window=5, min_count=1, workers=4) model.save("word2vec.model") model2 = Word2Vec.load("./word2vec.model") model2.train(common_texts,total_examples=model.corpus_count, epochs=model2.iter)

另外有个函数别瞎用,坑人的函数,其实就是个路径,不过这个路径是放在C盘的temp文件夹下,真是坑爹。

get_tmpfile path = get_tmpfile("./wordvectors.kv") >>> path 'C:\\Users\\ggca1\\AppData\\Local\\Temp\\./wordvectors.kv'

例子3:多词表达,没懂啥意思

bigram_transformer = Phrases(common_texts) model = Word2Vec(bigram_transformer[common_texts], min_count=1)

另外有相关问题可以加入QQ群讨论,不设微信群

QQ群:868373192 

语音图像视频深度-学习群


作者:ImageVideoKing



gensim word word2vec

需要 登录 后方可回复, 如果你还没有账号请 注册新账号