Gensim的维基百科语料库中文词向量训练错误整理

文本挖掘实验维基百科语料库词向量训练中产生的问题整理,自己实验过程中产生的问题和老师的解答

问题一: AttributeError: ‘str’ object has no attribute 'decode这个错误。
这是因为 打开文件的编码没有指定,系统默认用‘gbk’编码,但实际上我们希望用utf-8编码 。因此需改写代码
在这里插入图片描述
即写文件的时候 指定编码格式。这是个常规问题,在写文件的时候最好都指定为 encoding=‘utf-8’

第二个问题:
File “process_wiki.py”, 1ine 35, in
wiki= WikiCorpus(inp, lemmatize=False, dictionary=0)
File “D:anaconda\lib\site-packages\gensim(corpora\wikicorpus. py”, line 613, in .init.'The lemmatize parameter is no longer supported.
MotImplementeadError: The 1emmatize parameter is no 1onger supported. If you need to lemmatize, use e.g.
<https 😕/github.
com/clips/patterm). Perform 1emmatization as part of your tokenization function and gass it as the tohenizer_func param.ter to this initializer.

在这里插入图片描述
问题表述的意思是 调用的包WikiCorpus 中不再需要申明参数 lemmatize=False。 因此改写代码 不申明这个参数即可
在这里插入图片描述
问题三:
Traceback (most recent call last) :
File “train_word2vec_model.py”, line 26,in
model = Word2Vec(sentences,size=200, window=5, min_count=5)TypeError: init() got an unexpected keyword argument ‘size’

在这里插入图片描述
这个问题原因在于安装的gensim版本不一样导致参数定义不一致,我的gensim版本是4.0.1,执行下面这句代码的时候会报错,下面这句代码适合3.8.3,应该没问题。需要改一下size为vector_size,iter改为epochs

model = Word2Vec(sentences, size=200, window=5, min_count=5, iter=20)
model = Word2Vec(sentences, vector_size=50, window=5, min_count=5, epochs=20)

问题四:在问题三的基础上改了之后再运行,出现了MemoryError错误
在这里插入图片描述
注意:我是以下原因的解决方法都试过了,还是出现问题四的错误,最后老师发了训练好的模型,我放弃了,如果有解决了这个问题的小伙伴希望交流一下。
可能的原因:
1:输入的数据不是处理好的分词

**2:memory error 一般是内存不够用了,检查python版本是不是64位的,检查操作系统是不是64位的。打开任务管理器,检查代码跑起来是不是爆内存
在这里插入图片描述

**3:将 vector_size 设置的小一些,比如100或者50
4:检查gensim版本,不同版本参数不一样!!!
5:尝试使用下面的代码
model = Word2Vec(sentences, size=200, window=5, min_count=5,
workers=multiprocessing.cpu_count())

model = Word2Vec(sentences, size=200, window=5, min_count=5,
             workers=multiprocessing.cpu_count())
在这里插入代import multiprocessing
import logging
import os.path
import sys
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
 
if __name__ == '__main__':
    program = os.path.basename(sys.argv[0])
    logger = logging.getLogger(program)

    logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
    logging.root.setLevel(level=logging.INFO)
    logger.info("running %s" % ' '.join(sys.argv))

    sentences = LineSentence("wiki.zh.text.jian.seg")

    #outp2 = sys.argv[1:4]
 
    # model = Word2Vec(sentences, size=200, window=5, min_count=5,
    #         workers=multiprocessing.cpu_count())
    model = Word2Vec(sentences, size=200, window=5, min_count=5, iter=20)
    #model = Word2Vec(sentences, vector_size=200, window=5, min_count=5, epochs=20)
    outp1 = "word2vec_200.model"
    # trim unneeded model memory = use(much) less RAM
    #model.init_sims(replace=True)
    model.save(outp1)
    #model.wv.save_word2vec_format(outp2, binary=False)
码片

问题五: pycharm 运行test.py 时爆内存(memory error),那么试着在load 模型后加入这样一句话 model.init_sims(replace=True)
test.py文件增加一句

在这里插入图片描述

  • 20
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值