【问题标题】:Lemmatizer/PoS-tagger for italian in PythonPython 中意大利语的 Lemmatizer/PoS 标记器
【发布时间】:2022-10-26 01:21:29
【问题描述】:

我正在寻找适用于 Python 的意大利语 Lemmatizer/PoS 标记器。我尝试使用 Spacy,它可以工作,但它不是很精确,特别是对于它经常返回错误引理的动词。 NLKT 只有英语作为语言。我正在寻找针对意大利语的优化工具,它存在吗? 如果它不存在,是否有可能在给定语料库的情况下创建它?创建它需要什么工作?

【问题讨论】:

    标签: nlp nltk spacy pos-tagger lemmatization


    【解决方案1】:

    我也发现自己陷入了这个问题。我发现最好的意大利词形还原器之一是TreeTagger。对于某些项目,我更喜欢 Spacy 的词形还原器(我也认为它在 POS 标记方面可能会更好)。您也可以在线测试它是否适合您的用例。

    我发现在我的 Spacy 管道中使用它非常有用,仅用于词形还原,以保留 Spacy 提供的基础设施。这就是你如何在 Python 中用 TreeTagger 替换 Spacy 的词形分析器的方法,这要归功于treetaggerwrapper(你可以很容易地用 POS-tagger 做同样的事情):

    from treetaggerwrapper import TreeTagger
    ...
    
    nlp = spacy.load("it_core_news_lg")
    
    TREETAGGER = TreeTagger(TAGDIR="path_to_treetagger", TAGLANG="it")
    
    @Language.component("treetagger")
    def treetagger(doc):
        tokens = [token.text for token in doc if not token.is_space]
    
        tags = TREETAGGER.tag_text(tokens, tagonly=True)
        lemmas = [tag.split("	")[2].split("|")[0] for tag in tags]
    
        j = 0
        for token in doc:
            if not token.is_space:
                token.lemma_ = lemmas[j]
                j += 1
            else:
                token.lemma_ = " "
    
        return doc
    
    nlp.replace_pipe("lemmatizer", "treetagger")
    

    这可能是一个有用的临时解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多