我怎样才能标记德语文本?

时间:2016-03-16 08:36:57

标签: python nlp nltk pos-tagger

我一直在做一些自然语言处理工作。

对于英文POS标记,它相当简单,因为我只需要使用内置的nltk函数。我想以类似的方式处理德语文本。

由于nltk没有德语的内置功能,我尝试过使用Stanford POSTagger:

from nltk.tag.stanford import StanfordPOSTagger
import os
import nltk
java_path = "C:/Program Files/Java/jdk1.8.0_71/bin/java.exe"
os.environ['JAVAHOME'] = java_path
sentence = "Man könnte Klöckner vorhalten, sich an ihre eigenen Appelle nicht zu halten. Doch niemand in der Union wagte das. Nicht einmal die von ihr attackierten Briefschreiber. Klöckner genießt im Moment Narrenfreiheit."
tokens = nltk.word_tokenize(sentence, 'german')
german_postagger1 = StanfordPOSTagger(r'E:/python/nlptest/models/german-hgc.tagger', r'E:/python/nlptest/stanford-postagger.jar')
gp1 = german_postagger1.tag(tokens)

完成处理需要将近7秒钟,这对我来说无法忍受。

我也尝试过模块Pattern,但它不支持Python 3,而且我使用的是Python 3.4。

有没有其他更快捷的方法来标记德语句子?

3 个答案:

答案 0 :(得分:1)

TreeTagger是一个快速易于安装,记录良好的基于​​decison树的标记器,支持多种语言(是的,它由德语构建)和python wrapper

答案 1 :(得分:1)

免责声明:无耻插头

尝试安装完整的nltk_clihttps://github.com/alvations/nltk_cli)并使用以下命令:

alvas@ubi:~/git/nltk_cli$ echo "Man könnte Klöckner vorhalten, sich an ihre eigenen Appelle nicht zu halten. Doch niemand in der Union wagte das. Nicht einmal die von ihr attackierten Briefschreiber. Klöckner genießt im Moment Narrenfreiheit." > test.in

alvas@ubi:~/git/nltk_cli$ python3 stanford.py --tool=postagger \
> --jar=$HOME/stanford-postagger/stanford-postagger.jar \
> --model=$HOME/stanford-postagger/models/german-fast.tagger \
> --input=test.in

[OUT]:

Man#PIS könnte#VMFIN Klöckner#NE vorhalten,#VVFIN sich#PRF an#APPR ihre#PPOSAT eigenen#ADJA Appelle#NN nicht#PTKNEG zu#APPR halten.#ADJA Doch#KON niemand#PIS in#APPR der#ART Union#NN wagte#VVFIN das.#ADV Nicht#PTKNEG einmal#ADV die#ART von#APPR ihr#PPOSAT attackierten#ADJA Briefschreiber.#NN Klöckner#NE genießt#VVFIN im#APPRART Moment#NN Narrenfreiheit.#NE

答案 2 :(得分:0)

基于快速规则的POS和形态标记器RDRPOSTagger支持13种语言的预训练模型,包括德语(POS和形态标记)。它是用Python(和aslo Java)实现的。

例如,对于Python实现,使用英语标记速度的示例,使用具有Core2Duo 2.4GHz的计算机,针对单线程实现计算的标记速度为8K字/秒。使用功能更强大的计算机,您可以更快地实现标记速度。