在德语中,每个工作都有女性化和男性化的版本。女性化的词尾是由男性词尾加上“-in”后缀而来的。在复数形式中,这变成了“-innen”。在
示例:
| English | German
------+------------------+-----------------------
masc. | teacher doctor | Lehrer Arzt
fem. | teacher doctor | Lehrerin Ärztin
masc. | teachers doctors | Lehrer Ärzte
fem. | teachers doctors | Lehrerinnen Ärztinnen
目前,我正在使用NLTK的nltk.stem.snowball.GermanStemmer
。
它返回这些茎:
有没有办法让这个词干分析器为所有四个版本返回相同的词干,女性和男性?或者,还有其他词干分析器在做这个吗?在
最后,我添加了“-innen”和“-in”作为步骤1后缀元组中的第一个条目,如下所示:
stemmer = GermanStemmer()
stemmer._GermanStemmer__step1_suffixes = ("innen", "in") + stemmer._GermanStemmer__step1_suffixes
这样,上面所有的单词都分别以lehr
和{Lehrer/in
,那么它们的词干与动词相同。在
德国雪球茎器follows a three step process:
ern
,em
,er
,en
,es
,e
,s
后缀est
、en
、er
、st
后缀isch
,lich
,heit
,keit
,end
,ung
,ig
,ik
后缀由于不太了解德语语法,似乎
in
与步骤3后缀属于同一类(在NLTK源代码中称为“派生后缀”)。似乎在这个后缀列表中添加in
应该会迫使Snowball词干分析器删除它,但是有两个问题。在第一个问题是,从您的示例中,我看到}。这可以通过将}添加到步骤3后缀列表中来解决,但这并不能解决第二个问题。在
in
跟在en
后变成{in
和{看看^{} source ,每个步骤只删除一个后缀。因此,如果有一个以上的派生后缀(即
in
加上上面列出的任何后缀),则只有一个将被删除。在在这种情况下(我对德语的了解不多,不知道是否真的会发生这种情况),您需要手动编辑}。例如:
GermanStemmer.stem()
来添加第四个“in
删除”步骤。这也允许在复数的情况下进行更精细的控制。但老实说,在这一点上,最好是通过包装您的GermanStemmer.stem()
调用来临时删除{编辑
如果要将
^{pr2}$in
添加到一个雪球茎杆生成器步骤中,可以使用以下方法执行此操作:注意
"in"
后的逗号。没有它这个代码就不能工作。您还可以将3
替换为您希望修改的任何步骤。我不完全确定为什么它是_GermanStemmer__step3_suffixes
,而不仅仅是__step3_suffixes
,但是我已经验证了这段代码在python3.6.4和nltk3.2.5上可以工作。在不过,我不推荐这种方法,因为它不能正确地处理}、}(步骤3不检查
innen
。另外,由于每个步骤最多删除一个后缀,因此它不能正确处理Lehrerinnen
这些单词有{in
和{er
)。我认为最好的办法是复制并粘贴GermanStemmer
(可以在上面的源代码链接中找到)。使用cd47{cd4{5}和相关问题 更多 >
编程相关推荐