gpt4 book ai didi

stanford-nlp - 为什么 stanford corenlp 性别识别是不确定的?

转载 作者:行者123 更新时间:2023-12-02 01:35:54 25 4
gpt4 key购买 nike

我有以下结果,如您所见,爱德华这个名字有不同的结果(null 和 male)。这发生在几个名字上。

edward, Gender: null
james, Gender: MALE
karla, Gender: null
edward, Gender: MALE

此外,如何自定义性别词典?我想添加西类牙文和中文名称。

最佳答案

你提出了很多问题!

1.) Karla 不在默认的性别映射文件中,所以这就是它变得空的原因

2.) 如果你想制作你自己的自定义文件,它应该是这样的格式:

约翰\t男性

每行应该有一个 NAME\tGENDER 条目

GenderAnnotator 只能使用 1 个文件进行映射,因此您需要创建一个包含您要添加的名称的新文件。

默认的性别映射文件位于 stanford-corenlp-3.5.2-models.jar 文件中。

您可以通过这种方式从该 jar 中提取默认的性别映射文件:

  • mkdir tmp-stanford-models-expanded

  • cp/path/of/stanford-corenlp-3.5.2-models.jar tmp-stanford-models-expanded

  • cd tmp-stanford-models-expanded

  • jar xf stanford-corenlp-3.5.2-models.jar

  • 现在应该有 tmp-stanford-models-expanded/edu

  • 你想要的文件是 tmp-stanford-models-expanded/edu/stanford/nlp/models/gender/first_name_map_small

3.) 以这种方式构建您的管道以使用您的自定义性别词典:

Properties props = new Properties();
props.setProperty("annotators",
"tokenize, ssplit, pos, lemma, gender, ner");
props.setProperty("gender.firstnames","/path/to/your/gender_dictionary.txt");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);

4.) 尝试在你的管道中运行 gender BEFORE ner(参见我上面对注释器的排序)。如果 token 已经具有 NER 标签,则 RegexNERSequenceClassifier(这是添加性别标签的类)可能会被阻止。在我看来,首先运行性别注释器会解决问题。因此,当您构建管道时,请确保性别优先于 ner。

序列“edward james karla edward”被 NER 标记器标记为“O O PERSON PERSON”。我不完全确定为什么前两个标记的 NER 标签为“O”。我会注意到“Edward James Karla Edward”产生“PERSON PERSON PERSON PERSON”,并记住句子中位置的 NER 标记因素,因此可能在句子开头小写导致第一个标记“edward” "标记为 "O"?

如果您对此有任何疑问,请告诉我,我很乐意提供更多帮助!

长话短说

1.) Karla 被标记错误,因为那个名字不在性别词典中

2.) 您可以使用 NAME\tGENDER 创建自己的性别映射文件,确保属性“gender.firstnames”设置为您的新性别映射文件的路径。

3.) 确保性别注释器在 ner 注释器之前,这应该可以解决问题!

关于stanford-nlp - 为什么 stanford corenlp 性别识别是不确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31259708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com