nlp - Python 中意大利语的 Lemmatizer/PoS-tagger

标签 nlp nltk spacy pos-tagger lemmatization

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

最佳答案

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

我发现在我的 Spacy 管道中使用它非常有用,只是为了词形还原,以保留 Spacy 提供的基础设施。借助 treetaggerwrapper,您可以在 Python 中用 TreeTagger 替换 Spacy 的词形还原器(您可以轻松地使用 POS 标记器执行相同操作):

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")

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

关于nlp - Python 中意大利语的 Lemmatizer/PoS-tagger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74115996/

相关文章:

nltk.word_tokenize() 给出 AttributeError : 'module' object has no attribute 'defaultdict'

python - 在linux上的anaconda虚拟环境中下载spacy ray

nlp - 获取不正确的 POS 标签

python - 在Python中从句子中删除单词但不删除子词

azure - 命名实体识别 - 我们是否需要外部列表来匹配结果?

用于删除互联网行话/俚语/首字母缩略词的 python 模块

python - 使用 countvectorizer() 和 tfidfvectorizer() 向量化列表列表

python - PyCharm 和 NLTK : code completion (autocomplete) doesn't work

nlp - 这是 "corpus"的正确定义吗?

python - 如何应用 spacy 从任何文本中提取组织名称、位置?