自然语言处理中的特征提取技术

自然语言处理(NLP)领域,特征提取是理解文本内容的关键步骤之一。文本清洗后,需要将其转换为模型可用的特征,这个过程通常被称为文档数据的特征提取,也称为文本表示或文本向量化。文档数据本身不可计算,因此必须将其转换为数值数据,如向量空间模型。本文将探讨不同的特征提取技术,如词袋模型(Bag of Words)、TF-IDF、n-gram、word2vec等。

特征提取的基本概念

如果拥有文本数据,这些数据不能直接用于任何机器学习算法,因为机器学习算法不理解文本数据,它们只理解数值数据。将文本数据转换为数值的过程称为文本的特征提取,也称为文本向量化。

机器只能理解数字,要使机器能够识别语言,需要将其转换为数值形式。这就是为什么需要特征提取。

特征提取在NLP中是困难的。与图像数据集相比,图像特征提取相对容易,因为图像已经是数字形式(像素)。音频数据,如从语音识别中预测情绪,数据以波形信号的形式存在,可以在一定时间间隔内提取特征。但是,当有一句话并想要预测其情感时,如何用数字表示它?本文将研究这些技术。

特征提取技术

以下是一些常见的特征提取技术:

  1. 独热编码(One Hot Encoding)
  2. 词袋模型(Bag of Words, BOW)
  3. n-gram模型
  4. TF-IDF(词频-逆文档频率)
  5. 自定义特征
  6. Word2Vec(词嵌入)

独热编码意味着将文档中的词汇转换为V维向量。这种技术非常直观,意味着它简单,可以自己编码。这是独热编码的唯一优势。

# 示例代码 # 假设有以下文档 documents = ["We are learning Natural Language Processing", "We are learning Data Science", "Natural Language Processing comes under Data Science"] # 词汇表(Unique words) - We are learning Natural Language Processing Data Science comes under - V - 10

独热编码不用于工业界,因为它有缺陷,如创建稀疏性、文档大小不一、词汇表外(OOV)问题以及不捕获语义意义。

词袋模型是最常用的文本向量化技术之一。词袋模型描述了文档中词汇的出现情况。特别用于文本分类任务。可以直接使用Scikit-learn的CountVectorizer类。

# 示例代码 from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer() X = vectorizer.fit_transform(documents)

词袋模型简单直观,文档大小一致,不会出现OOV问题。但是,它也会产生稀疏性,忽略新词汇,不考虑句子顺序问题。

n-gram模型将文本文档表示为其n-gram的无序集合。包括二元组(bi-gram)、三元组(tri-gram)和n元组(n-gram)。

# 示例代码 from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer(ngram_range=(2, 2)) X = vectorizer.fit_transform(documents)

n-gram模型简单易实现,能够捕获句子的语义意义。但是,从unigram到N-gram,向量形成的维度增加,会减慢算法速度,并且忽略新词汇。

TF-IDF是一种统计度量,评估一个词对文档在文档集合中的相关性。词频(TF)是文档中某个词出现的次数除以该文档的总词数。逆文档频率(IDF)是文档集合中文档总数的对数除以包含特定词的文档数。

# 示例代码 from sklearn.feature_extraction.text import TfidfVectorizer vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(documents)

TF-IDF在信息检索中广泛使用,如搜索引擎。但是,它会产生稀疏性,如果数据集很大,维度会增加,减慢算法速度,并且忽略新词汇,不捕获语义意义。

使用领域知识创建新的自定义特征。例如,文档中的词数、负词数、正负评价比例、词数、字符数等。

# 示例代码 from gensim.models import Word2Vec model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485