一步步读懂Pytorch Chatbot Tutorial代码(一) - 加载和预处理数据

自述

我是编程小白,别看注册时间长,但从事的不是coding工作,为了学AI才开始自学Python。
平时就是照着书上敲敲代码,并没有深刻理解。现在想要研究chatbot了,才发现自己的coding水平急需加强,所以开这个系列记录自己一行行扣代码的过程。当然这不是从0开始的,只是把自己不理解的写出来,将来也可以作为资料备查。
最后还要重申一下,我没有系统学过编程,写这个系列就是想突破自己,各位大神请不吝赐教!

代码出处

Pytorch的CHATBOT TUTORIAL

https://pytorch.org/tutorials/beginner/chatbot_tutorial.html?highlight=gpu%20training

目录

一步步读懂Pytorch Chatbot Tutorial代码(一) - 加载和预处理数据
一步步读懂Pytorch Chatbot Tutorial代码(二) - 数据处理
一步步读懂Pytorch Chatbot Tutorial代码(三) - 创建字典
一步步读懂Pytorch Chatbot Tutorial代码(四) - 为模型准备数据
一步步读懂Pytorch Chatbot Tutorial代码(五) - 定义模型

代码

1. Preparations

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals

import torch
from torch.jit import script, trace
import torch.nn as nn
from torch import optim
import torch.nn.functional as F
import csv
import random
import re
import os
import unicodedata
import codecs
from io import open
import itertools
import math


USE_CUDA = torch.cuda.is_available()
device = torch.device("cuda" if USE_CUDA else "cpu")

from _ _ future _ _ import

先来说说单词两边的双下划线的含义:

官方解释:如果一个名字同时以双下划线开始和结束,则不会应用名称修饰,由双下划线前缀和后缀包围的变量不会被Python解释器修改。
但是Python保留了有双前导和双末尾下划线的名称,用于特殊用途。 这样的例子有,_ _ init _ _ 对象构造函数,或 _ _ call_ _ 它使得一个对象可以被调用。为了避免与将来的Python冲突,不要使用这个方法。

class chatBot:
    def __init__(self):
        self.__version__= 0.1
print("Chatbot Version:",chatBot().__version__)

得到结果

Chatbot Version: 0.1

还有其他下划线的用法可以参考这里https://www.runoob.com/w3cnote/python-5-underline.html

** from _ _ future _ _ import 代表了什么:**

_ _ future _ _ 应用在py2的代码中,为了让py2的代码能够使用py3的新特性

例如:
在python2.x的环境中使用下面语句,第三句就会报错。

from __future__ import print_function
print('Hello World!')
print 'Hello World!'

在这里插入图片描述

2. Load & Preprocess Data

其中数据已经放入data目录中

corpus_name = "cornell movie-dialogs corpus" #语料库的名字
corpus = os.path.join("data", corpus_name)

def printLines(file, n=10):
    with open(file, 'rb') as datafile:
        lines = datafile.readlines()
    for line in lines[:n]:
        print(line)

printLines(os.path.join(corpus, "movie_lines.txt"))

os.path.join函数

corpus_name = "cornell movie-dialogs corpus" #语料库的名字
corpus = os.path.join("data", corpus_name)
print(corpus)

得到结果 data/cornell movie-dialogs corpus

def自定义函数

def 开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的 具体功能实现代码,如果想要函数有返回值, 在 expressions 中的逻辑代码中用 return 返回。

定义函数时的参数是形参,调用函数时的参数是实参。

def printLines(file, n=10):

with open as 读写文件

由于直接使用open() 读取文件还需要close()来关闭,所以引入with语句来自动调用close()

**readlines()**方法返回列表,包含所有的行

with open(file, 'rb') as datafile:
        lines = datafile.readlines()

文件的读写方式列表:
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值