<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Lesson 5
v1.0.0, 2016.12 by David Yi 
v1.0.1, 2017.02 modified by Yimeng Zhang
v1.1, 2020.4 edit by David Yi
本次内容要点
字典dict 用法
元组tuple 用法
思考：中文分词
字典dict 用法
字典是另一种可变容器模型，可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(
Step1:  元组Tuple 用法
Tuple 也是一种有序列表，在存储数据方面和列表很相似，为了区分，我们叫它元组。
Tuple 一旦内容存储后，就不能修改；这样的好处是数据很安全。
应用范围：在我们需要使用列表功能的时候，但是又不需要改变这个列表的内容，用元组 Tuple 功能会很安全，不用担心程序中不小心修改了其内容。Python 在向函数传递多个参数的时候，就是采用元组，保证参数在被调用的过程中的安全。
Step2:  思考
中文分词，是一个很有趣的话题，也是机器学习中关于语言处理的最基本的概念。今天我们看看 Python 怎么处理中文分词;
需要先安装 jieba 这个 Python 的库，使用 pip install jieba;
在 notebook 中执行命令可以在命令前面价格 ！来进行;
导入 jieba 之后，第一次运行会有一个初始化过程，稍稍产生一些影响。
Step3:  词性
北大词性标注集
Ag     形语素     形容词性语素。形容词代码为a，语素代码ｇ前面置以A。
a       形容词      取英语形容词adjective的第1个字母。
ad 副形词 直接作状语的形容词。形容词代码a和副词代码d并在一起。
an 名形词 具有名词功能的形容词。形容词代码a和名词代码n并在一起。
b       区别词      取汉字“别”的声母。
c       连词        取英语连词conjunction的第1个字母。
Dg     副语素     副词性语素。副词代码为d，语素代码ｇ前面置以D。
d       副词     取adverb的第2个字母，因其第1个字母已用于形容词。
e       叹词     取英语叹词exclamation的第1个字母。
f        方位词      取汉字“方”的声母。
g  语素    绝大多数语素都能作为合成词的“词根”，取汉字“根”的声母。
h       前接成分   取英语head的第1个字母。
i        成语        取英语成语idiom的第1个字母。
j        简称略语  取汉字“简”的声母。
k       后接成分
l        习用语     习用语尚未成为成语，有点“临时性”，取“临”的声母。
m       数词     取英语numeral的第3个字母，n，u已有他用。
Ng     名语素     名词性语素。名词代码为n，语素代码ｇ前面置以N。
n   名词        取英语名词noun的第1个字母。
nr  人名        名词代码n和“人(ren)”的声母并在一起。
ns      地名     名词代码n和处所词代码s并在一起。
nt      机构团体    “团”的声母为t，名词代码n和t并在一起。
nz     其他专名    “专”的声母的第1个字母为z，名词代码n和z并在一起。 
o       拟声词     取英语拟声词onomatopoeia的第1个字母。
p       介词     取英语介词prepositional的第1个字母。
q       量词        取英语quantity的第1个字母。
r       代词        取英语代词pronoun的第2个字母,因p已用于介词。
s       处所词     取英语space的第1个字母。
Tg     时语素      时间词性语素。时间词代码为t,在语素的代码g前面置以T。
t     时间词      取英语time的第1个字母。
u       助词        取英语助词auxiliary 的第2个字母,因a已用于形容词。
Vg     动语素      动词性语素。动词代码为v。在语素的代码g前面置以V。
v       动词        取英语动词verb的第一个字母。
vd     副动词      直接作状语的动词。动词和副词的代码并在一起。
vn     名动词      指具有名词功能的动词。动词和名词的代码并在一起。
w      标点符号   
x       非语素字    非语素字只是一个符号，字母x通常用于代表未知数、符号。
y       语气词      取汉字“语”的声母。
z      状态词      取汉字“状”的声母的前一个字母。
延展思考：
能够根据分词和词性的情况，做一个简单的机器人聊天软件？
彩蛋：
<ASSISTANT_TASK:>
Python Code:
# 定义字典
# 访问字典中的 key-value
d = {'Tom': 95, 'Mary': 90, 'Tracy': 92}
print(d)
print(d['Tom'])
# 字典增加元素，直接定义值即可
d['Hugo'] = 85
print(d)
# 修改字典元素的值
d['Tom'] = 97
print(d)
# 字典是否存在某个 key
print('Tom' in d)
# 如果要获得不存在的 key 的 value，可以设置默认值
print(d.get('Tommy',80))
# 去获得不存在的 key 的 value，会报错
print(d['Tommy'])
# 字典删除 key
d = {'Tom': 95, 'Mary': 90, 'Tracy': 92}
print(d)
# 删除 key
d.pop('Tom')
print(d)
# 获得字典的长度
# 定义一个空的字典
d = {}
# 造一些字典内容
# str 函数将整数转换为字符串
for i in range(30):
    d['id_'+str(i)] = i*3
print(d)
print(len(d))
Explanation: Lesson 5
v1.0.0, 2016.12 by David Yi 
v1.0.1, 2017.02 modified by Yimeng Zhang
v1.1, 2020.4 edit by David Yi
本次内容要点
字典dict 用法
元组tuple 用法
思考：中文分词
字典dict 用法
字典是另一种可变容器模型，可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割，每个对之间用逗号(,)分割，整个字典包括在花括号({})中，格式如 d = {key1 : value1, key2 : value2 }
字典中的 key 值不可以重复（第一次定义后不能重复定义）。
字典的几个特点：
1. 查找和插入的速度极快，不会随着key的增加而变慢； 
2. 需要占用大量的内存，内存浪费多。   
而 list 相反：
1. 查找和插入的时间随着元素的增加而增加； 
2. 占用空间小，浪费内存很少。   
字典的基本操作：
* 创建字典
* 访问字典中的 key-value
* 修改字典中的 key-value
* 获得字典中指定 key 的 value
* 删除字典中的 key（value 也就消失了）
End of explanation
# 创建元组，用小括号
t = ('Tom', 'Jerry', 'Mary')
print(t)
# 访问元组的元素
print(t[1])
# 元组创建后是不能修改的
# 会报错
t.append('Someone')
# 元组创建后是不能修改的
# 像列表一样去定义值也会报错
# 'tuple' object does not support item assignment
t[1] = 'aaa'
# 看看 tuple 有什么方法，你会发现很少
print(dir(tuple))
# 创建复杂一点的元组
t1  = ['A', 'B', 'C']
t2 =(t1, 100, 200)
print(t2)
# 变通的实现"可变"元组内容
t1  = ['A', 'B', 'C']
t2 =(t1, 100, 200)
print(t1)
print(t2)
# tuple的每个元素，指向永远不变，但指向的元素本身是可变的
t1.append('D')
print(t1)
print(t2)  
# 创建只有1个元素的元组
# 下面这样是不行的
t = (1)
# l成了一个整数，因为这里的括号有歧义，被认作数学计算里的小括号
print(type(t))  
# 1个元素的元组必须加逗号来消除歧义
t = (1,)
print(type(t))
print(t)
Explanation: 元组Tuple 用法
Tuple 也是一种有序列表，在存储数据方面和列表很相似，为了区分，我们叫它元组。
Tuple 一旦内容存储后，就不能修改；这样的好处是数据很安全。
应用范围：在我们需要使用列表功能的时候，但是又不需要改变这个列表的内容，用元组 Tuple 功能会很安全，不用担心程序中不小心修改了其内容。Python 在向函数传递多个参数的时候，就是采用元组，保证参数在被调用的过程中的安全。
End of explanation
!pip install jieba
import jieba
# 全模式
# 把句子中所有的可以称此的词语都扫描出来，速度非常快，但是不能解决歧义
seg_list = jieba.cut("今天上海的天气怎么样", cut_all = True)
print("Full Mode: " + "/ ".join(seg_list))  
# 精确模式
# 试图将句子最精确的切开，适合文本分析
seg_list = jieba.cut("明天纽约下雨么", cut_all = False)
print("Default Mode: " + "/ ".join(seg_list))  
# 默认是精确模式
seg_list = jieba.cut("现在天气怎么样")  
print(", ".join(seg_list))
# 默认是精确模式
seg_list = jieba.cut("小明硕士毕业于中国科学院计算所，后在日本京都大学深造")  
print(", ".join(seg_list))
# 搜索引擎模式
# 在精确模式的基础上，对长词再次切分，提高召回率，适合用于搜索引擎分词    
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所，后在日本京都大学深造") 
print(", ".join(seg_list))
# 看看网络上的段子，分词带来的烦恼
seg_list = jieba.cut_for_search("黑夜总会过去") 
print(", ".join(seg_list))
seg_list = jieba.cut("黑夜总会过去", cut_all = True)
print(", ".join(seg_list))
# 默认是精确模式
seg_list = jieba.cut("2016年第一季度支付事业部交易量报表")  
print(','.join(seg_list))
# 默认是精确模式
seg_list = jieba.cut("2016年第一季度支付事业部交易量报表")  
for i in seg_list:
    print(i)
import jieba.posseg as pseg
words = pseg.cut("我爱北京天安门")
for word, flag in words:
    print('%s %s' % (word, flag))
Explanation: 思考
中文分词，是一个很有趣的话题，也是机器学习中关于语言处理的最基本的概念。今天我们看看 Python 怎么处理中文分词;
需要先安装 jieba 这个 Python 的库，使用 pip install jieba;
在 notebook 中执行命令可以在命令前面价格 ！来进行;
导入 jieba 之后，第一次运行会有一个初始化过程，稍稍产生一些影响。
End of explanation
print('\n'.join([''.join([('ILOVEYOU'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)]))
Explanation: 词性
北大词性标注集
Ag     形语素     形容词性语素。形容词代码为a，语素代码ｇ前面置以A。
a       形容词      取英语形容词adjective的第1个字母。
ad 副形词 直接作状语的形容词。形容词代码a和副词代码d并在一起。
an 名形词 具有名词功能的形容词。形容词代码a和名词代码n并在一起。
b       区别词      取汉字“别”的声母。
c       连词        取英语连词conjunction的第1个字母。
Dg     副语素     副词性语素。副词代码为d，语素代码ｇ前面置以D。
d       副词     取adverb的第2个字母，因其第1个字母已用于形容词。
e       叹词     取英语叹词exclamation的第1个字母。
f        方位词      取汉字“方”的声母。
g  语素    绝大多数语素都能作为合成词的“词根”，取汉字“根”的声母。
h       前接成分   取英语head的第1个字母。
i        成语        取英语成语idiom的第1个字母。
j        简称略语  取汉字“简”的声母。
k       后接成分
l        习用语     习用语尚未成为成语，有点“临时性”，取“临”的声母。
m       数词     取英语numeral的第3个字母，n，u已有他用。
Ng     名语素     名词性语素。名词代码为n，语素代码ｇ前面置以N。
n   名词        取英语名词noun的第1个字母。
nr  人名        名词代码n和“人(ren)”的声母并在一起。
ns      地名     名词代码n和处所词代码s并在一起。
nt      机构团体    “团”的声母为t，名词代码n和t并在一起。
nz     其他专名    “专”的声母的第1个字母为z，名词代码n和z并在一起。 
o       拟声词     取英语拟声词onomatopoeia的第1个字母。
p       介词     取英语介词prepositional的第1个字母。
q       量词        取英语quantity的第1个字母。
r       代词        取英语代词pronoun的第2个字母,因p已用于介词。
s       处所词     取英语space的第1个字母。
Tg     时语素      时间词性语素。时间词代码为t,在语素的代码g前面置以T。
t     时间词      取英语time的第1个字母。
u       助词        取英语助词auxiliary 的第2个字母,因a已用于形容词。
Vg     动语素      动词性语素。动词代码为v。在语素的代码g前面置以V。
v       动词        取英语动词verb的第一个字母。
vd     副动词      直接作状语的动词。动词和副词的代码并在一起。
vn     名动词      指具有名词功能的动词。动词和名词的代码并在一起。
w      标点符号   
x       非语素字    非语素字只是一个符号，字母x通常用于代表未知数、符号。
y       语气词      取汉字“语”的声母。
z      状态词      取汉字“状”的声母的前一个字母。
延展思考：
能够根据分词和词性的情况，做一个简单的机器人聊天软件？
彩蛋：
End of explanation
<END_TASK>