【NLP】文本数据处理实践

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
简介: 【NLP】文本数据处理实践,基于百度飞桨开发,参考于《机器学习实践》所作。

【NLP】文本数据处理实践


作者简介:在校大学生一枚,华为云享专家,阿里云星级博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建设专家委员会(TIPCC)志愿者,以及编程爱好者,期待和大家一起学习,一起进步~
.
博客主页ぃ灵彧が的学习日志
.
本文专栏机器学习
.
专栏寄语:若你决定灿烂,山无遮,海无拦
.
在这里插入图片描述

前言

什么是NLP?

自然语言处理(Natural Language Processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法,是一门融语言学、计算机科学、数学于一体的科学,主要用于机器翻译、舆情监测、自动摘要、观点提取、文本分类、问题问答、文本语义对比、语音识别、中文OCR等方面。


一、文本序列化

(一)、创建数据字典


import jieba
import numpy as np

dict_path = 'work/dict.txt'
data_sat = 'work/data1.txt'  # 'work/data2.txt'中文

#创建数据字典,存放位置:dicts.txt。在生成之前先清空dict.txt
#在生成all_data.txt之前,首先将其清空
with open(dict_path, 'w') as f:
    f.seek(0)
    f.truncate() 


dict_set = set()
train_data = open(data_sat)
for data in train_data:
    seg = jieba.lcut(data)
    for datas in seg:
        if not datas is " ":
            if not datas is '\n':
                dict_set.add(datas)

dicts = open(dict_path,'w')
for data in dict_set:
    dicts.write(data + '\n')
dicts.close()

(二)、定义数据函数

def load_vocab(vocab_file):
    """Loads a vocabulary file into a dictionary."""
    vocab = {}
    with open(vocab_file, "r", encoding="utf-8") as reader:
        tokens = reader.readlines()
    for index, token in enumerate(tokens):
        token = token.rstrip("\n").split("\t")[0]
        vocab[token] = index
    return vocab

vocab = load_vocab(dict_path)

for k, v in vocab.items():
    print(k, v)

部分输出结果如图1所示:

在这里插入图片描述

(三)、训练数据

train_data = open(data_sat)
for data in train_data:
    
    input_ids = []
    input_names = ''
    for token in jieba.cut(data):
        # print(token)
        # break
        if not token is " ":
            if not token is '\n':
                token_id = vocab.get(token, 1)
                input_ids.append(token_id)
                input_names += token
                input_names += ' '
    print(input_names)
    print(input_ids)

部分输出结果如下图2所示:

在这里插入图片描述


二、one-hot文本向量化

import numpy as np
#初始数据:每个样本是列表的一个元素(本例中的样本是一个句子,但也可以是一整篇文档)
train_data = open('work/data2.txt')
samples = []
for data in  train_data:
    samples.append(data)
# print(samples)

# samples = ['The cat sat on the mat.', 'The dog ate my homework.']
#构建数据中所有标记的索引
token_index = {}
for sample in samples:
    #利用 split 方法对样本进行分词。在实际应用中,还需要从样本中去掉标点和特殊字符
    for word in jieba.lcut(sample):
        # print(word)
        if word not in token_index:
            #为每个唯一单词指定一个唯一索引。注意,没有为索引编号 0 指定单词
            token_index[word] = len(token_index) + 1
print(token_index)
#对样本进行分词。只考虑每个样本前 max_length 个单词
max_length = 10
results = np.zeros((len(samples), max_length, max(token_index.values()) + 1))
for i, sample in enumerate(samples):
    # print(sample)
    # datas = jieba.lcut(sample)
    #每句话只取10个单词
    for j, word in list(enumerate(jieba.lcut(sample)))[:max_length]:
        index = token_index.get(word)
        #将结果保存在 results 中
        results[i, j, index] = 1.
for i in range(len(samples)):
    print(f'data:{samples[i][:-1]}')
    print(f'ont-hot:{results[i]}')

部分输出结果如下图3所示:

在这里插入图片描述


三、TF-IDF文本向量化

import numpy as np
 
from sklearn.feature_extraction.text import CountVectorizer  
from sklearn.feature_extraction.text import TfidfTransformer
 
def sklearn_tfidf():
    train_data = open('work/data1.txt')
    samples = []
    for data in  train_data:
        samples.append(data)
    
    vectorizer = CountVectorizer() #将文本中的词语转换为词频矩阵  
    X = vectorizer.fit_transform(samples) #计算个词语出现的次数
       
    transformer = TfidfTransformer()  
    tfidf = transformer.fit_transform(X)  #将词频矩阵X统计成TF-IDF值 
    for i in range(len(samples)):
        print(samples[i])
        print(tfidf.toarray()[i])
sklearn_tfidf()

部分输出结果如图4所示:

在这里插入图片描述


总结

本系列文章内容为根据清华社出版的《机器学习实践》所作的相关笔记和感悟,其中代码均为基于百度飞桨开发,若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

最后,引用本次活动的一句话,来作为文章的结语~( ̄▽ ̄~)~:

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

在这里插入图片描述

相关文章
|
15天前
|
机器学习/深度学习 自然语言处理 知识图谱
GraphRAG在自然语言处理中的应用:从问答系统到文本生成
【10月更文挑战第28天】作为一名自然语言处理(NLP)和图神经网络(GNN)的研究者,我一直在探索如何将GraphRAG(Graph Retrieval-Augmented Generation)模型应用于各种NLP任务。GraphRAG结合了图检索和序列生成技术,能够有效地处理复杂的语言理解和生成任务。本文将从个人角度出发,探讨GraphRAG在构建问答系统、文本摘要、情感分析和自动文本生成等任务中的具体方法和案例研究。
37 5
|
17天前
|
自然语言处理 Python
如何使用自然语言处理库`nltk`进行文本的基本处理
这段Python代码展示了如何使用`nltk`库进行文本的基本处理,包括分词和词频统计。首先需要安装`nltk`库,然后通过`word_tokenize`方法将文本拆分为单词,并使用`FreqDist`类统计每个单词的出现频率。运行代码后,会输出每个词的出现次数,帮助理解文本的结构和常用词。
|
1月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
46 2
|
1月前
|
机器学习/深度学习 存储 自然语言处理
从理论到实践:如何使用长短期记忆网络(LSTM)改善自然语言处理任务
【10月更文挑战第7天】随着深度学习技术的发展,循环神经网络(RNNs)及其变体,特别是长短期记忆网络(LSTMs),已经成为处理序列数据的强大工具。在自然语言处理(NLP)领域,LSTM因其能够捕捉文本中的长期依赖关系而变得尤为重要。本文将介绍LSTM的基本原理,并通过具体的代码示例来展示如何在实际的NLP任务中应用LSTM。
70 4
|
1月前
|
自然语言处理
【NLP自然语言处理】文本特征处理与数据增强
【NLP自然语言处理】文本特征处理与数据增强
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言处理】python之人工智能应用篇——文本生成技术
文本生成是指使用自然语言处理技术,基于给定的上下文或主题自动生成人类可读的文本。这种技术可以应用于各种领域,如自动写作、聊天机器人、新闻生成、广告文案创作等。
108 8
|
3月前
|
机器学习/深度学习 存储 人工智能
自然语言处理 Paddle NLP - 检索式文本问答-理论
自然语言处理 Paddle NLP - 检索式文本问答-理论
28 1
|
3月前
|
机器学习/深度学习 自然语言处理 监控
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
PyTorch 在自然语言处理中的应用实践
【8月更文第29天】随着深度学习技术的发展,自然语言处理(NLP)领域取得了显著的进步。PyTorch 作为一款强大的深度学习框架,因其灵活性和易用性而被广泛采用。本文将介绍如何利用 PyTorch 构建文本分类模型,并以情感分析为例进行详细介绍。
44 0
|
3月前
|
机器学习/深度学习 自然语言处理 算法
nlp文本提取关键词
8月更文挑战第21天
45 0