1. 简介

NLP 是 natural language processing 的三个英文词的首写字母,意思是自然语言处理。学习NLP,对于想直接应用在产品场景的,首先要弄懂word2vec,然后是 BERT 模型。那我们先来解释一下word2vec和BERT 模型。听完解释,初学者可能会觉得,怎么这么简单呢!

1.1 word2vec

word2vec 从 word to vector 来。word是词汇,比如 Elephant (大象),mouse (老鼠),dog (狗),pet dog (宠物犬),Lion (狮子)。vector 就是向量,就是带有方向的坐标。word2vec 就是将一个一个word 词汇转换为 坐标系上一个一个向量。

word2vec 其实就是一种技术,一种算法,将词汇word变成向量。比如狮子是一个向量,大象是一个向量,dog也是一个向量。通过word2vec,近似的动物和词汇会靠得近,距离近。形象的说,鳄鱼和狮子的向量靠得比狗的向量要近。狗和猫的向量靠得要比狗和老鼠的距离近。也就是说,这个word2vec 通过算法,将词汇相近意思或形态的靠得就近。

1.2 Bert模型

而BERT模型是也是通过某种算法训练出来的词汇的向量集。是现成可以用的模型,减少开发者大量的时间,精力和财力。

1.3  word2vec 和 BERT 不同

Word2Vec 将词汇转换成向量是和上下文无关的,也就是词汇在不同句子里,转换出的向量结果是不变的。BERT模型则不同,词汇转换为不同的向量,根据词汇的上下文不同而不同。BERT模型当然更胜一筹。

2. 深入浅出介绍

向量有什么用呢,可以计算啊!可以用数学公式计算啊!比如向量之间的夹角可以看出两个词汇之间的近似度。

解释到现在,初学者肯定要问,我想了解词汇和向量的关系,wod2vec 有哪些算法?如果您是有一定英文基础的,不妨看看这篇将计算机问题,变成浅显的文字解释。​​​​​​​这篇文章,写得非常棒,可能要VPN。也是笔者开始学习NLP的首篇文章。多看几遍。如果不愿意看英文,就看我的解释,虽然不会有英语原文那样深入浅出,但还是能应付一下。

NLP 基础和初学者进阶-LMLPHP

                                                                  图1

图1,我是根据某种算法,就是体积,凶残度将一些动物转换为向量。在脑子里,宠物狗跟大象差了老远,狼和老虎有点近似,老虎和狮子是非常近似。词和词的距离就是他们的相似度。有的word2vec的算法是词和词的向量的夹角成为相似度。

对于,想出略的看一下word2vec到底有几种算法,可以看这篇文章,可能也要VPN。我们不会展开对算法的解释,但初学者可以想象就是通过一些逻辑将词汇转换成向量。而有了向量,我们就可以作数学运算了。

import math
def distance2d(x1, y1, x2, y2):
    return math.sqrt((x1 - x2)**2 + (y1 - y2)**2)

                                                              图 2

def meanv(coords):
    # assumes every item in coords has same length as item 0
    sumv = [0] * len(coords[0])
    for item in coords:
        for i in range(len(item)):
            sumv[i] += item[i]
    mean = [0] * len(sumv)
    for i in range(len(sumv)):
        mean[i] = float(sumv[i]) / len(coords)
    return mean

                                                          图 3 

import numpy as np
from numpy import dot
from numpy.linalg import norm

# cosine similarity
def cosine(v1, v2):
    if norm(v1) > 0 and norm(v2) > 0:
        return dot(v1, v2) / (norm(v1) * norm(v2))
    else:
        return 0.0

                                                       图 4

读者可以展开丰富的想象,怎样计算一个句子的向量的平均值,两个向量之间夹角的cosine值,这些都可以作为词或句子的相似度计算。

3. 应用

有了相似度计算,

3.1 告警聚合

是不是把相似的zabbix告警聚合。

3.2 舆情分析

是不是可以通过爬虫把评论截下来,聚合,然后进行舆情分析,并可以对重要节点标记,谁可能是关键节点,波及率更广。这些都留给读者思考。我的第一阶段抛砖引玉就到这里。

4. 参考文献

1. https://gist.github.com/aparrish/2f562e3737544cf29aaf1af30362f469

2. https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/

                                         

11-10 13:40