Datawhale 2024 年 AI 夏令营 基于术语翻译的机器学习入门知识

m0_64253898 2024-07-22 09:31:03 阅读 68

目录

一、神经网络模型

1.seq2seq

2.RNN

二、相关库

1.torchtext

2.jieba

3.BLUE

4.spacy


 

一、神经网络模型

1.seq2seq

本次学习采用seq2seq模型

seq2seq:RNN的变体,序列到序列模型,即Encoder-Decoder模型

特点:输入和输出序列不定长

实现办法:转化为定长变量C,作为连接两者的桥梁

 参考链接:https://blog.csdn.net/zhuge2017302307/article/details/119979892

 

2.RNN

RNN循环神经网络,字面意思,循环

RNN详解​​​​​​      什么是循环神经网络 (RNN)? | IBM(RNN)

专门处理序列数据的神经网络,使数据在网络的环状连接中循环传递的环状连接模型,其循环在于已产生的输出可以对其他输出产生影响。

 

问题:长范围依赖关系,导致梯度消失和梯度爆炸问题

解决办法:LSTM和GRU,RNN的变体               

 解析通俗易懂          LSTM与GRU:原理、结构与实践

    LSTM:新增门控机制解决长程依赖关系,核心是细胞状态,三个门 :输入门、遗忘门、输出门

    GRU:LSTM的简化,两个门:更新门、重置门。相较于LSTM参数较少,效率提高

 


二、相关库

本次task涉及到几个库torchtext,jieba,sacrebleu,spacy

torchtext 文本预处理

jieba中文词分

sacrebleu一种bleu评估方式

spacy分词库,支持多种语言

tokenizer:执行分词操作,一种文本预处理器,将文本转化为序列,将序列进行向量化,输入模型进行处理

文本预处理利器

导入库及创建实例:

from keras.preprocessing.text import Tokenizer#导入类

#若没有keras,执行pip语句安装

#pip install keras

tokenizer = Tokenizer()#创建实例

定义:

keras.preprocessing.text.Tokenizer(num_words=None,

filters='!"#$%&()*+,-./:;<=>?@[\]^_`{|}~ ',#所要过滤的字符 code>

lower=True, #是否全部转换为小写:是

split=' ', #设置分隔符:(空格)code>

char_level=False, #是否认为字符为字母:否

oov_token=None, #替换不在词汇表中的单词:不替换

document_count=0)#文档数目(统计词频)

方法:

(1)构建词汇表,输入训练文本

fit_on_texts

 

(2)文本数据转化为序列

texts_to_sequences

 

(3)文本转化为指定模式特征矩阵

texts_to_matrix

 

(4)输入已预处理的转化为整数序列的文本数据

fit_on_sequences

 

(5)将分割好的单词序列向量化

sequences_to_matrix

 

 

1.torchtext

首先在了解torchtext之前应该先熟悉pytorch(官方教程)

Torch:与Numpy类似,张量(Tensor)操作库

pytorch是基于Torch的python开源机器学习库

torchtext 简化数据加载和预处理流程。

安装:

pip install torchtext

导入:

import torch

from torchtext import data, datasets

field :原始文本转化为张量

from torchtext.data import Field

TEXT = Field(tokenize='spacy', lower=True)code>

A = ["python is wanderful", "I love python"]

B= [TEXT.preprocess(text) for text in A]#预处理

print(B)

Dataset:定义数据结构和加载方式,文本操作

from torchtext.data import IMDB

def load_imdb_dataset(path):

train_data, test_data = IMDB.splits(path)

return train_data, test_data

迭代器:

        Iterator              最基础迭代器

        BucketIterator   按长度自动分组,减少填充浪费

        BPTTIterator     处理时间序列数据,分割成长度固定的序列

参考链接:

 用法示例及完整代码

https://blog.csdn.net/nlpuser/article/details/88067167TorchText


2.jieba

jieba:流行的中文分词库,自定义字典,开源

下载:

<code>pip install jieba

引用:

import jieba

三种模式:

        精确模式              默认,最准确

        全模式                  所有组合

        搜索引擎模式       两者结合,兼顾准确和组合

import jieba

text = "大家一起来玩象棋"

seg_list_exact = jieba.cut(text, cut_all=False)

print("精确模式分词:", "/".join(seg_list_exact))# 精确模式

seg_list_full = jieba.cut(text, cut_all=True)

print("全模式分词:", "/".join(seg_list_full))# 全模式

seg_list_search = jieba.cut_for_search(text)

print("搜索引擎模式分词:", "/".join(seg_list_search)) # 搜索引擎模式

参考链接:

jieba的使用

https://blog.csdn.net/codejas/article/details/80356544

 


3.sacrebleu

一种用于机器化评估的自动化工具,支持复杂评估方法,简化BLEU分数计算过程

BLEU

一种机器翻译测评方法,基于N-gram匹配方法

   精度

db3cc340397a4408b94a630e307d1c94.png

惩罚因子

0be66136d8b84d189bfd10bb55ff31f1.png

参考链接:

BLEU算法详解

https://www.cnblogs.com/by-dream/p/7679284.html


4.spacy

spacy语言分词器,70+语言,甚强大,与jiabe类似

安装:

     清华源

<code>pip install spacy -i https://pypi.tuna.tsinghua.edu.cn/simple

     豆瓣源 

pip install spacy -i https://pypi.douban.com/simple

下载安装语言模型:(以英文为例)

python -m spacy download en_core_web_sm

参考链接:

spaCy入门与实战

https://blog.csdn.net/qq_33578950/article/details/130157831


AI工具:

讯飞星火大模型,可进行代码解析,使用方便,便于理解

星火AI

 

 

 

 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。