【问题标题】:Creating an object outside before a function and use it in the function在函数之前创建一个对象并在函数中使用它
【发布时间】:2022-11-10 22:06:37
【问题描述】:

你好我有一个类,我加载一个拥抱脸翻译模型,它还有一个执行实际翻译的函数:

class Translator:
    def __init__(self, language):
        model = f"Helsinki-NLP/opus-mt-{language}-en"
        self.translator = pipeline("translation", model=model, device=0)

    def translate(self, text): 
        translated_text = self.translator(text)
        return translated_text

我还有一个函数,我一遍又一遍地使用 Translator 对象。我的问题是:在这样的函数之外创建 Translator 类的实例是正确的,还是有更好的方法?

#Example code

from anotherdir import Translator

translator = Translator("de")

def load_text_and_translate(list_of_non_translated_text):
    final_translated_text_list = []

    for text in list_of_non_translated_text:
        translated_text = translator.translate(text)
        final_translated_text_list.append(translated_text)

    return final_translated_text_list

希望我已经让自己理解了,我试图找出一种更好的方法来做到这一点,但一直无法想出一些东西。

【问题讨论】:

    标签: python oop nlp language-translation


    【解决方案1】:

    创建一个可以在许多地方使用的翻译器很好。但是让你的函数将翻译器作为参数,而不是依赖于全局变量。

    def load_text_and_translate(tr, list_of_non_translated_text):
        final_translated_text_list = []
    
        for text in list_of_non_translated_text:
            translated_text = tr.translate(text)
            final_translated_text_list.append(translated_text)
    
        return final_translated_text_list
    
    translator1 = Translator("de")
    translator2 = Translator("fi")
    text = ["hello", "world"]
    
    german_translation = load_text_and_translate(translator1, text)
    finnish_translation = load_text_and_translate(translator2, text)
    

    【讨论】:

    • 哦,哦!非常感谢 :)
    猜你喜欢
    • 1970-01-01
    • 2013-01-14
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多