文章目录
- 自述
- 代码出处
- 目录
- 代码
- 1. Preparations
- from _ _ future _ _ import
- 2. Load & Preprocess Data
- os.path.join函数
- def自定义函数
- with open as 读写文件
自述
我是编程小白,别看注册时间长,但从事的不是coding工作,为了学AI才开始自学Python。
平时就是照着书上敲敲代码,并没有深刻理解。现在想要研究chatbot了,才发现自己的coding水平急需加强,所以开这个系列记录自己一行行扣代码的过程。当然这不是从0开始的,只是把自己不理解的写出来,将来也可以作为资料备查。
最后还要重申一下,我没有系统学过编程,写这个系列就是想突破自己,各位大神请不吝赐教!
代码
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()
文件的读写方式列表: