使用带有德语语料库的NLTK从名词中获取性别

时间:2017-02-28 19:28:52

标签: python nlp nltk

我正在试验NTLK。我的问题是,图书馆是否可以用德语检测名词的性别。我想收到这些信息,以确定文本是否写成性别中立。浏览此处获取更多信息: https://en.wikipedia.org/wiki/Gender_neutrality_in_languages_with_grammatical_gender

基础代码对我的句子进行了分类,但我无法看到有关" Mitarbeiter" 的性别的任何信息。到目前为止我的代码:

sentence = """Der Mitarbeiter geht."""
tokens = nltk.word_tokenize(sentence)
tagged = nltk.pos_tag(tokens)
>>> tagged[0:6]

到目前为止,我还没有找到任何可以实现此目的的工具或脚本。也许这对我的任务来说也是一个更好的解决方案。

3 个答案:

答案 0 :(得分:2)

我不相信NLTK可以为德国人提供开箱即用的功能。但是,德国有免费提供的形态标记,可以为您做到这一点,例如RFTagger:

http://www.cis.uni-muenchen.de/~schmid/tools/RFTagger/

它提供如下输出:

Das     PRO.Dem.Subst.-3.Nom.Sg.Neut 
ist     VFIN.Sein.3.Sg.Pres.Ind 
ein     ART.Indef.Nom.Sg.Masc 
Testsatz    N.Reg.Nom.Sg.Masc 
.   SYM.Pun.Sent 

但是它不在Python中,因此您必须使用子进程调用它。另一个选择是获得一个带有德语性别的名词的语料库,例如Tiger语料库:

http://www.ims.uni-stuttgart.de/forschung/ressourcen/korpora/tiger.en.html

并培训NLTK以识别性别,但我希望RFTagger是一种更快/更准确的解决方案。

答案 1 :(得分:0)

Pattern旨在预测德语名词性别,准确度达到75%:

>>> from pattern.de import gender, MALE, FEMALE, NEUTRAL
>>> print gender('Katze')

FEMALE

不幸的是,它仅在Python 2.x中可用。

答案 2 :(得分:0)

我刚发现这个项目在https://github.com/aakhundov/deep-german这个问题上听起来很有前途。他们从字符级别进行预测,而这些字符水平可能在德语这样的语言中是有意义的。尽管性别不如西班牙语这样的语言容易检测到,但还是有一定规律的。

也可以进行关系分析,使代词引用您要分类的对象,然后查看它们是女性,男性还是中性。也许也可以看看它的伪造。