Python:从输入中猜测性别

Python:从输入中猜测性别,python,nlp,stanford-nlp,Python,Nlp,Stanford Nlp,因此,我使用python包“性别猜测器”根据姓名检测此人的性别。但是,我想从一个没有人名的句子中识别性别 假设我有下面的句子: “在你之前,有一个14岁的男性,他起床后出现了某种切分音。” 这句话只是一个例子,只有男性这个词,没有人的名字。但是,输入可以包含其他单词,如男孩、女孩、女士、变性人、男孩、女人、男人、未知等等 这是我目前正在尝试做的,但可能不符合我想要的最终结果: #original string wordlist=tokens # using split() function #

因此,我使用python包“性别猜测器”根据姓名检测此人的性别。但是,我想从一个没有人名的句子中识别性别

假设我有下面的句子:

“在你之前,有一个14岁的男性,他起床后出现了某种切分音。”

这句话只是一个例子,只有男性这个词,没有人的名字。但是,输入可以包含其他单词,如男孩、女孩、女士、变性人、男孩、女人、男人、未知等等

这是我目前正在尝试做的,但可能不符合我想要的最终结果:

#original string
wordlist=tokens
# using split() function

# total no of words
male_count=0
female_count=0

for i in range(len(wordlist)):
  if wordlist[i]==('male' or 'boy' or 'guy' or 'man'):
    print(i)
    male_count= male_count+1
  
  else: 
    if wordlist[i]==('female' or 'girl' or 'lady' or 'woman'):
      female_count= female_count+1
有没有更好的方法来确定性别?

有几种改进方法:

  • 如果单词列表[i]==('male'或'boy'或'guy'或'man'),您可以检查
    如果单词列表[i]在['male'、'boy'、'guy'、'man']中
    。女性也是如此
  • 这没什么大不了的,但是你可以创建一个
    集合作为
    集合(['male','boy','guy','man'])
    ,而不是
    列表(即['male','boy','guy','man'])
    ,对于女性也是如此
  • 不需要
    其他
  • 您可以使用
    a+=1
    代替执行相同任务的
    a=a+1
  • 您不需要迭代
    范围(len(wordlist))
    。您只需迭代
    word\u列表
  • 因此,您的代码可以进行如下清理:

    male_count = 0
    female_count = 0
    
    male_categories = set(['male', 'boy', 'guy', 'man'])
    female_categories = set(['female', 'girl', 'lady', 'woman'])
    for word in wordlist:
        if word in male_categories:
            male_count += 1
        if word in female_categories:
            female_count += 1
    

    也有不同的方法可以做到这一点,比如在一行或两行的列表中计算男性+男孩+男性+男性
    。但我认为这是一个更好的开始,更容易理解。

    太好了。所以,无论我们使用哪种方式,我都必须添加各种可能的男性和女性同义词。是的,基本上,你只需要添加更多这样的词,比如每个词的复数版本,等等