SunnyEdward 2022-01-29 10:23 采纳率: 75%
浏览 15
已结题

这个类和函数是怎么相互作用的呢?如何实现?

 ###### 问题遇到的现象和发生背景
我不太清楚这个返回是什么意思
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的意思是可选项,在一个方法里如果有inputoptional的话,不选就是选择默认,也就是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)


 ###### 运行结果及报错内容

 ###### 我的解答思路和尝试过的方法

 ###### 我想要达到的结果

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 2月6日
    • 创建了问题 1月29日

    悬赏问题

    • ¥40 微信小程序 使用vant组件ActionSheet 下拉面板,内容区域滚动会触发。scroll-view自定义下拉刷!即使设置停止下拉刷新也不行。
    • ¥15 专业问题提问,7月5号2点之前
    • ¥25 使用cube ai 导入onnx模型时报错
    • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
    • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
    • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
    • ¥15 使用华为ENSP软件模拟实现该实验拓扑
    • ¥15 通过程序读取主板上报税口的数据
    • ¥15 matlab修改为并行
    • ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373