“一个”中的参数太多;如果;子句,在jupyter笔记本和python中
我的“一个”中的参数太多;如果;子句,在jupyter笔记本和python中,python,python-3.x,jupyter-notebook,Python,Python 3.x,Jupyter Notebook,我的if子句中的参数似乎太多了。是因为我在使用字符串吗 下面是代码的一个版本: gender = [] for f in full_text: if any (["He" in f, "boy" in f, "him" in f, "his" in f]): gender.append(0) elif any (["She" in f, "girl" in f, "her" in f, "hers" in f]): gender.append(1
if
子句中的参数似乎太多了。是因为我在使用字符串吗
下面是代码的一个版本:
gender = []
for f in full_text:
if any (["He" in f, "boy" in f, "him" in f, "his" in f]):
gender.append(0)
elif any (["She" in f, "girl" in f, "her" in f, "hers" in f]):
gender.append(1)
else:
gender.append(-1)
这只打印0和-1,即使在全文中有许多女性
如果我只运行一个男性和女性语句(并不是所有男性和女性都被捕获),我会得到一个“正确”的结果,包括1:
以下是全文的示例:
full_text = ["This is Phineas. He's a mystical boy. Only eve...",
"This is Tilly. She's just checking pup on you....",
"This is Archie. He is a rare Norwegian Pouncin...",
"This is Darla. She commenced a snooze mid meal...",
"Hello"]
无论She
(或任何其他女性代词)出现在哪里,都应该有1
有什么想法吗?关于什么可能导致问题的一些想法:
- 如果句子是“她和他在一起”,则输出为0。这就是你想要的吗
- “她”、“她”和“她的”包括“他”
假设代码> f>代码>是一个包含空格分隔的多个单词的字符串,你应该考虑降低文本并拆分单词:
for f in full_text:
words = f.lower().split(" ")
if any (["he" in words, "boy" in words, "him" in words, "his" in words]):
gender.append(0)
elif any (["she" in words, "girl" in words, "her" in words, "hers" in words]):
gender.append(1)
else:
gender.append(-1)
关于什么可能导致问题的一些想法:
- 如果句子是“她和他在一起”,则输出为0。这就是你想要的吗
- “她”、“她”和“她的”包括“他”
假设代码> f>代码>是一个包含空格分隔的多个单词的字符串,你应该考虑降低文本并拆分单词:
for f in full_text:
words = f.lower().split(" ")
if any (["he" in words, "boy" in words, "him" in words, "his" in words]):
gender.append(0)
elif any (["she" in words, "girl" in words, "her" in words, "hers" in words]):
gender.append(1)
else:
gender.append(-1)
对于每个f
,if语句对any([“He”在f中,“boy”在f中,“him”在f中,“his”在f中])进行第一次检查,True
,0
附加到gender
,并且代码转到下一个f
,而不执行elif
部分,因此,永远不会追加1
。我将其更改为通过将f
拆分为一个列表逐字检查。我还需要在支票上加上他/她,因为按空格分割不能很好地处理收缩
for f in full_text:
found = False
for word in f.lower().split(" "):
if word in ["he", "boy", "him", "his", "he's"]:
found = True
gender.append(0)
elif word in ["she", "girl", "her", "hers", "she's"]:
found = True
gender.append(1)
if not found:
gender.append(-1)
对于每个f
,if语句对any([“He”在f中,“boy”在f中,“him”在f中,“his”在f中])进行第一次检查,True
,0
附加到gender
,并且代码转到下一个f
,而不执行elif
部分,因此,永远不会追加1
。我将其更改为通过将f
拆分为一个列表逐字检查。我还需要在支票上加上他/她,因为按空格分割不能很好地处理收缩
for f in full_text:
found = False
for word in f.lower().split(" "):
if word in ["he", "boy", "him", "his", "he's"]:
found = True
gender.append(0)
elif word in ["she", "girl", "her", "hers", "she's"]:
found = True
gender.append(1)
if not found:
gender.append(-1)
什么是示例full_text
数据集,您希望该数据集的输出是什么?您是否有一个字符串示例,该字符串在第一个版本中应为1,但没有?我觉得还可以。你的代码看起来不错f=“他说她说”;任何([“他”在f中,“男孩”在f中,“他”在f中,“他的”在f中])都给出True
。您需要向我们发布一个输入失败的示例()。您还应该降低两个文本的对比度,以您的示例“he is English”为例,不会检测到男性。请显示我们可以运行的完整代码片段,以显示您的问题。换句话说,请阅读并遵循。什么是示例全文
数据集,您希望该数据集的输出是什么?您是否有一个字符串示例,该字符串的第一个版本应为1,但没有?我觉得还可以。你的代码看起来不错f=“他说她说”;任何([“他”在f中,“男孩”在f中,“他”在f中,“他的”在f中])都给出True
。您需要向我们发布一个输入失败的示例()。您还应该降低两个文本的对比度,以您的示例“he is English”为例,不会检测到男性。请显示我们可以运行的完整代码片段,以显示您的问题。换句话说,请阅读并遵循。这给出了7个结果,而应该有5个。我在以下数据集上运行了它:全文=[“这是菲尼亚斯。他是一个神秘的男孩。只有伊芙…”,“这是蒂莉。她只是在检查你的小狗…”,“这是阿奇。他是一个罕见的挪威庞钦…”,“这是达拉。她在吃饭的时候开始打盹…”,“你好”],我算出了他
注册了他
和她
。哎呀,它仍然给出了七个值。我根据你的回答修改了答案。它不起作用。0和1与df不相关。当应该有5个结果时,这给出了7个结果。我在以下数据集上运行了它:全文=[“这是菲尼亚斯。他是一个神秘的男孩。只有伊芙…”,“这是蒂莉。她只是在检查你的小狗…”,“这是阿奇。他是一个罕见的挪威庞钦…”,“这是达拉。她在吃饭的时候开始打盹…”,“你好”],我算出了他
注册了他
和她
。哎呀,它仍然给出了七个值。我根据你的回答修改了答案。它不起作用。0和1与df不相关。在我取出lower()
后,这起作用了!这将包括她
。为什么我们不对每个结果都用文字
?没错,应该是文字
到处都是,我的复制和粘贴都搞砸了!我编辑了我的答案,在我拿出lower()
之后,这个答案成功了!这将包括她
。为什么我们不对每个结果都用文字
?没错,应该是文字
到处都是,我的复制和粘贴都搞砸了!我编辑了我的答案