在德语中,每个职业都有男性和女性版本。女性版本通过在男性版后加上“-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
。它返回以下词干:
Lehrer -> lehr | Arzt -> arzt
Lehrerin -> lehrerin | Ärztin -> arztin
Lehrer -> lehr | Ärzte -> arzt
Lehrerinnen -> lehrerinn | Ärztinnen -> arztinn
有没有办法使这个词干提取器返回所有四个版本(男性和女性)相同的词干?或者,是否有其他可以做到这一点的词干提取器?
更新
最终我将“-innen”和“-in”添加为步骤1后缀元组中的第一个条目,如下所示:
stemmer = GermanStemmer()
stemmer._GermanStemmer__step1_suffixes = ("innen", "in") + stemmer._GermanStemmer__step1_suffixes
这样,上述所有单词都被分别转换为 lehr
和 arzt
。此外,到目前为止我尝试的所有其他“职业形式”都被正确地转换了,这意味着男性和女性形式具有相同的词干。此外,如果“职业形式”是从动词派生而来的,例如 Lehrer/in
,它们与动词具有相同的词干。
-in
更应该属于第一步(虽然不确定)。这样第二步仍然会删除男性的“职业后缀”-er
,如果有的话,就像在Lehrerin
中一样。顺便说一下,您的算法没有做到这一点。也许在去除in
和innen
之后再次进行词干提取可以解决这个问题? - sebrockmGermanStemmer.stem()
来添加第2.5步。 - acattle("innen", "in")
,看起来完美无瑕。通过将其添加到前面,en
将永远不会从innen
中删除,因为innen
首先被处理。我还没有发现任何错误。可能有一些以in
结尾但并非女性词汇的单词,但它们很少,并且这个问题也会出现在所有其他后缀中。 - sebrockmen
结尾的单词中移除它,即使它们并不是复数。 - acattle