如何对德语文本进行词形还原?

PPa*_*ker 4 nlp lemmatization spacy

我有一个德语文本,我想对其应用词形还原。如果词形还原是不可能的,那么我也可以接受词干。

数据:这是我的德语文本:

mails=['Hallo. Ich spielte am frühen Morgen und ging dann zu einem Freund. Auf Wiedersehen', 'Guten Tag Ich mochte Bälle und will etwas kaufen. Tschüss']
Run Code Online (Sandbox Code Playgroud)

目标:应用词形还原后,它应该类似于:

mails_lemma=['Hallo. Ich spielen am früh Morgen und gehen dann zu einer Freund. Auf Wiedersehen', 'Guten Tag Ich mögen Ball und wollen etwas kaufen Tschüss']
Run Code Online (Sandbox Code Playgroud)

我尝试使用 spacy

conda install -c conda-forge spacy

python -m spacy 下载 de_core_news_md

import spacy
from spacy.lemmatizer import Lemmatizer
lemmatizer = Lemmatizer()
[lemmatizer.lookup(word) for word in mails]
Run Code Online (Sandbox Code Playgroud)

我看到以下问题。

  1. 我的数据是由句子而非单个单词构成的

  2. 在我的情况下,即使对于单个单词,spacy lemmatization 似乎也不起作用。

你能告诉我这是如何工作的吗?

cro*_*oik 11

只需将其包装成一个循环并获取每个令牌的引理:

import spacy
nlp = spacy.load('de_core_news_md')

mails=['Hallo. Ich spielte am frühen Morgen und ging dann zu einem Freund. Auf Wiedersehen', 'Guten Tag Ich mochte Bälle und will etwas kaufen. Tschüss']

mails_lemma = []

for mail in mails:
     doc = nlp(mail)
     result = ' '.join([x.lemma_ for x in doc]) 
     mails_lemma.append(result)
Run Code Online (Sandbox Code Playgroud)

输出:

['hallo . ich spielen am früh Morgen und gehen dann zu einer Freund . Auf Wiedersehen ',
 'Guten tagen ich mögen Ball und wollen etwas kaufen . Tschüss']
Run Code Online (Sandbox Code Playgroud)


Mar*_*ami 6

使用HanoverTagger库,您可以这样做:(有关更多详细信息,请参阅此处)

\n

首先HanTa使用安装!pip install HanTa,然后

\n
from HanTa import HanoverTagger as ht\n\ntagger = ht.HanoverTagger(\'morphmodel_ger.pgz\')\n\nmails=[\'Hallo. Ich spielte am fr\xc3\xbchen Morgen und ging dann zu einem Freund. Auf Wiedersehen\',\n       \'Guten Tag Ich mochte B\xc3\xa4lle und will etwas kaufen. Tsch\xc3\xbcss\']\n\nmails_lemma = []\nfor mail in mails:\n    lemma = [lemma for (word,lemma,pos) in tagger.tag_sent(mail.split())]\n    mails_lemma.append(\' \'.join(lemma))\n
Run Code Online (Sandbox Code Playgroud)\n