如何使用 SpaCy 解决西班牙语词形还原问题?

Y4R*_*D13 5 python lemmatization spacy

当尝试用西班牙语对超过 60,000 个单词的 csv 进行词形还原时SpaCy无法正确写入某些单词,我知道该模型并非 100% 准确。但是,我还没有找到任何其他解决方案,因为NLTK没有带来西班牙语核心。

有朋友在西班牙语的 Stackoverflow 上问过这个问题,但是这个社区和这个社区相比还是很小的,我们没有得到任何答案。

代码:

nlp = spacy.load('es_core_news_sm')

def lemmatizer(text):  
  doc = nlp(text)
  return ' '.join([word.lemma_ for word in doc])

df['column'] = df['column'].apply(lambda x: lemmatizer(x))
Run Code Online (Sandbox Code Playgroud)

我试图对某些我发现错误的词进行词形还原,以证明 SpaCy 没有正确执行:

text = 'personas, ideas, cosas' 
# translation: persons, ideas, things

print(lemmatizer(text))
Run Code Online (Sandbox Code Playgroud)
# Current output:
personar , ideo , coser 
# translation:
personify, ideo, sew

# The expected output should be:
persona, idea, cosa

# translation: 
person, idea, thing
Run Code Online (Sandbox Code Playgroud)

Gua*_*ero 15

与英语 lemmatizer 不同,spaCy 的西班牙语 lemmatizer 根本不使用 PoS 信息。它依赖于屈折动词和引理的查找列表(例如,ideo idear、idea idea、idea idea、ideamos idear 等)。它只会输出列表中的第一个匹配项,而不管其 PoS。

我实际上为西班牙语开发了 spaCy 新的基于规则的 lemmatizer,它考虑了 PoS 和形态信息(例如时态、性别、数字)。这些细粒度的规则使它比当前的查找词形还原器更准确。它很快就会发布!

同时,您可以使用斯坦福 CoreNLP 或 FreeLing。

  • 当你的项目重新发布时,我会等你。同时我会查找Standford CoreNLP和FreeLing(根据您的经验,您推荐哪一个?) (2认同)
  • `!pip install stanza import stanza` `stanza.download('es', package='ancora', Technologies='tokenize,mwt,pos,lemma', verbose=True)` `stNLP = stanza.Pipeline(processors=' tokenize,mwt,pos,lemma', lang='es', use_gpu=True)` `doc = stNLP('巴拉克·奥巴马 nació en Hawaii.')` `print(*[f'word: {word.text+" " }\tlemma: {word.lemma}' 用于在 doc.sentences 中发送,用于在 sent.words 中发送单词], sep='\n')` (2认同)
  • @RubialesAlberto 它将与 spacy v3 一起发布 (2认同)