【rasa】【python】学习过程中的一些理解总结

一、pickle的用法,以及为什么要用pickle

  pickle函数的使用直接来说就是序列化和反序列化。可以简单理解为保存某种格式到txt并加密,在需要使用时再解密并得到原始数据的序列模式。

(1)pickle函数的用法:

  一般来说最为常用的就是pickle.dump()和pickle.load()函数。对应的是序列化和反序列化过程,也可以理解为存档(保存原始数据结构)和读档(将所保存的文件返回原始数据结构)

两种函数在使用时都需要先打开txt文件再进行操作。使用前先导入pickle包。

①pickle.dump()示例:

dictionary_obj = r'dictionary_obj.txt'
with open(dictionary_obj,'wb') as f:     
  pickle.dump(dictionary,f)

②pickle.load()示例:

vector_path = "F:/pyProject/NativeNLP/data/dictionary_obj.txt"
f = open (vector_path,"rb")
vector_dict = pickle.load (f)
f.close()
其中的wb,rb代表的是打开方式(以二进制格式打开可写,以二进制格式打开可读,还有其他w、r、w+等等方式),因为pickle函数存储的文件是以二进制保存的,所以需要注意。

(2)使用pickle函数的意义:

  便于存储。序列化过程是从文本信息到二进制数据流的转换,而反序列化时就是转换为原始的数据流。二进制数据对于数据的存储更为便利。

  除此以外,借助pickle函数可以进字符串、列表、字典等数据的存储,将这些具有序列信息的数据进行保存和存储。

二、python类和实例的属性、方法的作用

  从个人理解来说,类就好比是一个框架,里面有各种各样的属性和规则。

  拿学生这个类来说,他代表了一个抽象的概念,我们可以根据需要进行填充。比如学生性别、年龄、班级这些都属于“学生”这个类的属性,而方法就是我们使用这个类的渠道。

比如想要知道这个学生的姓名,现实生活中我们需要进行查询,而这个查询过程,在类中就是借助方法如get_name函数实现的。

  类中会有相应的函数和属性,调用时使用"self."即可调用,同一类的多个对象共享方法和属性,但是不同实例化对象间并不共享。

  实例的意义就是将这个“学生”的类进行实际化,去填充。比如学生李明,男,18岁,3班等就是我们在实例化过程中进行填充的,也可以不进行赋值,因为存在默认值。

  借助类和实例属性、方法,可以让我们更好的理清逻辑,后期进行代码维护。


三、rasa添加组件的方法

  在初步了解rasa框架后,明白了各自模块的意义。rasa运行过程是按照pipeline一步步进行的,pipeline中规定了执行组件的顺序并设置了一些类内变量的初始值。

而在各个组件中均有自己的类和方法,并标明了自己运行所需要的和所提供的部分。

  想要添加一个新的组件,步骤如下:

①在相应分类的文件夹下建立文件:如分类、标记、数据等各种文件夹,根据实际组件分类进行选择。

②在rasa框架中的registry文件进行注册:注册分为两部分

  • 在component_classes中添加新建组件中的类名
  • 添加from 文件夹各级目录名.组件名 import 新建组件中的类名

③在配置文件中构建新的pipeline或者修改原有文件中的pipeline

  •  pipeline的顺序根据实际执行进行编写,先写的就是先执行的。例如分词应该处于变化成词向量之前等等。

④进行测试


四、python字典的使用

  字典的格式为: d = {key1 : value1, key2 : value2 }

①访问字典:dict[key1]

如果不存在这样的key值会报错:KeyError: 'key1’

②修改字典项:

  dict['key1'] = 8 # 更新
  dict['key3'] = "value3" # 添加

③删除字典项:

  del dict[key1]  # 删除键是'key1'的条目
  dict.clear()      # 清空字典所有条目
  del dict          # 删除字典

④匹配项:

dict.has_key(key)
如果键在字典dict里返回true,否则返回false

dict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值(最为常用,查key值并返回相应的value值)

例如:

temp=self.vector_dict[token.text] 就是返回vector_dict字典中key值为token.text相应值的value值

猜你喜欢

转载自www.cnblogs.com/lemonbo77/p/11700086.html