NLP文本预处理与张量表示全解析,Gateway 集成 JWT 身份认证:微服务统一认证的实战指南。
文本预处理与张量表示方法文本预处理是自然语言处理NLP中的关键步骤将原始文本转换为适合机器学习模型处理的格式。文本张量表示是预处理的核心环节通过数值化形式捕捉文本的语义和结构信息。常见文本张量表示方法词袋模型Bag of Words, BoW词袋模型忽略文本中词的顺序仅统计词频或存在性。将文本表示为向量维度为词汇表大小值为词的出现次数或二进制标记。优点简单高效适合小规模数据集。缺点丢失词序和语义信息维度可能过高。示例代码Pythonfrom sklearn.feature_extraction.text import CountVectorizer corpus [This is a sample text., Another example text.] vectorizer CountVectorizer() X vectorizer.fit_transform(corpus) print(X.toarray())TF-IDF词频-逆文档频率TF-IDF通过加权词频解决BoW中高频词主导的问题。公式为[ \text{TF-IDF}(t, d) \text{TF}(t, d) \times \text{IDF}(t) ] [ \text{IDF}(t) \log \frac{N}{1 \text{DF}(t)} ]其中( N )为文档总数( \text{DF}(t) )为包含词( t )的文档数。示例代码from sklearn.feature_extraction.text import TfidfVectorizer vectorizer TfidfVectorizer() X vectorizer.fit_transform(corpus) print(X.toarray())词嵌入Word Embedding词嵌入将词映射到低维连续向量空间捕获语义关系。常用方法包括Word2Vec、GloVe和FastText。Word2Vec通过Skip-gram或CBOW模型学习词向量。GloVe基于全局词共现矩阵的统计信息生成向量。FastText考虑子词信息适合形态丰富的语言。示例代码使用Gensimfrom gensim.models import Word2Vec sentences [[this, is, sample], [another, example]] model Word2Vec(sentences, vector_size100, window5, min_count1) print(model.wv[sample])预训练语言模型BERT、GPT等预训练模型通过上下文感知的嵌入表示文本支持动态生成词向量。示例代码使用Hugging Face Transformersfrom transformers import BertTokenizer, BertModel tokenizer BertTokenizer.from_pretrained(bert-base-uncased) model BertModel.from_pretrained(bert-base-uncased) inputs tokenizer(This is a sample text., return_tensorspt) outputs model(**inputs) print(outputs.last_hidden_state.shape)方法选择建议任务需求分类任务可用TF-IDF语义任务需词嵌入或预训练模型。数据规模小数据适合静态嵌入如Word2Vec大数据可用预训练模型。计算资源预训练模型需要GPU支持轻量级场景可选TF-IDF。实际应用中的注意事项需处理词汇表外词OOV尤其在词嵌入中。长文本需截断或分块以适应模型输入限制。多语言任务需选择支持跨语言的嵌入或模型如mBERT。通过合理选择文本张量表示方法能显著提升NLP任务的效果和效率。https://github.com/noisy-chard-59/ogs_7s4jhttps://github.com/noisy-chard-59/ogs_7s4j/blob/main/README.mdhttps://raw.githubusercontent.com/noisy-chard-59/ogs_7s4j/main/README.mdhttps://github.com/trig95-marimba/qcf_f3zshttps://github.com/trig95-marimba/qcf_f3zs/blob/main/README.md