自然语言处理中的性别识别

qua*_*rtz 3 nlp stanford-nlp

我已经使用 stanford nlp 包编写了以下代码。

GenderAnnotator myGenderAnnotation = new GenderAnnotator();
myGenderAnnotation.annotate(annotation);
Run Code Online (Sandbox Code Playgroud)

但对于“安妮去上学”这句话,却无法识别安妮的性别。

应用程序的输出是:

     [Text=Annie CharacterOffsetBegin=0 CharacterOffsetEnd=5 PartOfSpeech=NNP Lemma=Annie NamedEntityTag=PERSON] 
     [Text=goes CharacterOffsetBegin=6 CharacterOffsetEnd=10 PartOfSpeech=VBZ Lemma=go NamedEntityTag=O] 
     [Text=to CharacterOffsetBegin=11 CharacterOffsetEnd=13 PartOfSpeech=TO Lemma=to NamedEntityTag=O] 
     [Text=school CharacterOffsetBegin=14 CharacterOffsetEnd=20 PartOfSpeech=NN Lemma=school NamedEntityTag=O] 
     [Text=. CharacterOffsetBegin=20 CharacterOffsetEnd=21 PartOfSpeech=. Lemma=. NamedEntityTag=O]
Run Code Online (Sandbox Code Playgroud)

获取性别的正确方法是什么?

Wes*_*ugh 5

如果您的命名实体识别器输出PERSON令牌,您可以使用(或构建,如果您没有)基于名字的性别分类器。例如,请参阅NLTK 库教程页面中的性别识别部分。它们使用以下功能:

  • 姓名的最后一个字母。
  • 名字的第一个字母。
  • 名称长度(字符数)。
  • 字符一元存在(布尔值是否在名称中)。

不过,我有一种预感,即使用字符 n-gram 频率——可能高达字符三元组——会给你很好的结果。