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

GenderAnnotator myGenderAnnotation = new GenderAnnotator();
myGenderAnnotation.annotate(annotation);


但是对于句子“安妮上学”,它无法识别安妮的性别。

应用程序的输出为:

     [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]


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

最佳答案

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


姓氏的最后一个字母。
名字的首字母。
名称的长度(字符数)。
字符会标存在(布尔值名称中是否包含字符)。


不过,我有一种直觉,即使用字符n-gram频率-可能多达字符trigram-会给您很好的结果。

08-28 06:16