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)
我看到以下问题。
我的数据是由句子而非单个单词构成的
在我的情况下,即使对于单个单词,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)
使用HanoverTagger
库,您可以这样做:(有关更多详细信息,请参阅此处)
首先HanTa
使用安装!pip install HanTa
,然后
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
归档时间: |
|
查看次数: |
5440 次 |
最近记录: |