###### 问题遇到的现象和发生背景
我不太清楚这个返回是什么意思
return Tokenizer(categorical2index, index2categorical, contain_pad)
如果我有一个列表categorical=['zhou','hai','bo','bo']
我应该怎么对它进行cat2index和index2cat的操作呢?
###### 问题相关代码,请勿粘贴截图
from typing import Any, Callable, Dict, List, Optional
class Tokenizer(object): # 语法分析
def __init__(
self,
cat2index: Dict[Any, Any],
index2cat: Optional[Dict[Any, Any]] = None,
# optional的意思是可选项,在一个方法里如果有input是optional的话,不选就是选择默认,也就是default 。使用 Optional 是为了让 IDE 识别到该参数有一个类型提示,可以传指定的类型和 None,且参数是可选非必传的
padding: bool = False,
default_value: Any = 0,
) -> None:
super().__init__()
self.cat2index = cat2index
self.index2cat = index2cat
self.padding = padding
self.default_value = default_value
def encode(self, data: Any) -> Any:
return self.cat2index.get(data, 0)
def decode(self, index: Any) -> Any:
assert self.index2cat is not None
return self.index2cat[index]
def __len__(self):
return len(self.cat2index)
def categorical_to_index(categorical: List[Any], contain_pad=False):
set_categorical = set(categorical) # set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
padding = 1 if contain_pad else 0
categorical2index = {cat: i + padding for i, cat in enumerate(set_categorical)} #使用enumerate给序列加上了序号(index)
if contain_pad:
categorical2index["<PAD>"] = 0 # Padding or Unseen
index2categorical = {v: k for k, v in categorical2index.items()} #将键和值交换
return Tokenizer(categorical2index, index2categorical, contain_pad)
###### 运行结果及报错内容
###### 我的解答思路和尝试过的方法
###### 我想要达到的结果