Natural Language Processing|Feature Extraction Technology

Die meisten klassischen Algorithmen für maschinelles Lernen und Deep Learning können keinen Rohtext akzeptieren. Stattdessen benötigen wir eine Merkmalsextraktion aus Rohtext, um numerische Merkmale an maschinelle Lernalgorithmen weiterzugeben.

Beutel mit Wörtern Modell--TF

Dies ist vielleicht das einfachste Vektorraum-Darstellungsmodell für unstrukturierten Text. Ein Vektorraummodell ist nur ein mathematisches Modell, das unstrukturierten Text (oder beliebige andere Daten) als Zahlenvektor darstellt, sodass jede Dimension des Vektors ein bestimmtes Merkmalsattribut ist. Das Bag-of-Words-Modell stellt jedes Textdokument als einen numerischen Vektor dar, wobei jede Dimension ein bestimmtes Wort im Korpus ist und sein Wert seine Häufigkeit im Dokument, seine Auftrittsrate (dargestellt durch 1 oder 0) oder sein kann sogar ein Gewichtswert. Das Modell wird „Beutel“ genannt, weil jedes Dokument als sein eigener „Beutel“ von Wörtern dargestellt wird, unabhängig von Wortreihenfolge, Reihenfolge und Grammatik.

Vektor zählen

Dies sollte die Dinge klarer machen.Sie können deutlich sehen, dass jede Spalte oder Dimension im Merkmalsvektor ein Wort im Korpus darstellt und jede Zeile eines unserer Dokumente darstellt. Der Wert in einer beliebigen Zelle stellt die Häufigkeit dar, mit der dieses Wort (dargestellt durch eine Spalte) in einem bestimmten Dokument (dargestellt durch eine Zeile) vorkommt. Wenn daher ein Korpus von Dokumenten aus N eindeutigen Wörtern über alle Dokumente hinweg besteht, versehen wir jedes Dokument mit einem N-dimensionalen Vektor.

N-Wort-Taschenmodell

Ein Wort ist nur ein einzelner Token, der oft als Unigramm oder 1-Gramm bezeichnet wird. Wir wissen bereits, dass das Bag of Words-Modell die Reihenfolge der Wörter nicht berücksichtigt. Aber was wäre, wenn wir auch Sätze oder Sätze von Wörtern berücksichtigen wollten, die nacheinander auftreten? N-Gramme können uns dabei helfen. Ein N-Gramm ist im Grunde eine Sammlung von Wort-Tokens in einer Textdatei, die aufeinander folgen und in einer Sequenz erscheinen. Bi-Gramme repräsentieren N-Gramme der Ordnung 2 (zwei Wörter), Tri-Gramme repräsentieren N-Gramme der Ordnung 3 (drei Wörter) und so weiter. Daher ist das Bag of N-grams-Modell nur eine Erweiterung des Bag of Words-Modells, sodass wir auch N-Gramm-basierte Funktionen nutzen können. Das folgende Beispiel beschreibt Doppelgitter-basierte Merkmale in jedem Dokumentmerkmalsvektor.

Dies gibt uns einen Merkmalsvektor für das Dokument, wobei jedes Merkmal aus einem Dublett besteht, das eine Folge von zwei Wörtern darstellt, und der numerische Wert die Anzahl darstellt, wie oft das Dublett in dem Dokument aufgetreten ist.

Nachteile der Verwendung des BOW-Modells.

  • 如果新的句子包含新的词,那么我们的词汇量就会增加,因此,向量的长度也会增加。
  • 此外,向量也会包含许多0,从而导致一个稀疏的矩阵(这正是我们想要避免的)。
  • 我们不保留任何关于句子语法的信息,也不保留文本中单词的排序。

TF-IDF

TF-IDF模型试图通过在其计算中使用一个缩放或归一化因子来解决这个问题。TF-IDF是Term Frequency-Inverse Document Frequency的缩写,它在计算中使用了两个指标的组合,即:术语频率(tf)和反向文档频率(idf)。

在数学上,我们可以将TF-IDF定义为tfidf = tf x idf 。

这里,tfidf(w,D)是单词w在文档D中的TF-IDF得分。
→ 术语tf(w,D)代表单词w在文档D中的术语频率,可以从词包模型中得到。
术语idf(w,D)是术语w的反文档频率,可以计算为语料库C中的文档总数除以单词w的文档频率的对数变换,基本上是语料库中出现单词w的文档频率。

与原始的Bag of Words模型值相比,我们每个文本文档的基于TF-IDF的特征向量显示了缩放和规范化的值。

词袋只是创建了一组包含文档(评论)中单词出现次数的向量,而TF-IDF模型包含最重要的单词和不太重要的单词的信息。

→ 词袋向量很容易解释。然而,TF-IDF在机器学习模型中通常表现得更好。

→ 虽然Bag-of-Words和TF-IDF在各自方面都很受欢迎,但在理解单词的上下文方面仍然是个空白。检测 "spooky "和 "scary "这两个词之间的相似性,或者将我们给定的文档翻译成另一种语言,需要更多的文档信息。

这就是单词嵌入技术,如Word2Vec、连续词袋(CBOW)、Skipgram等的作用。

Word2Vec模型

这个模型是由谷歌在2013年创建的,是一个基于深度学习的预测模型,用于计算和生成高质量的、分布式的、连续的密集向量的单词表示,这些表示捕捉了上下文和语义的相似性。从本质上讲,这些是无监督的模型,可以接受大量的文本语料,创建一个可能的词汇,并在代表该词汇的向量空间中为每个词生成密集的词嵌入。

通常,你可以指定单词嵌入向量的大小,向量的总数基本上是词汇的大小。这使得这个密集向量空间的维度比使用传统的词包模型建立的高维稀疏向量空间低得多。

有两种不同的模型架构可以被Word2Vec利用来创建这些词的嵌入表示。这包括。

  • 连续词袋(CBOW)模型
    -跳格模型

连续词袋(CBOW)模型。

CBOW模型架构试图根据源语境词(周围的词)来预测当前的目标词(中心词)。

考虑到一个简单的句子,"快速的棕色狐狸跳过懒惰的狗",这可以是成对的(context_window, target_word),如果我们考虑一个大小为2的上下文窗口,我们就有像([快速,狐狸],棕色),([,棕色],快速),([,狗],懒惰)之类的例子。

因此,该模型试图根据 "上下文窗口 "中的词来预测目标词"。

跳格模型

Skip-gram模型的结构通常试图实现CBOW模型的反向作用。它试图预测给定目标词(中心词)的源语境词(周围词)。

考虑到我们前面的简单句子,"快速的棕色狐狸跳过懒惰的狗"。如果我们使用CBOW模型,我们会得到成对的(context_window, target_word),其中如果我们考虑一个大小为2的上下文窗口,我们会有像([quick, fox], brown),([the, brown], quick),([the, dog], lazy)等例子。

现在考虑到跳格模型的目的是通过目标词来预测上下文,该模型通常将上下文和目标词倒置,并试图通过其目标词来预测每个上下文词。因此,任务变成了预测给定目标词 "brown "的上下文[quick, fox]或给定目标词 "quick "的[the, brown],等等。

因此,该模型试图根据目标词来预测上下文窗口词。

使用Gensim的健壮的Word2Vec模型

由Radim Řehůřek创建的_gensim_框架包括Word2Vec模型的强大、高效和可扩展的实现。我们将在我们的样本玩具语料库中利用该模型。在我们的工作流程中,我们将对规范化的语料库进行标记,然后重点关注Word2Vec模型中的以下四个参数来构建它。

→尺寸。词嵌入的维度
→窗口。上下文窗口大小
→ min_count。最小字数 →
采样。频繁词的降样设置
→sg: 训练模型,如果是跳格,则为1 CBOW

我们将在语料库上建立一个简单的Word2Vec模型,并对嵌入进行可视化。

余弦相似度。

余弦相似度是用来测量词向量之间的相似程度。余弦相似性本质上是检查两个向量之间的距离。

我们还可以对词向量进行向量运算。

new_vector = king - man+woman

这将创建一个新的向量,然后我们可以尝试找到最相似的向量。

→ 新向量与女王的向量最接近

余弦相似度是两个向量之间的角度的余弦。余弦距离可以通过1-余弦相似度找到。两个向量之间的角度越大,余弦相似度就越低,从而得到高的余弦距离值;而两个向量之间的角度越小,余弦相似度就越高,从而得到低的余弦距离值。

上面的图片给出了每个词的前3个相似词。

GloVe模型。

GloVe模型代表Global Vectors,是一个无监督的学习模型,可以用来获得类似于Word2Vec的密集词向量。然而,技术是不同的,训练是在一个聚合的全球词-词共现矩阵上进行的,给我们一个有意义的子结构的向量空间。这种方法是由Pennington等人在斯坦福大学发明的,我推荐你阅读关于GloVe的原始论文,['GloVe: Global Vectors for Word Representation' by Pennington et al.]论文,这是一篇很好的阅读,可以从一些角度了解这个模型的工作原理。

GloVe模型的基本方法是首先创建一个由(词,语境)对组成的巨大的词-语境共现矩阵,该矩阵中的每个元素代表一个词在语境(可以是一个词的序列)中出现的频率。然后,我们的想法是应用矩阵因子化来近似这个矩阵,如下图所描述的。

考虑到词-语境(WC)矩阵、词-特征(WF)矩阵和特征-语境(FC)矩阵,我们尝试将WC=WF x FC分解。

这样,我们的目标是通过乘以WFFC来重构WC。为此,我们通常用一些随机权重初始化WFFC,并试图将它们相乘以得到WC(WC的近似值),并衡量其与WC的接近程度。我们使用随机梯度下降法(SGD)多次这样做,以最小化误差。最后,单词特征矩阵**(WF**)为我们提供了每个单词的单词嵌入,其中F可以预设为一个特定的维数。

手套模型的实现。

FastText模型。

FastText模型由Facebook在2016年首次推出,作为vanilla Word2Vec模型的扩展和所谓的改进。基于Mikolov等人撰写的题为['Enriching Word Vectors with Subword Information']的原始论文arxiv.org/pdf/1607.04…_),这是深入了解该模型工作原理的绝佳阅读。总的来说,FastText是一个学习单词表征的框架,同时也进行稳健、快速和准确的文本分类。该框架由Facebook在[GitHub]github.com/facebookres…上开源,并声称具有以下特点。

→ 最近最先进的英语单词向量。
→ 在维基百科和Crawl上训练的157种语言的词向量。
→ 用于语言识别和各种监督任务的模型。

Word2Vec模型通常忽略了每个词的形态结构,将一个词视为一个实体。FastText模型将每个词看作是一个字符n-grams的袋子。这在本文中也被称为子词模型。

我们在词的开头和结尾添加特殊的边界符号<和>。这使我们能够将前缀和后缀从其他字符序列中区分出来。我们还将单词w本身包含在其n-grams的集合中,以学习每个单词的表征(除了其字符n-grams之外)。

以单词where和n=3(三格)为例,它将由字符n格表示:<wh, whe, her, ere, re>和代表整个单词的特殊序列< where >。请注意,这个序列,对应于单词< her >,与来自单词where的三格her不同。

在实践中,该文件建议在提取n≥3和n≤6的所有n-grams。这是一个非常简单的方法,可以考虑不同的n-grams集合,例如,提取所有的前缀和后缀。我们通常为一个词的每个n-gram关联一个向量表示(嵌入)。

因此,我们可以通过其n-grams的向量表示的总和或这些n-grams的嵌入的平均值来表示一个词。因此,由于这种利用基于单个单词的n-grams的效果,罕见的单词有更大的机会获得良好的表示,因为它们基于字符的n-grams应该出现在语料库的其他单词中。

这些是NLP中用于特征提取的嵌入技术。

谢谢你读到最后。请参考这本笔记本的实际实施。链接


自然语言处理|特征提取技术。原文发表于Nerd For Techon Medium,人们通过强调和回应这个故事来继续对话。

Ich denke du magst

Origin juejin.im/post/7086672570103103524
Empfohlen
Rangfolge