首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snorkel:自动编写几个标签函数

Snorkel:自动编写几个标签函数
EN

Stack Overflow用户
提问于 2022-05-26 20:18:34
回答 1查看 70关注 0票数 0

我的目标是创建N个标签函数( snorkel包中的LFs),使用比一个接一个地编写它更优雅的方法。由于我希望有更多的单一正则表达式被引用,我想找到一种方法来更自动地完成它。下面我介绍一下我的用例。

代码语言:javascript
复制
@labeling_function() 
def regex_give(x):
    return FEATURE if re.search(r"give", x, flags=re.I) else ABSTAIN
@labeling_function()
def regex_note(x):
    return FEATURE if re.search(r"note", x, flags=re.I) else ABSTAIN   
@labeling_function()
def regex_pay(x):
    return FEATURE if re.search(r"pay", x, flags=re.I) else ABSTAIN

lfs = [regex_give, regex_note, regex_pay]

applier = LFApplier(lfs=lfs)
L_train = applier.apply(df.text)

LFAnalysis(L=L_train, lfs=lfs).lf_summary(df.feat_flg)

是否有方法在for循环中或使用任何不同的方法来定义这些标签函数?

我正在使用以下教程:https://www.snorkel.org/use-cases/01-spam-tutorial#4-combining-labeling-function-outputs-with-the-label-model

EN

回答 1

Stack Overflow用户

发布于 2022-05-26 20:49:15

最简单的方法可能是创建一个工厂函数:

代码语言:javascript
复制
def factory(regex):

    @labeling_function()
    def regex_labeler(x):
        return FEATURE if re.search(regex, x, flag=re.I) else ABSTAIN

    return regex_labeler

label_funcs = [factory(i) for i in [r"pay", r"give", r"note"]]

这种方法的主要问题是,除非将工厂返回的值分配给一个更有意义的变量,否则函数名就会失去一些可解释性。

代码语言:javascript
复制
give_func = factory(r"give")
# etc...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72397603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档