• NLP 基础和初学者进阶


    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的首篇文章。多看几遍。如果不愿意看英文,就看我的解释,虽然不会有英语原文那样深入浅出,但还是能应付一下。

                                                                      图1

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

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

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

                                                                  图 2

    1. def meanv(coords):
    2. # assumes every item in coords has same length as item 0
    3. sumv = [0] * len(coords[0])
    4. for item in coords:
    5. for i in range(len(item)):
    6. sumv[i] += item[i]
    7. mean = [0] * len(sumv)
    8. for i in range(len(sumv)):
    9. mean[i] = float(sumv[i]) / len(coords)
    10. return mean

                                                              图 3 

    1. import numpy as np
    2. from numpy import dot
    3. from numpy.linalg import norm
    4. # cosine similarity
    5. def cosine(v1, v2):
    6. if norm(v1) > 0 and norm(v2) > 0:
    7. return dot(v1, v2) / (norm(v1) * norm(v2))
    8. else:
    9. 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/

                                             

  • 相关阅读:
    C#宏定义
    如何正确安装psycopg2,No module named ‘psycopg2._psycopg‘解决
    JavaScript基础知识——练习巩固(2)
    【第四阶段】kotlin语言集合转换与快捷转换学习
    .NET周报 【6月第3期 2023-06-18】
    一文让你理解Linux权限问题
    lvs+keepalived
    RUST语言
    数学建模学习(92):Jaya 算法对定位问题进行寻优
    centos安装NIS
  • 原文地址:https://blog.csdn.net/juhanishen/article/details/127755309