2020-4-27学习记录

1.不同方式训练出来的词向量哪个效果会更好?

 

就上面的word和word+ngram,这能有什么区别呢?哪个效果会更好呢?

我就先用这个最简单的了,word,量比较少。

 

 

2.textRank基本原理

https://blog.csdn.net/wotui1842/article/details/80351386 待看

3.bert中怎么使用词向量呢?

先预加载一下,

4.加载预训练好的词向量

import gensim
# 导入模型  
model = gensim.models.word2vec.Word2Vec.load('sgns.weibo.word') 

# 返回一个词 的向量:
print(model[''])

 

首先尝试了上面这样加载,但是因为并不是使用save保存的bin文件,所以出现下面错误:

UnpicklingError: could not find MARK

https://stackoverflow.com/questions/44022180/unpickling-error-while-using-word2vec-load,这里面提到说要配套使用,文件要是model.bin这样。

https://blog.csdn.net/u010700066/article/details/83070102 这个讲了Word2VecKeyedVectors,蛮不错的!

忽然有一点懵。。。

 

上面的保存和加载方式是针对模型,下面的是针对单词向量,这两个类是不同的。

针对Word2VecKeyedVectors提到了,有一个属性wv:

model_w2v.wv.most_similar("民生银行")  # 找最相似的词
model_w2v.wv.get_vector("民生银行")  # 查看向量
model_w2v.wv.syn0  #  model_w2v.wv.vectors 一样都是查看向量
model_w2v.wv.vocab  # 查看词和对应向量
model_w2v.wv.index2word  # 每个index对应的词

 

但是我跑之后会出现以下警告:

DeprecationWarning: Call to deprecated `wv` (Attribute will be removed in 4.0.0, use self instead).

所以就直接去掉wv即可,直接用:

model.index2entity[0]
n(model.index2entity)#195202个词

 

5.jieba 初次尝试

import jieba
tt="2020年的第一天发烧,姨妈来难受???"
text=jieba.cut(tt)
text
#<generator object Tokenizer.cut at 0x7fd8e1757f50>
#text是一个生成器

words=[t for t in text]
words
#Building prefix dict from the default dictionary ...
#Dumping model to file cache /tmp/jieba.cache
#Loading model cost 0.694 seconds.
#Prefix dict has been built successfully.
['2020', '', '', '第一天', '发烧', '', '姨妈', '', '难受', '?', '?', '?']

 

分的还不错呢!

6.word2vec 如何处理未登录词

https://www.zhihu.com/question/308543084 待看

但是我目前的一个小问题是,如果我的词没有在vocab中,那这个id要映射为多少呢?这个vocab中是否有UNK呢?对于英文来说是UNK,但是对于中文来说,由哪个来表示未登录词呢?

等一下再来处理吧。

https://www.jianshu.com/p/ce630c198762

7.GMM-UBM模型

https://blog.csdn.net/weixin_38206214/article/details/81084456

主要思想就是,先用一些其他背景数据去训练一个UBM,它是一个GMM模型,然后再用目标数据去和UBM计算出新的参数,将新参数与UBM融合。

 

4-29日————————————————

1.raise NotImplementedError

在用户定义的基类中,当抽象方法要求派生类覆盖该方法时,或者在开发该类以指示仍需要添加实际实现时,应引发此异常。

https://stackoverflow.com/questions/44315961/when-to-use-raise-notimplementederror/44316202

就是对于基类中的方法,如果要子类去实现,那么就可以加上这一句。

2.inspect.getfullargspec

https://blog.csdn.net/nmgcfyxl/article/details/102642818 原来它可以获取到模型的参数啊。

from inspect import getfullargspec

class A:
    def __init__(self, a: int, b, c, d=20, **kwargs1) -> None:
        ...

print(getfullargspec(A.__init__))#这里使用时后面是没有()的
#输出:
FullArgSpec(args=['self', 'a', 'b', 'c', 'd'], varargs=None, varkw='kwargs1', defaults=(20,), kwonlyargs=[], 
kwonlydefaults=None, annotations={'return': None, 'a': <class 'int'>})

 

args就可以获取到函数的参数了。

4.python tarfile 包

https://www.cnblogs.com/shona/p/11953678.html

主要是处理tgz压缩包等,可以解压也可以压缩文件。具体待学习. 

 6.np.ceil()向上取整

import numpy as np
 
n = np.array([-1.7, -2.5, -0.2, 0.6, 1.2, 2.7, 11])
 
ceil = np.ceil(n)
print(ceil)  # [ -1.  -2.  -0.   1.   2.   3.  11.]

 

https://blog.csdn.net/tz_zs/article/details/80775256

还有四舍五入around,向下取整floor,where条件选取。

 

posted @ 2020-04-28 09:34  lypbendlf  阅读(564)  评论(0)    收藏  举报