Skip to content

词向量

向量空间模型(Vector Space Model)是NLP领域中一个基础且强大的文本表示方式,向量空间模型通过将文本(包括单词、句子、段落或者整个文档)转换为高维空间中的向量来实现文本的数字化表示,在这个模型中,每个维度代表一个特征项,例如(字、词、词组、短语),而向量中的每个元素值代表该特征项在文本中的权重,这种权重通过特定的计算公式,如(词频TF、逆文档频率TF-IDF等)来确定,反映了特征项在文本中的重要程度

向量空间模型的应用极其广泛,包括但不限于文本相似度计算、文本分类、信息检索等自然语言处理任务,它将复杂的文本数据转换为易于计算和分析的数学形式,使得文本的相似度计算和模式识别成为可能,此外通过矩阵运算如 特征值计算、奇异值分解(SVD)等方法,可以优化文本向量表示,进一步提升处理效率和效果

然而,向量空间模型也存在很多问题,其中最主要的是数据稀疏性和维数灾难问题,因为特征项数量庞大导致向量维度极高,同时多数元素值为0,由于模型基于特征项之间的独立性假设,忽略了文本中的结构信息,如 词序或者上下文信息,限制了模型的表现力,特征项的选择和权重计算方法的不足也是向量空间模型需要解决的问题

python
# "雍和宫的荷花很美"
# 词汇表大小:16384,句子包含词汇:["雍和宫", "的", "荷花", "很", "美"] = 5个词

vector = [0, 0, ..., 1, 0, ..., 1, 0, ..., 1, 0, ..., 1, 0, ..., 1, 0, ...]
#                    ↑          ↑          ↑          ↑          ↑
#      16384维中只有5个位置为1,其余16379个位置为0
# 实际有效维度:仅5维(非零维度)
# 稀疏率:(16384-5)/16384 ≈ 99.97%

词汇表是一个包含所有可能出现的词语的集合,在向量空间模型中,每个词对应词汇表中的一个位置,通过这种方式可以将词语转换为向量表示,例如,如果词汇表大小为16384,那么每个词都会被表示为一个16384维的向量,其中只有该词对应的位置为1,其他位置都为0

为了解决这些问题,研究者们对向量空间模型的研究主要集中在两个方面

  • 1、改进特征表示方法,比如借助图方法、主题方法等关键词抽取
  • 2、改进和优化特征权重的计算方法,可以在现有方法的基础上进行融合计算或者提出新的计算方法

语言模型

N-gram模型是NLP领域中一种基于统计的语言模型,广泛用于语音识别、手写识别、拼写纠错、机器翻译和搜索引擎等众多任务

N-gram模型的核心思想是基于马尔可夫假设,即一个词的出现概率仅依赖于它前面的N-1个词。这里的N代表连续出现单词的数量,可以是任意正整数。例如,当N=1时,模型称为unigram,仅考虑单个词的概率;当N=2时,称为bigram,考虑前一个词来估计当前词的概率;当N=3时,称为trigram,考虑前两个词来估计第三个词的概率,以此类推N-gram。

N-gram模型通过条件概率链式规则来估计整个句子的概率。具体而言,对于给定的一个句子,模型会计算每个N-gram出现的条件概率,并将这些概率相乘以得到整个句子的概率。例如,对于句子“The quick brown fox”,作为trigram模型,我们会计算 P("brown"∣"The","quick")P("brown"∣"The","quick")、P("fox"∣"quick","brown")P("fox"∣"quick","brown")等概率,并将它们相乘。

N-gram的优点是实现简单、容易理解,在许多任务中效果不错。但当N较大时,会出现数据稀疏性问题。模型的参数空间会急剧增大,相同的N-gram序列出现的概率变得非常低,导致模型无法有效学习,模型泛化能力下降。此外,N-gram模型忽略了词之间的范围依赖关系,无法捕捉到句子中的复杂结构和语义信息。

尽管存在局限性,N-gram模型由于其简单性和实用性,在许多 NLP 任务中仍然被广泛使用。在某些应用中,结合N-gram模型和其他技术(如深度学习模型)可以获得更好的性能。

最后更新于: