关于自然语言处理:NLP实操笔记基于机器学习的文本分类1文本表示

47次阅读

共计 2196 个字符,预计需要花费 6 分钟才能阅读完成。

基于机器学习的文本分类

知识点

1. 文本示意办法

  • One-hot:这种示意办法无奈表白单词与单词之间的类似水平
`measurements = [{'city': 'Dubai', 'temperature': 33.},
 {'city': 'London', 'temperature': 12.},
{'city': 'San Francisco', 'temperature': 18.},

]
from sklearn.feature_extraction import DictVectorizer
vec = DictVectorizer()
vec.fit_transform(measurements).toarray()

`

  • Bag of Words:词袋示意,也称为计数向量示意(Count Vectors)。文档的向量示意能够间接用单词的向量进行求和失去。

scikit-learn 提供了从文本内容中提取数字特色的常见办法,即:

  1. tokenizing: 标记字符串并为每个可能的 token 提供整数 id,例如应用空白和标点作为 token 分隔符;(分词标记)
  2. counting: 统计每个文档中呈现的 token 次数;(统计词频)
  3. normalizing: 通过缩小大多数样本 / 文档中都会呈现的一般性标记来进行标准化和加权。(标准化 / 归一化)

在此计划中,特色和样本定义如下:

每个独立 token 呈现的频率(已标准化或未标准化)作为特色。
给定文档的所有 token 频率的向量作为多元样本。

因而,文本语料库能够由矩阵示意,每一行代表一个文本,每一列代表一个 token(例如一个单词)。

向量化:将文本汇合转换为数字特征向量的个别过程。
这种办法(tokenizing,counting 和 normalizing)称为“词袋”或“n-gram”模型。即只通过单词频率来形容文档,而齐全疏忽文档中单词的绝对地位信息。

John likes to watch movies. Mary likes too.  -->> [1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
John also likes to watch football games.     -->> [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]

具体实现:sklearn
1.CountVectorizer
2.TfidfVectorizer
3.HashingVectorizer

Feature extraction
Vectorize 实例:

>>> measurements = [...     {'city': 'Dubai', 'temperature': 33.},
...     {'city': 'London', 'temperature': 12.},
...     {'city': 'San Francisco', 'temperature': 18.},
... ]

>>> from sklearn.feature_extraction import DictVectorizer
>>> vec = DictVectorizer()

>>> vec.fit_transform(measurements).toarray()
array([[1.,  0.,  0., 33.],
 [0.,  1.,  0., 12.],
 [0.,  0.,  1., 18.]])

>>> vec.get_feature_names()
['city=Dubai', 'city=London', 'city=San Francisco', 'temperature']

SKlearn 中的文本提取

  • TF-IDF

TF-IDF 的分数代表了词语在以后文档和整个语料库中的绝对重要性。TF-IDF 分数由两局部组成:第一局部是词语频率(Term Frequency),第二局部是逆文档频率(Inverse Document Frequency)。其中计算语料库中文档总数除以含有该词语的文档数量,而后再取对数就是逆文档频率。

TF(t)= 该词语在以后文档呈现的次数 / 以后文档中词语的总数
IDF(t)= log_e(文档总数 / 呈现该词语的文档总数)

TF-IDF 与一个词在以后文档中的呈现次数成正比,与该词在整个语料库中的呈现次数成反比

  • 共现矩阵 (Cocurrence matrix)

ex:

John likes to watch movies.
John likes to play basketball.

个别配合 PCA 或 SVD 将其进行降维,如将原来 m×n 的矩阵降为 m×r 的矩阵,其中 r<n,行将词向量的长度进行缩减。

  • 分布式示意
  • NNLM(Neural Network Language model)
  • CBOW 间断词袋

CBOW 是给定上下文,来预测 input word

  • 负例采样 Negative Sampling

应用霍夫曼树来代替传统的神经网络,能够进步模型训练的效率。然而如果咱们的训练样本里的中心词 w 是一个很生僻的词,那么就得在霍夫曼树中辛苦的向下走很久了。Negative Sampling 就是这么一种求解 word2vec 模型的办法,它摒弃了霍夫曼树,采纳了 Negative Sampling(负采样)的办法来求解。

  • Skip-gram

Skip-Gram 是给定 input word 来预测上下文

  • fasttext

CBOW 预测上下文的两头词,fasttext 预测文本标签。

fasttext 的 python 实现

参考:

NLP-Beginner:自然语言解决入门练习
知乎
word2vec 原理(三) 基于 Negative Sampling 的模型
用 gensim 学习 word2vec

正文完
 0