首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python表示意大利语的Lemmatizer/PoS-tagger

用Python表示意大利语的Lemmatizer/PoS-tagger
EN

Stack Overflow用户
提问于 2022-10-18 18:42:47
回答 1查看 77关注 0票数 2

我正在为意大利语寻找一个Lemmatizer/PoS,它在Python上工作。我试过了Spacy,它很有效,但是它不是很精确,特别是对于动词,它经常返回错误的引理。NLKT只有英语作为语言。我在为意大利语寻找一个优化的工具,它存在吗?如果它不存在,是否有可能,给定一个语料库,创建它?创建它所需的工作是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-10-25 17:21:29

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

我发现在我的Spacy管道中使用它非常有用,只用于柠檬化,以保持Spacy提供的基础设施。这就是如何在Python中用TreeTagger替换Spacy的狐猴,这要感谢treetaggerwrapper (您可以很容易地对POS-tagger做同样的操作):

代码语言:javascript
复制
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("\t")[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")

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74115996

复制
相关文章

相似问题

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