如何在德语文本中进行词形还原?
Ho to do lemmatization on German text?
我有一篇德语文本,我想对其应用词形还原。如果无法进行词形还原,那么我也可以接受词干提取。
数据: 这是我的德语文本:
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=['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']
我尝试使用 spacy
conda install -c conda-forge spacy
python -m spacy download de_core_news_md
import spacy
from spacy.lemmatizer import Lemmatizer
lemmatizer = Lemmatizer()
[lemmatizer.lookup(word) for word in mails]
我看到以下问题。
我的数据是句子结构而不是单个单词
在我的例子中,spacy 词形还原似乎对单个单词不起作用。
你能告诉我这是怎么回事吗?
只需将其包装成一个循环并获取每个标记的引理:
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)
输出:
['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']
使用 HanoverTagger
库,您可以这样做:(有关详细信息,请参阅 here)
首先使用 !pip install HanTa
安装 HanTa
,然后
from HanTa import HanoverTagger as ht
tagger = ht.HanoverTagger('morphmodel_ger.pgz')
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:
lemma = [lemma for (word,lemma,pos) in tagger.tag_sent(mail.split())]
mails_lemma.append(' '.join(lemma))
我有一篇德语文本,我想对其应用词形还原。如果无法进行词形还原,那么我也可以接受词干提取。
数据: 这是我的德语文本:
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=['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']
我尝试使用 spacy
conda install -c conda-forge spacy
python -m spacy download de_core_news_md
import spacy
from spacy.lemmatizer import Lemmatizer
lemmatizer = Lemmatizer()
[lemmatizer.lookup(word) for word in mails]
我看到以下问题。
我的数据是句子结构而不是单个单词
在我的例子中,spacy 词形还原似乎对单个单词不起作用。
你能告诉我这是怎么回事吗?
只需将其包装成一个循环并获取每个标记的引理:
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)
输出:
['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']
使用 HanoverTagger
库,您可以这样做:(有关详细信息,请参阅 here)
首先使用 !pip install HanTa
安装 HanTa
,然后
from HanTa import HanoverTagger as ht
tagger = ht.HanoverTagger('morphmodel_ger.pgz')
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:
lemma = [lemma for (word,lemma,pos) in tagger.tag_sent(mail.split())]
mails_lemma.append(' '.join(lemma))