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
有没有更好的辨别性别的方法?
几个改进方法:
- 而不是
if wordlist[i]==('male' or 'boy' or 'guy' or 'man')
,你可以检查
if wordlist[i] in ['male', 'boy', 'guy', 'man']
。同样适用于女性。
- 没什么大不了的,但不是
list
(即 ['male'、'boy'、'guy'、'man']),您可以创建a set
与 set(['male', 'boy', 'guy', 'man'])
,女性相同。
- 不需要
else
。
- 您可以使用
a += 1
而不是 a = a + 1
来完成同样的工作。
- 您不需要遍历
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
就是一两行。但我认为这是一个更好的开始,也更容易理解。
所以,我使用 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']
。同样适用于女性。 - 没什么大不了的,但不是
list
(即 ['male'、'boy'、'guy'、'man']),您可以创建aset
与set(['male', 'boy', 'guy', 'man'])
,女性相同。 - 不需要
else
。 - 您可以使用
a += 1
而不是a = a + 1
来完成同样的工作。 - 您不需要遍历
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
就是一两行。但我认为这是一个更好的开始,也更容易理解。