Python:根据输入猜测性别

Python: Guess gender from the input

所以,我使用 python 包“gender-guesser”根据姓名检测此人的性别。但是,我想从没有人名的句子中识别性别。

假设我有下面这句话:

“在你之前有一个 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

有没有更好的辨别性别的方法?

几个改进方法:

  1. 而不是if wordlist[i]==('male' or 'boy' or 'guy' or 'man'),你可以检查 if wordlist[i] in ['male', 'boy', 'guy', 'man']。同样适用于女性。
  2. 没什么大不了的,但不是 list(即 ['male'、'boy'、'guy'、'man']),您可以创建a setset(['male', 'boy', 'guy', 'man']),女性相同。
  3. 不需要else
  4. 您可以使用 a += 1 而不是 a = a + 1 来完成同样的工作。
  5. 您不需要遍历 range(len(wordlist))。你可以遍历 word_list

因此,您的代码可以按如下方式稍微清理一下:

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

也有不同的方法可以做到这一点,例如列表中的 counting males + boys + guy + man 就是一两行。但我认为这是一个更好的开始,也更容易理解。