python - Python:从输入中猜测性别
问题描述
所以,我使用 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
有没有更好的方法来识别性别?
解决方案
几个改进的方法:
- 而不是
if wordlist[i]==('male' or 'boy' or 'guy' or 'man')
,您可以检查if wordlist[i] in ['male', 'boy', 'guy', 'man']
。同样适用于女性。 - 没什么大不了的,但您可以创建一个as ,而不是
list
(即 ['male', 'boy', 'guy', 'man']),同样适用于女性。set
set(['male', 'boy', 'guy', 'man'])
- 不需要
else
. - 你可以用which
a += 1
代替a = a + 1
which 做同样的工作。 - 您不需要遍历
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
在列表中只有一两行。但我认为这是一个更好的开始,也更容易理解。