NLP
文章平均质量分 87
自然语言处理基础相关的笔记
彬彬侠
人工智能算法工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Python】spaCy 库:工业级自然语言处理(NLP)库
spaCy 是一个高性能的 工业级自然语言处理(NLP)库,专为 生产环境和大型项目设计,具有速度快、接口简洁、准确率高等特点。它支持多种 NLP 任务,如:分词(Tokenization),词性标注(POS Tagging),命名实体识别(NER),依存句法分析(Dependency Parsing),词形还原(Lemmatization),文本相似度计算,自定义训练与管道扩展。import spacy原创 2025-04-14 09:41:22 · 1290 阅读 · 0 评论 -
【Python】TextBlob 库:简单易用的 自然语言处理(NLP)库
TextBlob 是一个用于处理文本数据的 简单易用的 NLP(自然语言处理)库,基于 NLTK 和 pattern 库构建。它封装了常见的 NLP 任务,包括:词性标注(POS tagging),句子分割、分词,情感分析,名词短语提取,拼写检查和纠正,语言翻译和检测(使用 Google Translate),适用于快速开发、教学、文本分析原型开发等场景。from textblob import TextBlob原创 2025-04-14 09:41:02 · 1569 阅读 · 0 评论 -
【Python】NLTK 库:自然语言处理(NLP)库
NLTK(自然语言工具包) 是 Python 中最早、最完整、最广泛使用的 自然语言处理(NLP)库之一。它提供了丰富的功能与资源,包括:词法分析(分词、词性标注),句法分析(句子划分、语法树构建),语义分析(词义消歧),文本分类、情感分析,语料库与词典(停用词、WordNet、Gutenberg等)。import nltk原创 2025-04-14 09:40:38 · 854 阅读 · 0 评论 -
SentencePiece 训练模型 和 使用模型
本文是如何使用 SentencePiece 进行 分词模型的训练与使用,覆盖:训练模型(支持 Unigram / BPE),加载模型,编码与解码文本(支持 ID / token),自定义词表大小、特殊符号等配置。原创 2025-04-14 09:37:53 · 1885 阅读 · 0 评论 -
ULM( Unigram Language Model,一元语言模型) 分词算法
ULM 分词算法,全称为 Unigram Language Model 分词(基于一元语言模型的子词切分),是由 Google 提出的分词算法,广泛用于 自然语言处理中的子词(subword)建模,并由其开源工具 SentencePiece 实现。ULM 分词常用于:预训练模型(如 T5、ALBERT、mBART),多语言模型(因其无语言假设),数据混合任务(中英、emoji、符号等)。ULM 分词是一种强大而灵活的子词建模方法,适用于多语言预训练、机器翻译、低资源场景等任务。原创 2025-04-14 09:37:20 · 2143 阅读 · 0 评论 -
WordPiece
WordPiece 是一种用于 子词切分(subword tokenization) 的算法,由 Google 最早在其 统计机器翻译系统中提出,后来在 BERT 模型中广泛使用,成为了深度语言模型中最主流的分词技术之一。它的目标是将文本分解为 更小、更有意义的子词单元,以:降低词表大小(避免需要覆盖所有完整单词),支持未登录词(OOV)的处理,保持词义完整性(比按字符切分更有语义)原创 2025-04-07 16:56:02 · 976 阅读 · 0 评论 -
字节级 BPE(Byte-level BPE)
BPE(Byte Pair Encoding) 是一种用于 子词切分(subword segmentation) 的算法,BPE(Byte Pair Encoding) 是一种用于 子词切分(subword segmentation) 的算法。Byte-level BPE(字节级 BPE) 是 BPE 的一种 变种与扩展,区别在于:普通 BPE 是以 字符为基础 开始构建词表;字节级 BPE 是以原始字节序列(0-255)为基本单位进行合并。原创 2025-04-07 16:01:44 · 1703 阅读 · 0 评论 -
什么是关系抽取中的“三元组重叠”问题(Overlapping Triples Problem)?
在关系抽取任务中,三元组重叠(Overlapping Triples)问题指的是:在同一个句子中,存在多个三元组(subject, relation, object)之间的实体存在重叠,即一个实体参与多个三元组。三元组重叠问题是关系抽取中最核心的难点之一,Joint(联合式)模型是当前解决这类问题的主流方向,尤其是 CasRel、TPLinker 等模型 对它支持良好。原创 2025-04-03 23:36:56 · 997 阅读 · 0 评论 -
关系抽取的 pipeline 方式和 joint 方式
关系抽取(Relation Extraction, RE)是信息抽取中的关键任务。针对其实现方式,学术界和工业界主要有两种技术路线:Pipeline(管道式)方法,Joint(联合式)方法。Pipeline 方法 将关系抽取划分为两个或多个子任务,先做实体识别,再进行关系分类。Joint 方法 将实体识别与关系抽取作为一个 联合建模的任务,同时学习 实体识别和实体间关系。原创 2025-04-03 23:28:05 · 1346 阅读 · 0 评论 -
BiLSTM+Attention 实现关系抽取
关系抽取(Relation Extraction, RE) 是从自然语言文本中识别出实体之间的语义关系的任务。给定一个句子和一个实体对,模型需要判断这两个实体之间是否存在某种预定义的语义关系。BiLSTM + Attention 是关系分类任务中经典的结构之一,具有良好的上下文建模能力和较强的可解释性,是从基础模型到复杂深度关系抽取系统的重要起点。原创 2025-04-03 23:24:05 · 1797 阅读 · 0 评论 -
CasRel 模型:级联与残差学习模型,用于 关系三元组抽取
CasRel(Cascade and Residual Learning for Relational Triple Extraction) 是由清华大学的 NLP 研究团队提出的级联与残差学习模型,用于 关系三元组抽取(Relational Triple Extraction)。该模型发表在 ACL 2020,通过 级联解耦(Cascade Decoupling) 和 残差学习(Residual Learning) 的机制来 提取文本中的实体关系三元组,解决了 重叠关系(Overlapping Re原创 2025-04-01 10:49:29 · 1939 阅读 · 0 评论 -
【fasttext】train_unsupervised() 函数:无监督训练词向量
fasttext.train_unsupervised() 用于无监督训练词向量(Word Embeddings),类似 Word2Vec,可用于 文本相似度计算、文本聚类、NLP 预训练 等任务。Skip-gram 适用于小数据集,CBOW 适用于大数据集。支持 OOV 词(未登录词),适合 处理低频词或新词。比 Word2Vec 更快、更适合生产环境。原创 2025-03-12 10:47:58 · 469 阅读 · 0 评论 -
【fasttext】train_supervised() 函数:用于训练文本分类模型
fasttext.train_supervised() 用于训练文本分类模型,支持 多类别分类、二分类任务,适用于 情感分析、垃圾邮件检测、新闻分类等 NLP 任务。训练数据格式:每行 __label__ 作为类别前缀。支持 n-gram(wordNgrams=2 提高分类效果),适用于短文本分类。支持 loss="ova" 进行多标签分类。比深度学习(如 BERT)快,适用于大规模文本数据。原创 2025-03-12 10:47:40 · 869 阅读 · 0 评论 -
fastText 库:高效文本处理库
fastText 是由 Facebook AI 研究院(FAIR)开发的高效文本处理库,用于 词向量训练、文本分类、相似度计算,适用于自然语言处理(NLP)任务。fastText 结合了 n-gram、子词信息,可以快速训练大规模文本数据,尤其适用于低资源语言。比 Word2Vec 更快,支持 子词(subword n-grams),可处理未登录词(OOV)。适用于文本分类、语义搜索、情感分析、低资源语言建模。提供预训练模型(支持 157 种语言),可直接用于 NLP 任务。import fasttext原创 2025-03-12 10:47:10 · 1317 阅读 · 0 评论 -
什么是UMAP:高维数据的非线性降维算法
UMAP(均匀流形逼近与投影,Uniform Manifold Approximation and Projection) 是一种 降维算法,用于 数据可视化、特征提取,特别适用于 高维数据的非线性降维,与 t-SNE 类似,但计算速度更快,保留全局结构更好。比 t-SNE 更快,适用于大规模数据集,并且能更好地保留全局和局部结构。广泛用于 NLP(BERT)、计算机视觉(MNIST)和聚类任务。可调整超参数 n_neighbors 和 min_dist 以优化降维效果。原创 2025-03-11 10:17:18 · 4507 阅读 · 0 评论 -
Unigram语言模型:只考虑单个词
Unigram语言模型是n-gram语言模型的一种特殊形式,其中n=1,即它只考虑单个词(unigram)的出现概率,而不考虑前后单词的上下文关系。因此,它是最简单的语言模型之一,适用于基础的词频统计、文本生成、信息检索等任务。忽略上下文,生成的文本缺乏连贯性。被n-gram(如Bigram、Trigram)和Transformer模型取代。原创 2025-03-05 14:44:38 · 1156 阅读 · 0 评论 -
sentencepiece 库 :子词分词(Subword Tokenization)
sentencepiece是Google开发的子词分词工具,常用于NLP任务中的文本预处理,可以将文本分割成子词单元(subwords),特别适用于字节对编码(BPE,Byte Pair Encoding)和Unigram语言模型。安装:pipinstallsentencepiece;主要功能,子词分词:支持BPE和Unigram;适用于多语言:不依赖空格,可以处理中文、日语、韩语等;压缩词表:减少OOV(未登录词),提升模型泛化能力;与transformers兼容:用于BERT、T5、GPT等模型的分词。原创 2025-03-05 14:34:49 · 924 阅读 · 0 评论 -
TF-IDF(Term Frequency-Inverse Document Frequency)词频-逆文档频率
TF-IDF(词频-逆文档频率)是一种用于文本挖掘(Text Mining)和信息检索(Information Retrieval,IR)的统计方法,用于评估一个词(Term)在一个文档集合(Corpus)中的重要性。它广泛应用于搜索引擎、文本分类、关键词提取等任务。TF-IDF是NLP中最经典的文本表示方法之一,用于关键词提取、信息检索、文本分类、搜索引擎。计算公式:TF-IDF=词频(TF)×逆文档频率(IDF)。优点:简单、高效、可解释性强。缺点:无法处理词义、长文本、词序关系。改进方法:可以结合BE原创 2025-02-27 20:52:06 · 2077 阅读 · 0 评论 -
BERT在NLP任务中的主要应用
BERT是由GoogleAI提出的预训练语言模型,它利用Transformer的双向自注意力机制(Bidirectional Self-Attention),能够更好地理解上下文语境。BERT在多个自然语言处理(NLP)任务中取得了卓越的表现,成为NLP领域的基准模型。句子级任务:文本分类(情感分析、垃圾邮件检测)、句对级任务:语义相似度、NLI、机器阅读理解、Token级任务:NER、POS、语法纠错、工业应用:搜索引擎、智能客服、翻译、医疗原创 2025-02-27 13:07:06 · 1698 阅读 · 0 评论 -
为什么在BERT中“<cls>”词元是整个输入语句的表示?
在BERT中,虽然[CLS](或"<cls>")看上去只是被放在输入序列最前面的一个特殊词元,但它在模型设计和训练过程中被赋予了“表示整句信息”的角色。换句话说,在BERT的自注意力机制中,每个位置(包括"[CLS]"的位置)都会与句子中所有其他词元进行交互。因此,最终在"[CLS]"位置所得到的向量,不仅包含了"[CLS]"本身的信息,也融合了整个输入句子的上下文信息。在BERT的多层自注意力机制中,"[CLS]"的向量会与整句中的所有词交互,学习到整个句子的上下文信息。它在BERT架构和训练过程中就是为原创 2025-02-27 12:36:55 · 1624 阅读 · 0 评论 -
自然语言处理(Natural Language Processing, NLP)的主要应用及核心技术
自然语言处理(NLP)是人工智能(AI)的一个重要分支,旨在让计算机能够理解、生成和处理人类语言。NLP在多个领域有着广泛的应用,并结合了多种先进的技术,包括机器学习(ML)、深度学习(DL)、统计模型以及规则方法。NLP在多个领域发挥重要作用,从翻译、语音识别到情感分析、智能问答等。核心技术包括深度学习(LSTM、Transformer)、词向量(Word2Vec,FastText)、信息抽取(NER,OpenIE)等。Transformer及预训练语言模型(如BERT、GPT)推动了NLP领域的进步。原创 2025-02-27 12:25:09 · 3662 阅读 · 0 评论 -
斯坦福问答数据集(Stanford Question Answering Dataset, SQuAD)
斯坦福问答数据集(Stanford Question Answering Dataset, SQuAD)是一个广泛用于机器阅读理解(Machine Reading Comprehension, MRC)和问答系统(Question Answering, QA)研究的高质量数据集。该数据集由斯坦福大学的研究人员创建,旨在推动NLP领域基于文本的问答系统的发展。SQuAD1.1仅包含可回答问题,SQuAD2.0增加了不可回答问题。评估指标包括ExactMatch(EM)和F1Score。BERT和Transf原创 2025-02-26 17:18:20 · 2517 阅读 · 0 评论 -
Penn Treebank II(PTB-II)标注集
Penn Treebank II(PTB-II)是一个广泛用于自然语言处理(NLP)任务的 句法树库(treebank),它为英语文本提供了结构化的句法分析标注。PTB-II主要基于《华尔街日报》(Wall Street Journal, WSJ)的文本,是宾夕法尼亚大学树库(Penn Treebank, PTB)系列的扩展版本,常用于词性标注(POS Tagging)、句法分析(Parsing)、语言建模(Language Modeling)等NLP任务。PTB-II提供45个POS标签和短语结构树(Ph原创 2025-02-26 16:53:14 · 1307 阅读 · 0 评论 -
语义文本相似度基准(Semantic Textual Similarity Benchmark, STS-B)数据集
语义文本相似度(Semantic Textual Similarity, STS)任务是自然语言处理(NLP)中的一个重要任务,旨在衡量两个文本之间的语义相似度。STS-B(Semantic Textual Similarity Benchmark)是GLUE(General Language Understanding Evaluation)基准测试中的一个子任务,被广泛用于评估NLP模型在文本语义匹配方面的能力。语义相似度得分范围是0到5,0表示完全不同,5表示完全相同。主要评估指标是皮尔逊相关系数(P原创 2025-02-26 16:35:54 · 3319 阅读 · 4 评论 -
语言可接受性语料库(Corpus of Linguistic Acceptability, CoLA)数据集
语言可接受性语料库(Corpus of Linguistic Acceptability, CoLA)是一个用于自然语言理解(Natural Language Understanding, NLU)任务的数据集,专门用于判断句子的语法和可接受性。它是GLUE(General Language Understanding Evaluation)基准测试中的一个子任务,被广泛用于评估NLP模型在语法判断任务中的性能。主要评估指标是Matthews相关系数(MCC)。该数据集用于二分类任务(判断句子是否符合语法)原创 2025-02-26 16:20:07 · 1686 阅读 · 0 评论 -
斯坦福自然语言推理(SNLI)数据集
斯坦福自然语言推理(SNLI)数据集(Stanford Natural Language Inference, SNLI)是一个广泛使用的自然语言推理(Natural Language Inference, NLI)数据集,由斯坦福大学的研究人员创建。NLI是自然语言处理(NLP)中的一个经典任务,旨在判断两个句子之间的逻辑关系,通常有三个类别:蕴含(Entailment)、矛盾(Contradiction)和中立(Neutral)。SNLI数据集是自然语言推理任务中的一个基准数据集,广泛应用于训练和评估各原创 2025-02-25 16:59:57 · 2187 阅读 · 0 评论 -
TextCNN(文本卷积神经网络)
TextCNN(文本卷积神经网络)是一种深度学习模型,专门用于文本分类等自然语言处理(NLP)任务。它由YoonKim在2014年提出,目的是利用卷积神经网络(CNN)提取文本中的局部特征(如n-gram特征)来进行分类任务。TextCNN特别适合处理文本数据,因为它可以自动学习不同大小的n-gram特征,并且具有较强的表示能力。原创 2025-02-25 16:14:49 · 2570 阅读 · 0 评论 -
GPT和BERT的异同
GPT和BERT都是基于Transformer架构的语言模型,但它们的设计理念、使用的Transformer部分、训练方式、目标任务等方面有显著的不同。GPT:使用的Transformer解码器(Decoder)部分。BERT:使用的Transformer编码器(Encoder)部分。总结起来,GPT主要用于文本生成任务,是一个单向自回归模型,而BERT主要用于理解任务,是一个双向编码器模型,能够同时考虑左右上下文信息。原创 2025-02-22 22:36:16 · 1090 阅读 · 0 评论 -
BERT是如何对上下文进行双向编码的?
BERT通过Transformer编码器中的自注意力机制实现了双向上下文建模。这意味着它能够同时考虑一个词的左侧和右侧上下文,而不像传统的语言模型那样只能考虑单向的上下文。通过掩蔽语言模型(MLM)和下一个句子预测(NSP)的训练方式,BERT使得双向编码成为可能,从而能够更好地理解语言中的多层次语义。这种双向训练方式使得BERT在NLP任务中成为了革命性的模型。原创 2025-02-22 17:42:31 · 1439 阅读 · 0 评论 -
BERT (Bidirectional Encoder Representations from Transformers)
BERT(Bidirectional Encoder Representations from Transformers)是由Google AI提出的一个深度学习模型,首次发布于2018年。它是基于Transformer架构的预训练语言模型,使用双向编码器(Encoder)来建模上下文,并通过预训练的方式学习丰富的语言表示。BERT改变了自然语言处理(NLP)的许多经典方法,成为了各类NLP任务的基础架构。原创 2025-02-22 16:29:30 · 945 阅读 · 0 评论 -
查看torch.nn.Embedding词嵌入层中的词向量(weight 属性)
要查看torch.nn.Embedding层中的词向量,可以通过访问其weight属性。weight属性包含了词向量矩阵,其中每一行表示一个词的嵌入表示。embedding.weight返回整个词嵌入层的词向量矩阵。使用embedding(indices),你可以得到特定词索引对应的词向量。原创 2025-02-20 16:55:28 · 495 阅读 · 0 评论 -
GPT (Generative Pre-trained Transformer)
GPT(Generative Pre-trained Transformer)是由OpenAI提出的一个基于Transformer架构的自回归语言模型。GPT模型通过大规模无监督预训练,使用大量的文本数据进行学习,然后再进行微调(fine-tuning)来适应具体的下游任务。GPT的设计目标是能够理解和生成自然语言文本,并且它以其出色的自然语言生成能力在多个领域取得了显著的成果。GPT采用了Transformer模型中的自注意力机制(Self-attention)来建模文本序列中的长程依赖关系。它与传统的R原创 2025-02-20 15:26:37 · 1587 阅读 · 0 评论 -
ELMo (embedding from language models)
ELMo(Embeddings from Language Models)是由Allen Institute for AI (AI2)提出的一个基于深度双向语言模型的上下文相关词嵌入模型。与传统的词嵌入方法(如Word2Vec和GloVe)不同,ELMo为每个词提供了基于其上下文的词向量表示,从而能够更好地捕捉到词汇在不同语境中的多义性。虽然BERT等后续模型在某些任务上超越了ELMo,但ELMo在处理一些需要上下文理解的任务时仍然非常有用,且其训练方法和应用方式相对简单,具有较强的实用性。原创 2025-02-20 12:01:01 · 1129 阅读 · 0 评论 -
fastText模型
fastText是由Facebook AI Research(FAIR)团队提出的一种词嵌入(word embedding)方法,旨在提高词向量的学习效果,尤其是在处理稀有词或未见过的词(out-of-vocabulary words,OOV)时。与传统的词向量模型(如Word2Vec)不同,fastText不仅考虑单词本身,还考虑了单词内部的子词(subword)信息。这样一来,即使是没有出现在训练数据中的词,fastText也能通过其子词信息生成合适的词向量。适用于词向量学习、文本分类、命名实体识别等。原创 2025-02-19 17:05:48 · 1635 阅读 · 0 评论 -
GloVe模型
GloVe(Global Vectors for Word Representation)是一种基于矩阵分解的词向量学习方法,用于生成高质量的词向量。与Word2Vec和FastText等方法不同,GloVe是通过利用全局统计信息(例如词与词之间的共现概率)来训练词向量。其核心思想是通过优化一个目标函数,使得词与词之间的共现信息能够被有效地嵌入到低维的词向量空间中。GloVe通过优化词与词之间的共现矩阵来生成高质量的词向量。它能够捕捉到全局的语义关系,计算效率高,适用于大规模语料库,但也有一些局限性,比如无原创 2025-02-18 21:05:55 · 956 阅读 · 0 评论 -
【word2vec】层次Softmax(Hierarchical Softmax)
层次Softmax是一种加速 softmax 计算的技术,通过将词汇表构建成霍夫曼树并沿着树的路径进行概率计算,从而减少了每次训练时需要计算的词汇数目。它适用于大规模词汇表的任务,能够显著提高计算效率。尽管它在某些方面可能增加计算复杂度,但仍然是处理大规模自然语言处理任务时的有效工具。原创 2025-02-17 17:36:06 · 1584 阅读 · 0 评论 -
【word2vec】负采样(Negative Sampling)
负采样是Word2Vec中用来加速模型训练的一种技术。它通过从词汇表中随机选择一些负样本来减少计算量,从而使模型能够在大规模数据集上高效训练。负采样在 Skip-gram 和 CBOW 模型中得到了广泛应用,是生成高质量词向量的核心技术之一。虽然负采样在计算效率上有明显优势,但它也有一定的局限性,特别是在负样本选择和细节学习方面。原创 2025-02-17 17:16:24 · 2594 阅读 · 0 评论 -
【word2vec】跳字模型(Skip-gram)
Skip-gram模型是Word2Vec的一种方法,专注于通过一个目标词来预测其上下文词汇。它特别适合于处理低频词汇,并能够捕捉词与词之间的长距离依赖。尽管它计算效率相对较低,但结合负采样等技术,可以有效提高训练效率。Skip-gram不仅在词向量学习中有着广泛应用,还在机器翻译、推荐系统等领域具有重要作用。原创 2025-02-17 16:58:21 · 1702 阅读 · 0 评论 -
【word2vec】连续词袋模型(CBOW, Continuous Bag of Words)
CBOW是Word2Vec中的一个核心模型,它通过上下文词预测目标词,帮助我们在没有标签的情况下学习词向量。它的主要优点在于计算效率较高,适用于大规模语料库,且能够学习到较为稳定的词嵌入。然而,CBOW在处理长距离依赖关系和词序信息方面相对较弱。原创 2025-02-17 16:52:29 · 827 阅读 · 0 评论 -
什么是word2vec
Word2Vec是一种强大的工具,可以将词汇映射到低维空间中,从而在无监督学习的基础上捕捉词语的语义关系。通过使用CBOW或Skip-gram模型,Word2Vec能够有效地学习文本的深层次语义,并广泛应用于文本分类、情感分析、机器翻译等任务中。尽管它存在一些局限性,如无法处理多义词和长距离依赖,但作为一种经典的词向量学习模型,它为后续的深度学习模型(如GloVe、BERT等)提供了重要的启示和基础。原创 2025-02-17 16:43:35 · 1182 阅读 · 0 评论
分享